
    _Mh                     N   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                                D ]GZg Z ee          rej        j        gZe                     ej        eeej        	                     H ee          Zed fd
Zd ZddZ ej        !                    dej"        eef          ej        !                    de          ej        !                    dd          ej        !                    dd          d                                                 Z#ej        j$        ej        !                    de          ej        !                    dd          d                                     Z%ej        !                    dd          ej        !                    dedd                   d                         Z&ej        j        ej        '                                d                         Z(dS )    N)assert_allclose)raises)_svdp)	csr_array	csc_arrayg-C6?g:0yE>c                 <    t          j        |           j        dk    S )Nc)npdtypekind)r   s    f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/sparse/linalg/tests/test_propack.pyis_complex_typer      s    8E??3&&    )marksidc                    t           j                            |          }t          |          rMdd|                    ||          z  z   dz
  d|                    ||          z  z                       |          }n/dd|                    ||          z  z                       |          }d||j        d|z  dz
  k    <    | |fi |S )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 52A&&#((1a..()*0&-- 	
 "sxx1~~%%--e44AafrAvz;q##F###r   c                     t          t          j        |                                 j        |                    }t          |t          j        | j        d         |j        d                   ||           dS )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   /   sZ    BF27799;##$$AArvbhqk28A;77dNNNNNNr   皙?c           
      p   t           |         }t          t          j        | |||          }	 ||	          }
t          j                            |	d          \  }}}t          |
||||t          j                            d                    \  }}}}|	                                dk    rAt          j
        ||d          }t          j
        ||d          }t          j
        ||          }t          |d |         |||           t          ||||           t          |j        |j        ||           d S )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   r6   r8   r7   r   r9   r"   Mspr/   sigma1vt1r0   sigma2vt2_s                     r   
check_svdprH   5   s0   
u+C
Aq!U33A
+a..CimmAUm;;OBsaux#&BI,A,A!,D,DF F FBQ {{}}WRAgc1a  ## F2A2JSs;;;; b"3S1111ceSU3777777r   ctorr   irl)TFr7   )LMr:   c           
         t           j                            d           d\  }}}|dk    rJ|sHd}t          t          |          5  t          ||| ||||           d d d            d S # 1 swxY w Y   d S t          ||| ||||           d S )Nr   )r         r:   z#`which`='SM' requires irl_mode=True)match)r
   r   seedassert_raises
ValueErrorrH   )rI   r   rJ   r7   r   r   r6   messages           r   	test_svdprT   M   s    
 INN1GAq!}}S}7:W555 	9 	9q!T5!S%888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	1auae44444s   A))A-0A-)FTc                    t           j        dt           j        dt           j        dt           j        di|          }t
          j                            t                    }d}t
          j        	                    ||          }t          j
        |d          5 }t          |           r.|d                                                             |           }n-|d                                                             |           }d d d            n# 1 swxY w Y   d	}t          |||t           j                            d
                    \  }	}
}}t          |           rdn|}|	d d d |f         }	|d |d d f         }|
d |         }
t#          t          j        |	j        d                   |	                                j        |	z  |           t#          t          j        |j        d
                   ||                                j        z  |           t           j                            |                                          \  }}}|d d d |f         }|d |         }|d |d d f         }|t          j        |          z  |z  }|	t          j        |
          z  |z  }t#          t           j                            ||z
            d
|           d S )NgC8
!?g&.>gMbP?zpropack_test_data.npzT)allow_pickle	A_complexA_real   r   )r8   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   rJ   r(   path_prefixrelative_pathfilenamedatar1   r6   usvhrG   sv_checku3s3vh3A3recons                      r   test_examplesrv   \   s    	
F

D
d
t	
 D '//(++K ,Mw||K77H		-	-	- 45!! 	4[!&&((//66AAX##%%,,U33A	4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 	A1s	0E0Ea0H0HIIIKAq"a %U++2rrH	!!!YhY,A	IXIqqqL	B	)8)A BF171:&&
QTBBBBBF28A;''bggiik)9EEEE )--		,,KBC	AAAyyL	B	IXIB
ixil
C	bgbkk	C	B

NREBINN2:..======s   A+DDDshifts)Nir   r%   r   F      c           	         t           j                            d          }d\  }}|                    ||f          }| l| dk     s|t          |dz
  | z
  |          k    rLt	          j        t                    5  t          ||| d|z  d|           d d d            d S # 1 swxY w Y   d S t          ||| d|z  d|           d S )Nr   rx   r   r%   r   T)rw   kmaxr8   r!   )r
   r   r?   minpytestr   rR   r   )rw   r   r!   r   r6   r1   s         r   test_shiftsr      s/    )


"
"CDAq

Aq6A

C!F
A4F4F0F0F]:&& 	I 	I!QvAaC$CHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	a6!dDDDDDDs   7BB!$B!c                  >   t           j                            d          } d\  }}|                     ||f                              t           j                  }t          ||d dd|           \  }}}}t          ||ddd|           \  }}	}
}t          ||	           d S )Nr   r{   r:   T)rw   r7   r8   r!       )r
   r   r?   r   r\   r   r   )r!   r   r6   r1   r/   s1rD   rG   r0   s2rF   s              r   test_shifts_accuracyr      s     )


"
"CDAq

Aq6!!"*--A1aD4SQQQNBC1a$3OOONBC Br   )r3   ))r_   r~   numpyr
   numpy.testingr   r   rQ   scipy.sparse.linalg._svdpr   scipy.sparser   r   r[   r\   r]   r^   r;   r   _dtypeskeysdtype_flavourr   markslowappendparam__name__tuplefloatr#   r2   rH   parametrizearrayrT   xslowrv   r   xfailr    r   r   <module>r      s   				      ) ) ) ) ) ) * * * * * * + + + + + + - - - - - - - -
 JJL$M4	' ' ' YY[[ < <ME}%% #!"NN<6<U#0#9; ; ; < < < <
%..  q
$ 
$ 
$ 
$O O O8 8 8 80 "(Iy!ABB'**..,//5 5 0/ /. +* CB5 '**..,> ,> /. +* ,>^ #<=='"1"+..E E /. >=E      r   