
    Ug                        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          ej        %                    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_matrix
csc_matrixg-C6?g:0yE>c                 <    t          j        |           j        dk    S )Nc)npdtypekind)r   s    e/var/www/surfInsights/venv3-11/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 matrix
   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                 4   t           |         }t          t          j        | |||          }	 ||	          }
t          j                            |	d          \  }}}t          |
||||          \  }}}}|                                dk    rAt          j        ||d          }t          j        ||d          }t          j        ||          }t          |d |         |||           t          ||||           t          |j        |j        ||           d S )NF)full_matrices)kwhichirl_modetolSMr%   r   r&   )TOLSr#   r
   asarraylinalgsvdr   upperrollr   r2   r,   )r   r   r   r   r6   r8   r7   r   r9   r"   Mspr/   sigma1vt1r0   sigma2vt2_s                     r   
check_svdprG   5   s   
u+C
Aq!U33A
+a..CimmAUm;;OBsaux#&( ( (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
ValueErrorrG   )rH   r   rI   r7   r   r   r6   messages           r   	test_svdprS   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-)FTx   c                 ~   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          |||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   random_state   r%   )r(   )r
   float32float64	complex64
complex128ospathdirname__file__joinloadr   itemr   r   r   r-   r.   r+   r,   r=   r>   todensediagnorm)r   rI   r(   path_prefixrelative_pathfilenamedatar1   r6   usvhrF   sv_checku3s3vh3A3recons                      r   test_examplesrw   \   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;;;KAq"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\  }}t           j                            ||f          }| k| dk     s|t          |dz
  | z
  |          k    rKt	          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   ry   r   r%   r   T)rx   kmaxr8   )r
   r   rO   minpytestr   rQ   r   )rx   r   r   r6   r1   s        r   test_shiftsr      s.    INN1DAq
	!Q  A

C!F
A4F4F0F0F]:&& 	@ 	@!QvAaC$????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	a6!d;;;;;;s   B&&B*-B*c                  N   t           j                            d           d\  } }t           j                            | | f                              t           j                  }t          ||d dd          \  }}}}t          ||ddd          \  }}}	}t          ||           d S )Nr   r|   r:   T)rx   r7   r8       )r
   r   rO   r   r]   r   r   )
r   r6   r1   r/   s1rC   rF   r0   s2rE   s
             r   test_shifts_accuracyr      s     INN1DAq
	!Q  ''
33A1aD4HHHNBC1a$FFFNBC Br   )r3   )*r`   r   numpyr
   numpy.testingr   r   rP   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   rG   parametrizearrayrS   xslowtimeoutrw   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 "(J
!CDD'**..,//5 5 0/ /. +* ED5 '**..S,> ,>  /. +* ,>^ #<=='"1"+..< < /. >=<      r   