
    ge                        d dl Z 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d	 Zd
 Zg Ze                                D ]Zg Z ee          rV e            rej        j        gZn> e            r' ej        e          j        dk    rej        j        gZnej        j        gZe                     ej         eeej!                              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        '                    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    Flib/python3.11/site-packages/scipy/sparse/linalg/tests/test_propack.pyis_complex_typer      s    8E??3&&    c                  "    t           j        dk    S )Nl        )sysmaxsize r   r   is_32bitr      s    ;%r   c                      dt           j        v S )Nwin32)r   platformr   r   r   
is_windowsr      s    cl""r      )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-   2   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u2r1   r2   As        r   assert_orthogonalr<   ?   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   r0   )TOLSr-   r
   asarraylinalgsvdr   upperrollr   r<   r6   )r&   r'   r%   r   r@   rB   rA   r(   rC   r,   Mspr9   sigma1vt1r:   sigma2vt2_s                     r   
check_svdprQ   E   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)TFrA   )LMrD   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                      rWt          |          rHd}t          t          |          5  t          ||| ||||           d d d            d S # 1 swxY w Y   d S t          ||| ||||           d S )Nr   )r         rD   z#`which`='SM' requires irl_mode=True)matchz1PROPACK complex-valued SVD methods not available )	r
   r    seedassert_raises
ValueErrorrQ   r   r   	TypeError)rR   r   rS   rA   r&   r'   r@   messages           r   	test_svdpr^   ]   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 :: 	9/%00 	9IGy888 = =1auae<<<= = = = = = = = = = = = = = = = = = q!T5!S%88888s$   A))A-0A-+CCC)FTx   c                 N   t           j        dt           j        dt           j        dt           j        di|          }t
          j                            t                    }d}t
          j        	                    ||          }t          j
        |d          }t          |           r.|d                                                             |           }n-|d                                                             |           }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   )rB   random_state   r/   )r2   )r
   float32float64	complex64
complex128ospathdirname__file__joinloadr   itemr#   r   r   r7   r8   r5   r6   rG   rH   todensediagnorm)r   rS   r2   path_prefixrelative_pathfilenamedatar;   r@   usvhrP   sv_checku3s3vh3A3recons                      r   test_examplesr   q   sa    	
F

D
d
t	
 D '//(++K ,Mw||K77H78$///Du 0""$$++E22N!!((//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:..======r   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   r   r   r/   r   T)r   kmaxrB   )r
   r    rY   minpytestr   r[   r   )r   r   r&   r@   r;   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   rD   T)r   rA   rB       )r
   r    rY   r#   doubler   r   )
r&   r@   r;   r9   s1rM   rP   r:   s2rO   s
             r   test_shifts_accuracyr      s     INN1DAq
	!Q  ''	22A1aD4HHHNBC1a$FFFNBC Br   )r=   )/rk   r   r   numpyr
   numpy.testingr   r   rZ   scipy.sparse.linalg._svdpr   scipy.sparser   r   rg   rh   ri   rj   rE   r   r   r   _dtypeskeysdtype_flavourr   markskipr   itemsizeslowappendparam__name__tuplefloatr-   r<   rQ   parametrizearrayr^   timeoutr   r   xfailr   r   r   r   <module>r      sw   				  



     ) ) ) ) ) ) * * * * * * + + + + + + / / / / / / / /
 JJL$M4	' ' '     # # # YY[[ < <ME}%% '8:: 	'[%&EEZ\\ 	'hbh}55>"DD[%&EE[%&ENN<6<U#0#9; ; ; < < < <
%..  q
$ 
$ 
$ 
$O O O8 8 8 80 "(J
!CDD'**..,//9 9 0/ /. +* ED9  '**..S-> ->  /. +*->` #<=='"1"+..< < /. >=<      r   