Ë
    âQ(h�!  ã                   ó   — d dl mc mZ d dlZd dlmZmZm	Z	 d dl
mZ d dl mZ d dlmZmZmZmZ d dlZd dlmZ  ej*                  «       d„ «       Z ej*                  «       d„ «       Z ej*                  ej0                  ej2                  g¬	«      d
„ «       Z ej*                  «       d„ «       Z ej*                  «       d„ «       Z G d„ d«      Zy)é    N)ÚhilbertÚsvdvalsÚnorm©Úaslinearoperator)Úinterp_decomp)Úassert_Úassert_allcloseÚassert_equalÚassert_array_equal)Úraisesc               #   ó   K  — d–— y ­w)Nçê-�™—q=© r   ó    úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_interpolative.pyÚepsr   )   s   è ø€ à
ƒKùs   ‚c               #   óR   K  — t         j                  j                  d«      } | –— y ­w)Nl   ,b„30k0 )ÚnpÚrandomÚdefault_rng©Úrngs    r   r   r   .   s    è ø€ ä
�)‰)×
Ñ
Ð 0Ó
1€CØ
ƒIùs   ‚%')Úparamsc              #   ó\   K  — d}t        |«      j                  | j                  «      –— y ­w)Ni,  )r   ÚastypeÚparam)ÚrequestÚns     r   ÚAr    4   s&   è ø€ ð 	€AÜ
�!‹*×
Ñ
˜GŸM™MÓ
*Ó*ùs   ‚*,c              #   ó&   K  — t        | «      –— y ­w)Nr   )r    s    r   ÚLr"   <   s   è ø€ ä
˜1Ó
Óùs   ‚c                 óÄ   — t         j                  j                  | d¬«      }	 t        j                  ||k  «      d   d   }|S # t        $ r | j
                  d   }Y |S w xY w)NF)Ú
compute_uvr   )r   ÚlinalgÚsvdÚnonzeroÚ
IndexErrorÚshape)r    r   ÚSÚranks       r   r+   r+   A   sc   € ä
�	‰	�‰�a EˆÓ*€AðÜ�z‰z˜!˜c™'Ó" 1Ñ% aÑ(ˆð €Køô ò Ø�w‰w�q‰z‰Ø€Kðús   £A ÁAÁAc                   óœ  — e Zd Zej                  j                  dg d¢«      d„ «       Zej                  j                  dg d¢«      d„ «       Zej                  j                  ddg«      d„ «       Zej                  j                  dg d¢«      d„ «       Z	ej                  j                  dg d¢«      d„ «       Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                  j                  dej(                  ej*                  g«      ej                  j                  dddg«      ej                  j                  dddg«      d„ «       «       «       Zd„ Zy)ÚTestInterpolativeDecompositionzrand,lin_op)©FF)TF)TTc                 óª   — |s|n|}t        j                  ||||¬«      \  }}	}
t        j                  |d d …|	d | f   |	|
«      }t        |||d¬«       y ©N)Úrandr   ç:Œ0âŽyE>©ÚrtolÚatol©Ú
pymatrixidr   Úreconstruct_matrix_from_idr
   )Úselfr    r"   r   r1   Úlin_opr   ÚA_or_LÚkÚidxÚprojÚBs               r   Útest_real_id_fixed_precisionz;TestInterpolativeDecomposition.test_real_id_fixed_precisionM   sY   € ñ
 !‘ aˆä!×/Ñ/°¸À$ÈCÔP‰ˆˆ3�Ü×1Ñ1°!²A°s¸2¸A°w°J±-ÀÀdÓKˆÜ˜˜1 3¨UÖ3r   c                 ó¬   — |}|s|n|}	t        j                  |	|||¬«      \  }
}t        j                  |d d …|
d | f   |
|«      }t        |||d¬«       y r0   r6   )r9   r    r"   r   r+   r1   r:   r   r<   r;   r=   r>   r?   s                r   Útest_real_id_fixed_rankz6TestInterpolativeDecomposition.test_real_id_fixed_rankX   s\   € ð ˆÙ ‘ aˆä×,Ñ,¨V°Q¸TÀsÔK‰	ˆˆTÜ×1Ñ1°!²A°s¸2¸A°w°J±-ÀÀdÓKˆÜ˜˜1 3¨UÖ3r   r.   c                 óü   — |}|s|n|}	t        j                  |	|||¬«      \  }
}t        j                  |
|«      }t        j                  |||
«      }t	        ||d d …|
d | f   |d¬«       t	        ||z  ||d¬«       y r0   )r7   r   Úreconstruct_interp_matrixÚreconstruct_skel_matrixr
   )r9   r    r"   r   r+   r1   r:   r   r<   r;   r=   r>   ÚPr?   s                 r   Ú%test_real_id_skel_and_interp_matriceszDTestInterpolativeDecomposition.test_real_id_skel_and_interp_matricesc   s€   € ð ˆÙ ‘ aˆä×,Ñ,¨V°Q¸TÀsÔK‰	ˆˆTÜ×0Ñ0°°dÓ;ˆÜ×.Ñ.¨q°!°SÓ9ˆÜ˜˜1šQ  B Q ˜Z™=¨s¸Õ?Ü˜˜A™˜q s°Ö7r   c                 ó¨   — |s|n|}t        j                  ||||¬«      \  }}	}
||	z  |
j                  j                  «       z  }t	        |||d¬«       y r0   ©r7   r&   ÚTÚconjr
   )r9   r    r"   r   r1   r:   r   r;   ÚUr*   ÚVr?   s               r   Útest_svd_fixed_precisionz7TestInterpolativeDecomposition.test_svd_fixed_precisiono   sM   € ñ !‘ aˆä—.‘. ¨°4¸SÔA‰ˆˆ1ˆaØ�‰E�A—C‘C—H‘H“JÑˆÜ˜˜1 3¨UÖ3r   c                 ó¬   — |}|s|n|}	t        j                  |	|||¬«      \  }
}}|
|z  |j                  j                  «       z  }t	        |||d¬«       y r0   rI   )r9   r    r"   r   r+   r1   r:   r   r<   r;   rL   r*   rM   r?   s                 r   Útest_svd_fixed_rankz2TestInterpolativeDecomposition.test_svd_fixed_ranky   sR   € ð ˆÙ ‘ aˆä—.‘. ¨°¸3Ô?‰ˆˆ1ˆaØ�‰E�A—C‘C—H‘H“JÑˆÜ˜˜1 3¨UÖ3r   c                 óæ   — |}t        j                  ||d¬«      \  }}t        j                  |d d …|d | f   ||«      \  }}}	||z  |	j                  j	                  «       z  }
t        ||
|d¬«       y )NF©r1   r2   r3   )r7   r   Ú	id_to_svdrJ   rK   r
   )r9   r    r   r+   r<   r=   r>   rL   r*   rM   r?   s              r   Útest_id_to_svdz-TestInterpolativeDecomposition.test_id_to_svd„   sm   € Øˆä×,Ñ,¨Q°¸Ô>‰	ˆˆTÜ×&Ñ& qª¨C°°¨G¨¡}°c¸4Ó@‰ˆˆ1ˆaØ�‰E�A—C‘C—H‘H“JÑˆÜ˜˜1 3¨UÖ3r   c                 ól   — t        |«      }t        j                  ||¬«      }t        ||d   dd¬«       y )Nr   r   ç�íµ ÷Æ°>r2   r3   )r   r7   Úestimate_spectral_normr
   )r9   r    r   ÚsÚ
norm_2_ests        r   Útest_estimate_spectral_normz:TestInterpolativeDecomposition.test_estimate_spectral_normŒ   s/   € Ü�A‹JˆÜ×6Ñ6°q¸cÔBˆ
Ü˜
 A a¡D¨t¸$Ö?r   c                 ó¶   — |j                  «       }|d d …dfxx   dz  cc<   t        ||z
  «      }t        j                  |||¬«      }t	        ||d   dd¬«       y )Nr   g333333ó?r   rV   r2   r3   )Úcopyr   r7   Úestimate_spectral_norm_diffr
   )r9   r    r   r?   rX   rY   s         r   Ú test_estimate_spectral_norm_diffz?TestInterpolativeDecomposition.test_estimate_spectral_norm_diff‘   sQ   € Ø�F‰F‹HˆØ	Š!ˆQˆ$‹�3‰‹Ü�A˜‘E‹NˆÜ×;Ñ;¸A¸qÀcÔJˆ
Ü˜
 A a¡D¨t¸$Ö?r   c                 ó6  — t        j                  g d¢g d¢g d¢g|j                  ¬«      }||fD ]h  }d}t         j                  j	                  |t        |d«      |z  «      }t        j                  |||¬«      }t        ||k\  «       t        ||dz   k  «       Œj y )N©é   ra   r   ©r   r   ra   ©Údtypeç•Ö&è.>é   r   é
   )	r   Úarrayrd   r%   Úmatrix_rankr   r7   Úestimate_rankr	   )r9   r    r   r?   ÚMÚrank_tolÚrank_npÚrank_ests           r   Útest_rank_estimates_arrayz8TestInterpolativeDecomposition.test_rank_estimates_array˜   sˆ   € Ü�H‰H’i¢ªIÐ6¸a¿g¹gÔFˆà�Q�ò 	.ˆAØˆHÜ—i‘i×+Ñ+¨A¬t°A°q«z¸HÑ/DÓEˆGÜ!×/Ñ/°°8ÀÔEˆHÜ�H Ñ'Ô(Ü�H ¨"¡Ñ,Õ-ñ	.r   c                 óR  — t        j                  g d¢g d¢g d¢g|j                  ¬«      }||fD ]v  }t        |«      }d}t         j                  j                  |t        |d«      |z  «      }t        j                  |||¬«      }t        ||dz
  k\  «       t        ||dz   k  «       Œx y )Nr`   rb   rc   re   rf   r   é   )
r   rh   rd   r   r%   ri   r   r7   rj   r	   )	r9   r    r   r?   rk   ÚMLrl   rm   rn   s	            r   Útest_rank_estimates_lin_opz9TestInterpolativeDecomposition.test_rank_estimates_lin_op¢   s–   € Ü�H‰H’i¢ªIÐ6¸a¿g¹gÔFˆà�Q�ò 	-ˆAÜ! !Ó$ˆBØˆHÜ—i‘i×+Ñ+¨A¬t°A°q«z¸HÑ/DÓEˆGÜ!×/Ñ/°°HÀ#ÔFˆHÜ�H ¨!¡Ñ+Ô,Ü�H ¨!¡Ñ+Õ,ñ	-r   c                 óÌ   — t        d«      j                  t        j                  «      }t	        t
        «      5  t        j                  |dd¬«       d d d «       y # 1 sw Y   y xY w)Né   rV   FrR   )r   r   r   Úfloat32Úassert_raisesÚ
ValueErrorr7   r   )r9   r    s     r   Útest_badcallz+TestInterpolativeDecomposition.test_badcall­   sI   € Ü�A‹J×ÑœbŸj™jÓ)ˆÜœ:Ó&ñ 	:Ü×$Ñ$ Q¨°5Õ9÷	:÷ 	:ñ 	:ús   ¸AÁA#c                 ó¢   — t        j                  d«      }t        t        «      5  t	        j
                  |d«       d d d «       y # 1 sw Y   y xY w)N)rq   é   rq   )r   Úonesrw   rx   r7   r&   )r9   Úas     r   Útest_rank_too_largez2TestInterpolativeDecomposition.test_rank_too_large²   s:   € ä�G‰G�F‹OˆÜœ:Ó&ñ 	!Ü�N‰N˜1˜aÔ ÷	!÷ 	!ñ 	!ús   ¥AÁAc                 óÐ  — d}t         j                  j                  dd«      }t        j                  ||«      \  }}}t        ||j                  d   «       t        j                  ||«      }t        j                  |||«      }t        |||z  «       t        j                  ||«      \  }}t        j                  ||«      }t        j                  |||«      }t        |||z  «       y )Nr   é   é   ra   )
r   r   r1   r7   r   r   r)   rD   rE   r
   )r9   r   r    r<   r=   r>   rF   r?   s           r   Útest_full_rankz-TestInterpolativeDecomposition.test_full_rank¸   sÇ   € Øˆô �I‰I�N‰N˜2˜qÓ!ˆÜ!×/Ñ/°°3Ó7‰ˆˆ3�Ü�Q˜Ÿ™ ™
Ô#ä×0Ñ0°°dÓ;ˆÜ×.Ñ.¨q°!°SÓ9ˆÜ˜˜1˜q™5Ô!ô ×,Ñ,¨Q°Ó2‰	ˆˆTä×0Ñ0°°dÓ;ˆÜ×.Ñ.¨q°!°SÓ9ˆÜ˜˜1˜q™5Õ!r   rd   r1   TFr   ra   gš™™™™™¹?c                 óº   — t        j                  g d¢g d¢g d¢g d¢g d¢g|d¬«      }|j                  «       }t        |j                  ||¬«       t        ||«       y )	N)éÿÿÿÿr„   r„   r   r   r   )r   r   r   ra   ra   ra   )ra   r   r   ra   r   r   )r   ra   r   r   ra   r   )r   r   ra   r   r   ra   ÚC)rd   ÚorderrR   )r   rh   r\   r   rJ   r   )r9   rd   r1   r   r    r?   s         r   Útest_bug_9793z,TestInterpolativeDecomposition.test_bug_9793Ë   sT   € ô �H‰HÒ+Ú(Ú(Ú(Ú(ð	*ð
 !¨ô-ˆð �F‰F‹HˆÜ�a—c‘c˜3 TÕ*Ü˜1˜aÕ r   c                 ó.  — t         j                  j                  d«      }|j                  ddg¬«      }t	        |«      }t        j                  |d«      \  }}}t        |j                  d«       t        |j                  d«       t        |j                  d«       |j                  d	d
g¬«      }t	        |«      }t        j                  |d«      \  }}}t        |j                  d«       t        |j                  d«       t        |j                  d«       y )Nl   Ca£N¿J1 é   ru   )Úsizer{   )r‰   r{   )r{   )ru   r{   rq   é	   rf   )rq   rf   )rf   )r‹   rf   )	r   r   r   Úuniformr   r7   r&   r   r)   )r9   r   ÚxÚxlÚurX   Úvs          r   Ú%test_svd_aslinearoperator_shape_checkzDTestInterpolativeDecomposition.test_svd_aslinearoperator_shape_checkÙ   sÓ   € ä�i‰i×#Ñ#Ð$4Ó5ˆØ�K‰K˜a ˜VˆKÓ$ˆÜ˜aÓ ˆÜ—.‘.  QÓ'‰ˆˆ1ˆaÜ�Q—W‘W˜fÔ%Ü�Q—W‘W˜dÔ#Ü�Q—W‘W˜fÔ%à�K‰K˜a ˜VˆKÓ$ˆÜ˜aÓ ˆÜ—.‘.  QÓ'‰ˆˆ1ˆaÜ�Q—W‘W˜fÔ%Ü�Q—W‘W˜dÔ#Ü�Q—W‘W˜fÕ%r   N)Ú__name__Ú
__module__Ú__qualname__ÚpytestÚmarkÚparametrizer@   rB   rG   rN   rP   rT   rZ   r^   ro   rs   ry   r~   r‚   r   Úfloat64Ú
complex128r‡   r‘   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ò@ò
@ò.ò	-ò:ò
!ò"ð& ‡[�[×Ñ˜W r§z¡z°2·=±=Ð&AÓBØ‡[�[×Ñ˜V d¨E ]Ó3Ø‡[�[×Ñ˜U Q¨ HÓ-ñ	!ó .ó 4ó Cð	!ó&r   r-   )Úscipy.linalg.interpolativer%   Úinterpolativer7   Únumpyr   Úscipy.linalgr   r   r   Úscipy.sparse.linalgr   r   Únumpy.testingr	   r
   r   r   r•   r   rw   Úfixturer   r   r˜   r™   r    r"   r+   r-   r   r   r   ú<module>r¡      sØ   ð÷: 0Ð /Û ß /Ñ /Ý 0Ý 4÷/ó /ã Ý *ð €‡�Óñó ðð €‡�Óñó ðð
 €‡�˜Ÿ
™
 B§M¡MÐ2Ô3ñ+ó 4ð+ð €‡�Óñó ðð €‡�Óñó ð÷]&ò ]&r   