
    bi                     
   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZ ej                  dej                  dej                  dej                   diZd Zg Zej)                         D ]Q  Zg Z ee      rej.                  j0                  gZej3                   ej4                  eeej6                  	             S  ee      Zdd
Zej.                  j=                  dej>                  eef      ej.                  j=                  dej                  ej                  ej                  ej                   g      ej.                  j=                  dd      ej.                  j=                  dd      d                             Z ej.                  jB                  ej.                  j=                  de      ej.                  j=                  dd      d                      Z"ej.                  j=                  dd      ej.                  j=                  dedd       d               Z#ej.                  j0                  ej.                  jI                         d               Z%ej.                  j=                  dddg      ej.                  j=                  dej                  ej                  f      d               Z&ej.                  j=                  dej                  ej                  ej                  ej                   f      d        Z'y)    N)assert_allclose)raises)_svdp)	csr_array	csc_arrayg-C6?g:0yE>c                 F    t        j                  |       j                  dk(  S )Nc)npdtypekindr   s    a/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/sparse/linalg/tests/test_propack.pyis_complex_typer      s    88E?3&&    )marksidc	                 T   t         |   }	|t        j                  j                  d      }t        j                  j                  d      }
t	        |      rEdd|
j                  | |g      z  z   dz
  d|
j                  | |g      z  z   j                  |      }n)dd|
j                  | |g      z  z   j                  |      }d||j                  d|z  dz
  kD  <    ||      }t        j                  j                  |d	      \  }}}t        |||||	|
      \  }}}}|j                         dk(  rDt        j                  ||d      }t        j                  ||d      }t        j                  ||      }t        |d | ||	|	       t        t        j                  |j                         j                   |z        t        j"                  | |      |	|	       t        t        j                  |j                         |j                   z        t        j"                  | |      |	|	       y )Nr   
   sizey              @y              $@   Ffull_matrices)kwhichirl_modetolrngSM   )rtolatol)TOLSr
   randomdefault_rngr   uniformastypereallinalgsvdr   upperrollr   absconjTeye)nmconstructorr   r   r   r   fr   r   rng2MMspu1sigma1vt1u2sigma2vt2_s                       r   
check_svdpr@   %   s   
u+C
{ii##A& 99  #Du21a&111$,,QF,3345;VE] 	
 "t||!Q|00088?AaffrAvz
a.CiimmAUm;OBsaeh#&C1BQ {{}WWRAggc1a # F2AJSs; BFF2779;;+,bffQl3OBFF388:-.q!3SQr   ctorr   irl)TFr   )LMr    c                     t         j                  j                  d      }d\  }}}|dk(  r2|s0d}t        t        |      5  t        ||| |||||       d d d        y t        ||| |||||       y # 1 sw Y   y xY w)Nl   WV{1 )r         r    z#`which`='SM' requires irl_mode=True)match)r   )r
   r%   r&   assert_raises
ValueErrorr@   )	rA   r   rB   r   r   r2   r3   r   messages	            r   	test_svdprK   G   s     ))

 0
1CGAq!}S7:W5 	Bq!T5!S%SA	B 	B 	1auae=	B 	Bs    A11A:)FTc                 P   t         j                  dt         j                  dt         j                  dt         j                  di|    }t
        j                  j                  t              }d}t
        j                  j                  ||      }t        j                  |d      5 }t        |       r#|d   j                         j                  |       }n"|d   j                         j                  |       }d d d        d	}t        ||t         j                  j!                  d
            \  }	}
}}t        |       rdn|}|	d d d |f   }	|d |d d f   }|
d | }
t#        t        j$                  |	j&                  d         |	j)                         j*                  |	z  |       t#        t        j$                  |j&                  d
         ||j)                         j*                  z  |       t         j,                  j/                  |j1                               \  }}}|d d d |f   }|d | }|d |d d f   }|t        j2                  |      z  |z  }|	t        j2                  |
      z  |z  }t#        t         j,                  j5                  ||z
        d
|       y # 1 sw Y   xY w)NgC8
!?g&.>gMbP?zpropack_test_data.npzT)allow_pickle	A_complexA_real   r   )r   r      r!   r#   )r
   float32float64	complex64
complex128ospathdirname__file__joinloadr   itemr(   r   r%   r&   r   r1   shaper/   r0   r*   r+   todensediagnorm)r   rB   r#   path_prefixrelative_pathfilenamedataAr   usvhr?   sv_checku3s3vh3A3recons                      r   test_examplesrp   W   s.    	

F


D
d
t	
 D ''//(+K ,Mww||K7H		- 45![!&&(//6AX##%,,U3A	4 	A1s		0E0Ea0HIKAq"a %U+rH	!YhY,A	IXIqL	B	)8A BFF1771:&

QTBBFF288A;'bggikk)9E ))--		,KBC	AyyL	B	IXB
ixil
C	bggbk	C	B
NREBIINN2:.=94 4s   "AJJ%shifts)Nir   r!   r   F      c           	      X   t         j                  j                  d      }d\  }}|j                  ||f      }| Q| dk  s|t        |dz
  | z
  |      kD  r7t	        j
                  t              5  t        ||| d|z  d|       d d d        y t        ||| d|z  d|       y # 1 sw Y   y xY w)Nr   rr   r   r!   r   T)rq   kmaxr   r   )r
   r%   r&   minpytestr   rI   r   )rq   r   r   r2   r   rf   s         r   test_shiftsry      s     ))


"CDAq

Aq6A
C!F
A4F0F]]:& 	I!QvAaC$CH	I 	I 	a6!dD	I 	Is   -B  B)c                     t         j                  j                  d      } d\  }}| j                  ||f      j                  t         j                        }t        ||d dd|       \  }}}}t        ||ddd|       \  }}	}
}t        ||	       y )Nr   ru   r    T)rq   r   r   r       )r
   r%   r&   r(   rT   r   r   )r   r2   r   rf   r9   s1r;   r?   r<   s2r>   s              r   test_shifts_accuracyr~      s     ))


"CDAq

Aq6!!"**-A1aD4SQNBC1a$3ONBC Br   r   FTc                    t         j                  j                  d      }d\  }}t        j                  t	        |      D cg c]$  }t	        |      D cg c]  }d||z   dz   z   c}& c}}|      }t         j
                  j                  |d      \  }}	}
t        |dd| |	      \  }}}}t        ||	t        |   
       t        t        j                  |j                  d         |j                  |z  t        |   
       t        t        j                  |j                  d         ||j                  z  t        |   
       t        t        j                  |j                  |z        t        j                  |      t        |   
       t        t        j                  |
|j                  z        t        j                  |      t        |   
       y c c}w c c}}w )Nl   mac{1 )rP      r!   r   Fr   r   rC   r   r   r   r   rR   r   )r
   r%   r&   arrayranger*   r+   r   r   r$   r1   r^   r0   r.   )r   r   r   r3   r2   ijrf   uussvvrg   rh   vtr?   s                  r   test_thin_hilbertr      sU    ))

 0
1CDAq 	uQxH!E!H5q1A	?5HPUVAq6JBBQdX3GKAq"aArU, BFF1771:&ad5kBBFF288A;'bddeE BFF244!8$bffQid5kBBFF29%rvvaytE{C 6Hs   G
G&G
G
c                 j   t         j                  j                  d      }d\  }}|j                  ||f      j	                  |       }| t         j
                  t         j                  fv r/| | d      |j                  ||f      j	                  |       z  z  }t         j                  j                  |d      \  }}}t        |ddd	|
      \  }}	}
}t        |	|t        |           t        t        j                  |j                  d         |j                         j                  |z  t        |           t        t        j                  |
j                  d         |
|
j                         j                  z  t        |           t        t        j                   |j                         j                  |z        t        j                  |      t        |           t        t        j                   ||
j                         j                  z        t        j                  |      t        |           y )Nl   d={1 )rF   d   r   y              ?Fr   rF   rC   Tr   rR   r!   r   )r
   r%   r&   r'   r(   rU   rV   r*   r+   r   r   r$   r1   r^   r/   r0   r.   )r   r   r3   r2   rf   r   r   r   rg   rh   r   r?   s               r   test_fat_randomr      s   
))

 0
1CDAq!Q ''.Ar}}--	U2Y1a&188???q6JBBQdTsCKAq"aArU, BFF1771:&

QT%[IBFF288A;'bggikk)9UL BFF2779;;?+RVVAYT%[IBFF2	+,bffQid5kJr   )g?N)(rW   rx   numpyr
   numpy.testingr   r   rH   scipy.sparse.linalg._svdpr   scipy.sparser   r   rS   rT   rU   rV   r$   r   _dtypeskeysdtype_flavourr   markslowappendparam__name__tupler@   parametrizer   rK   xslowrp   ry   xfailr~   r   r    r   r   <module>r      s   	   ) * + -
 JJJJLL$MM4	' YY[ <ME}%!!"NN<6<<U#0#9#9; <	< .RD "((Iy!AB2::rzz#%<<#@ A.,/> 0 /A C
> '*.,> / + ,>^ #<='"1+.E / >E    eT]32::rzz":;D < 4D& 2::rzz2<<"WXK YKr   