
    (ph              	          S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
JrJr  \R                  S\R                  S\R                  S\R                   S0rS r/ r\R)                  5        HT  r/ r\" \5      (       a  \R.                  R0                  /r\R3                  \R4                  " \\\R6                  S	95        MV     \" \5      r\S 4S
 jrS rSS jr \R.                  RC                  S\RD                  \\45      \R.                  RC                  S\5      \R.                  RC                  SS5      \R.                  RC                  SS5      S 5       5       5       5       r#\R.                  RH                  \R.                  RC                  S\5      \R.                  RC                  SS5      S 5       5       5       r%\R.                  RC                  SS5      \R.                  RC                  S\SS 5      S 5       5       r&\R.                  R0                  \R.                  RO                  5       S 5       5       r(g)    N)assert_allclose)raises)_svdp)	csr_array	csc_arrayg-C6?g:0yE>c                 H    [         R                  " U 5      R                  S:H  $ )Nc)npdtypekind)r   s    Y/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/linalg/tests/test_propack.pyis_complex_typer      s    88E?3&&    )marksidc                 j   [         R                  R                  U5      n[        U5      (       a?  SSUR	                  X5      -  -   S-
  SUR	                  X5      -  -   R                  U5      nO&SSUR	                  X5      -  -   R                  U5      nSXR                  SU-  S-
  :  '   U " U40 UD6$ )zGenerate a random sparse array
   y              @y              $@r      )r
   randomRandomStater   randastypereal)	constructornmfr   rseedkwargsrngMs	            r   generate_matrixr#   "   s     ))


&Cu2&&#((1.()*0&- 	
 "sxx~%%--e4AffrAvzq#F##r   c                     [        [        R                  " U R                  5       R                  U5      5      n[        U[        R                  " U R                  S   UR                  S   5      X#S9  g)z7Check that the first k rows of u1 and u2 are orthogonal   rtolatolN)absr
   dotconjTr   eyeshape)u1u2r'   r(   As        r   assert_orthogonalr2   /   sH    BFF2779;;#$AArvvbhhqk288A;7dNr   c           
         [         U   n[        [        R                  XXs5      n	U" U	5      n
[        R                  R                  U	SS9u  pn[        XXeU[        R                  R                  S5      S9u  pnnUR                  5       S:X  aD  [        R                  " XS5      n[        R                  " XS5      n[        R                  " X5      n[        US U XUS9  [        XXS9  [        UR                  UR                  XS9  g )NF)full_matricesr   )kwhichirl_modetolr!   SMr%   r&   )TOLSr#   r
   asarraylinalgsvdr   r   default_rngupperrollr   r2   r,   )r   r   r   r   r5   r7   r6   r   r8   r"   Mspr/   sigma1vt1r0   sigma2vt2_s                     r   
check_svdprG   5   s    
u+C

A!3A
a.CiimmAUm;OBsu#&BII,A,A!,DFBQ {{}WWRAggca # F2AJs; b31ceeSUU7r   ctorr   irl)TFr6   )LMr9   c           
          [         R                  R                  S5        Su  pEnUS:X  a/  U(       d(  Sn[        [        US9   [        XEXXbU5        S S S 5        g [        XEXXbU5        g ! , (       d  f       g = f)Nr   )r         r9   z#`which`='SM' requires irl_mode=True)match)r
   r   seedassert_raises
ValueErrorrG   )rH   r   rI   r6   r   r   r5   messages           r   	test_svdprS   M   sd    
 IINN1GA!}S7:W5qT!%8 65 	1ae4 65s   A))
A7)FTc                 N   [         R                  S[         R                  S[         R                  S[         R                  S0U    n[
        R                  R                  [        5      nSn[
        R                  R                  X45      n[         R                  " USS9 n[        U 5      (       a#  US   R                  5       R                  U 5      nO"US   R                  5       R                  U 5      nS S S 5        S	n[        WX[         R                  R!                  S
5      S9u  pp[        U 5      (       a  SOUnU	S S 2S U24   n	US U2S S 24   nU
S U n
[#        [         R$                  " U	R&                  S   5      U	R)                  5       R*                  U	-  US9  [#        [         R$                  " UR&                  S
   5      XR)                  5       R*                  -  US9  [         R,                  R/                  UR1                  5       5      u  pnUS S 2S U24   nUS U nUS U2S S 24   nU[         R2                  " U5      -  U-  nU	[         R2                  " U
5      -  U-  n[#        [         R,                  R5                  UU-
  5      S
US9  g ! , (       d  f       GN= f)NgC8
!?g&.>gMbP?zpropack_test_data.npzT)allow_pickle	A_complexA_real   r   )r7   r!      r%   )r(   )r
   float32float64	complex64
complex128ospathdirname__file__joinloadr   itemr   r   r   r>   r   r-   r.   r+   r,   r<   r=   todensediagnorm)r   rI   r(   path_prefixrelative_pathfilenamedatar1   r5   usvhrF   sv_checku3s3vh3A3recons                      r   test_examplesru   \   s!    	

F


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

QTBBFF288A;'ggikk)9E ))--		,KBC	AyyL	B	IXB
ixil
C	bggbk	C	B
NREBIINN2:.=9 
.	-s   AJ
J$shifts)Nir   r%   r   F      c           
      V   [         R                  R                  S5      nSu  p4UR                  X345      nU bP  U S:  d  U[        US-
  U -
  U5      :  a4  [        R
                  " [        5         [        XTU SU-  SUS9  S S S 5        g [        XTU SU-  SUS9  g ! , (       d  f       g = f)Nr   rw   r   r%   r   T)rv   kmaxr7   r!   )r
   r   r>   minpytestr   rQ   r   )rv   r   r!   r   r5   r1   s         r   test_shiftsr~      s     ))


"CDA

A6A
C!F
A4F0F]]:&!vAaC$CH '& 	a6!dD '&s   /B
B(c            	          [         R                  R                  S5      n Su  pU R                  X45      R                  [         R                  5      n[        X2S SSU S9u  pEpg[        X2SSSU S9u  pp[        XY5        g )Nr   rz   r9   T)rv   r6   r7   r!       )r
   r   r>   r   r[   r   r   )r!   r   r5   r1   r/   s1rC   rF   r0   s2rE   s              r   test_shifts_accuracyr      st     ))


"CDA

A6!!"**-A1D4SQNBC1$3ONBC Br   )g?))r^   r}   numpyr
   numpy.testingr   r   rP   scipy.sparse.linalg._svdpr   scipy.sparser   r   rZ   r[   r\   r]   r:   r   _dtypeskeysdtype_flavourr   markslowappendparam__name__tuplefloatr#   r2   rG   parametrizearrayrS   xslowru   r~   xfailr    r   r   <module>r      s   	   ) * + -
 JJJJLL$MM4	' YY[ME}%%!!"NN6<<U#0#9#9; <	 ! .  q
$O80 "((Iy!AB'*.,/5 0 / + C5 '*.,> / + ,>^ #<='"1+.E / >E   r   