
    (ph!                        S SK Js  Jr  S SKrS SKJrJrJ	r	  S SK
Jr  S SK Jr  S SKJrJrJrJr  S SKrS SKJr  \R*                  " 5       S 5       r\R*                  " 5       S 5       r\R*                  " \R0                  \R2                  /S	9S
 5       r\R*                  " 5       S 5       r\R*                  " 5       S 5       r " S S5      rg)    N)hilbertsvdvalsnormaslinearoperator)interp_decomp)assert_assert_allcloseassert_equalassert_array_equal)raisesc               #      #    Sv   g 7f)N-q= r       X/var/www/html/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_interpolative.pyepsr   )   s
     
Ks   c               #   R   #    [         R                  R                  S5      n U v   g 7f)Nl   ,b30k0 )nprandomdefault_rngrngs    r   r   r   .   s     
))

 0
1C
Is   %')paramsc              #   \   #    Sn[        U5      R                  U R                  5      v   g 7f)Ni,  )r   astypeparam)requestns     r   Ar    4   s%      	A
!*

GMM
**s   *,c              #   &   #    [        U 5      v   g 7f)Nr   )r    s    r   Lr"   <   s     
1
s   c                     [         R                  R                  U SS9n [         R                  " X!:  5      S   S   nU$ ! [         a    U R
                  S   n U$ f = f)NF)
compute_uvr   )r   linalgsvdnonzero
IndexErrorshape)r    r   Sranks       r   r+   r+   A   sa    
		aE*Azz!'"1%a( K  wwqzKs   A   AAc                      \ rS rSr\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S 5       r\R
                  R                  SS/5      S 5       r	\R
                  R                  S/ SQ5      S 5       r
\R
                  R                  S/ SQ5      S	 5       rS
 rS rS rS rS rS rS rS r\R
                  R                  S\R*                  \R,                  /5      \R
                  R                  SSS/5      \R
                  R                  SSS/5      S 5       5       5       rS rSrg)TestInterpolativeDecompositionK   zrand,lin_op)FF)TF)TTc                     U(       d  UOUn[         R                  " XsXFS9u  pn
[         R                  " US S 2U	S U 4   X5      n[        XUSS9  g N)randr   :0yE>rtolatol
pymatrixidr   reconstruct_matrix_from_idr
   )selfr    r"   r   r2   lin_opr   A_or_LkidxprojBs               r   test_real_id_fixed_precision;TestInterpolativeDecomposition.test_real_id_fixed_precisionM   sO    
 !a!//$P11!As2AwJ-K3U3r   c                     UnU(       d  UOUn	[         R                  " XXWS9u  p[         R                  " US S 2U
S U 4   X5      n[        XUSS9  g r1   r7   )r:   r    r"   r   r+   r2   r;   r   r=   r<   r>   r?   r@   s                r   test_real_id_fixed_rank6TestInterpolativeDecomposition.test_real_id_fixed_rankX   sR      a,,VTK	11!As2AwJ-K3U3r   r/   c                     UnU(       d  UOUn	[         R                  " XXWS9u  p[         R                  " X5      n[         R                  " XU
5      n[	        XS S 2U
S U 4   USS9  [	        X-  XSS9  g r1   )r8   r   reconstruct_interp_matrixreconstruct_skel_matrixr
   )r:   r    r"   r   r+   r2   r;   r   r=   r<   r>   r?   Pr@   s                 r   %test_real_id_skel_and_interp_matricesDTestInterpolativeDecomposition.test_real_id_skel_and_interp_matricesc   sp      a,,VTK	00;..qS9QBQZ=s?q7r   c                     U(       d  UOUn[         R                  " XsXFS9u  pn
X-  U
R                  R                  5       -  n[	        XUSS9  g r1   r8   r&   Tconjr
   )r:   r    r"   r   r2   r;   r   r<   Ur*   Vr@   s               r   test_svd_fixed_precision7TestInterpolativeDecomposition.test_svd_fixed_precisiono   sC     !a..4AaEACCHHJ3U3r   c                     UnU(       d  UOUn	[         R                  " XXWS9u  pnX-  UR                  R                  5       -  n[	        XUSS9  g r1   rM   )r:   r    r"   r   r+   r2   r;   r   r=   r<   rP   r*   rQ   r@   s                 r   test_svd_fixed_rank2TestInterpolativeDecomposition.test_svd_fixed_ranky   sH      a..?aEACCHHJ3U3r   c                     Un[         R                  " XSS9u  pV[         R                  " US S 2US U 4   XV5      u  pxn	Xx-  U	R                  R	                  5       -  n
[        XUSS9  g )NFr2   r3   r4   )r8   r   	id_to_svdrN   rO   r
   )r:   r    r   r+   r=   r>   r?   rP   r*   rQ   r@   s              r   test_id_to_svd-TestInterpolativeDecomposition.test_id_to_svd   sa    ,,Q>	&&qCG}c@aEACCHHJ3U3r   c                 ^    [        U5      n[        R                  " XS9n[        XCS   SSS9  g )Nr   r   ư>r3   r4   )r   r8   estimate_spectral_normr
   )r:   r    r   s
norm_2_ests        r   test_estimate_spectral_norm:TestInterpolativeDecomposition.test_estimate_spectral_norm   s+    AJ66qB

aDt$?r   c                     UR                  5       nUS S 2S4==   S-  ss'   [        X-
  5      n[        R                  " XUS9n[	        XTS   SSS9  g )Nr   g333333?r   r]   r3   r4   )copyr   r8   estimate_spectral_norm_diffr
   )r:   r    r   r@   r_   r`   s         r    test_estimate_spectral_norm_diff?TestInterpolativeDecomposition.test_estimate_spectral_norm_diff   sK    FFH	!Q$3AEN;;AcJ

aDt$?r   c                 *   [         R                  " / SQ/ SQ/ SQ/UR                  S9nX4 Hd  nSn[         R                  R	                  U[        US5      U-  5      n[        R                  " XEUS9n[        Xv:  5        [        XvS-   :*  5        Mf     g )N   rj   r   r   r   rj   dtype&.>   r   
   )	r   arrayrm   r%   matrix_rankr   r8   estimate_rankr	   )r:   r    r   r@   Mrank_tolrank_nprank_ests           r   test_rank_estimates_array8TestInterpolativeDecomposition.test_rank_estimates_array   s{    HHiI6aggFAHii++AtAqzH/DEG!//EHH'(H",- r   c                 F   [         R                  " / SQ/ SQ/ SQ/UR                  S9nX4 Hr  n[        U5      nSn[         R                  R                  U[        US5      U-  5      n[        R                  " XVUS9n[        XS-
  :  5        [        XS-   :*  5        Mt     g )Nri   rk   rl   rn   ro   r      )
r   rq   rm   r   r%   rr   r   r8   rs   r	   )	r:   r    r   r@   rt   MLru   rv   rw   s	            r   test_rank_estimates_lin_op9TestInterpolativeDecomposition.test_rank_estimates_lin_op   s    HHiI6aggFA!!$BHii++AtAqzH/DEG!//#FHH!+,H!+, r   c                     [        S5      R                  [        R                  5      n[	        [
        5         [        R                  " USSS9  S S S 5        g ! , (       d  f       g = f)N   r]   FrX   )r   r   r   float32assert_raises
ValueErrorr8   r   )r:   r    s     r   test_badcall+TestInterpolativeDecomposition.test_badcall   s@    AJbjj):&$$Q59 '&&s   A
A&c                     [         R                  " S5      n[        [        5         [        R
                  " US5        S S S 5        g ! , (       d  f       g = f)N)r{      r{   )r   onesr   r   r8   r&   )r:   as     r   test_rank_too_large2TestInterpolativeDecomposition.test_rank_too_large   s1    GGFO:&NN1a  '&&s   A
Ac                    Sn[         R                  R                  SS5      n[        R                  " X!5      u  p4n[        X2R                  S   5        [        R                  " XE5      n[        R                  " X#U5      n[        X'U-  5        [        R                  " X#5      u  pE[        R                  " XE5      n[        R                  " X#U5      n[        X'U-  5        g )Nr         rj   )
r   r   r2   r8   r   r   r)   rG   rH   r
   )r:   r   r    r=   r>   r?   rI   r@   s           r   test_full_rank-TestInterpolativeDecomposition.test_full_rank   s     IINN2q!!//7Q
#00;..qS9q5! ,,Q2	00;..qS9q5!r   rm   r2   TFr   rj   g?c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/USS9nUR                  5       n[        UR                  X2S9  [        XE5        g )	N)r   r   r   r   r   )r   r   r   rj   rj   rj   )rj   r   r   rj   r   r   )r   rj   r   r   rj   r   )r   r   rj   r   r   rj   C)rm   orderrX   )r   rq   rd   r   rN   r   )r:   rm   r2   r   r    r@   s         r   test_bug_9793,TestInterpolativeDecomposition.test_bug_9793   sP     HH+((((	*
 !- FFHacc3*1 r   c                 "   [         R                  R                  S5      nUR                  SS/S9n[	        U5      n[
        R                  " US5      u  pEn[        UR                  S5        [        UR                  S5        [        UR                  S5        UR                  S	S
/S9n[	        U5      n[
        R                  " US5      u  pEn[        UR                  S5        [        UR                  S5        [        UR                  S5        g )Nl   CaNJ1    r   )sizer   )r   r   )r   )r   r   r{   	   ro   )r{   ro   )ro   )r   ro   )	r   r   r   uniformr   r8   r&   r   r)   )r:   r   xxlur_   vs          r   %test_svd_aslinearoperator_shape_checkDTestInterpolativeDecomposition.test_svd_aslinearoperator_shape_check   s    ii##$45KKaVK$a ..Q'aQWWf%QWWd#QWWf%KKaVK$a ..Q'aQWWf%QWWd#QWWf%r   r   N)__name__
__module____qualname____firstlineno__pytestmarkparametrizerA   rD   rJ   rR   rU   rZ   ra   rf   rx   r}   r   r   r   r   float64
complex128r   r   __static_attributes__r   r   r   r-   r-   K   sh   [[57474 [[57474 [[]^,<=	8 >	8 [[57474 [[574744@
@.	-:
!"& [[Wrzz2==&AB[[VdE]3[[UQH-	! . 4 C	!&r   r-   )scipy.linalg.interpolativer%   interpolativer8   numpyr   scipy.linalgr   r   r   scipy.sparse.linalgr   r   numpy.testingr	   r
   r   r   r   r   r   fixturer   r   r   r   r    r"   r+   r-   r   r   r   <module>r      s   : 0 /  / / 0 4/ /  *    
 

BMM23+ 4+    ]& ]&r   