§
    ¢éUg	#  ã                   óŒ  — 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 d dlZej        dk     Z ej        ¦   «         d„ ¦   «         Z ej        ej        ej        g¬	¦  «        d
„ ¦   «         Z ej        ¦   «         d„ ¦   «         Z ej        ¦   «         d„ ¦   «         Z G d„ d¦  «        ZdS )é    N)ÚhilbertÚsvdvalsÚnorm©Úaslinearoperator)Úinterp_decomp)Úassert_Úassert_allcloseÚassert_equalÚassert_array_equal)Úraisesl        c               #   ó   K  — dV — d S )Nçê-�™—q=© r   ó    úd/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/linalg/tests/test_interpolative.pyÚepsr   +   s   è è € à
€K€K€K€K€Kr   )Úparamsc              #   ó`   K  — d}t          |¦  «                             | j        ¦  «        V — d S )Ni,  )r   ÚastypeÚparam)ÚrequestÚns     r   ÚAr   0   s5   è è € ð 	€AÝ
�!‰*Œ*×
Ò
˜GœMÑ
*Ô
*Ð*Ð*Ð*Ð*Ð*r   c              #   ó,   K  — t          | ¦  «        V — d S )Nr   )r   s    r   ÚLr   8   s    è è € å
˜1Ñ
Ô
ÐÐÐÐÐr   c                 óÎ   — t           j                             | d¬¦  «        }	 t          j        ||k     ¦  «        d         d         }n# t          $ r | j        d         }Y nw xY w|S )NF)Ú
compute_uvr   )ÚnpÚlinalgÚsvdÚnonzeroÚ
IndexErrorÚshape)r   r   ÚSÚranks       r   r&   r&   =   sl   € å
Œ	�Š�a EˆÑ*Ô*€AðÝŒz˜!˜cš'Ñ"Ô" 1Ô% aÔ(ˆˆøÝð ð ð ØŒw�qŒzˆˆˆðøøøà€Ks   £$A ÁA"Á!A"c                   óª  — e Zd Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zej                             ddg¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Z	ej                             dg d¢¦  «        d„ ¦   «         Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             dej        ej        g¦  «        ej                             dddg¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         ¦   «         ZdS )ÚTestInterpolativeDecompositionzrand,lin_op)©FF)TF)TTc                 ó"  — t           r+|j        t          j        k    r|rt	          j        d¦  «         |s|n|}t          j        |||¬¦  «        \  }}}	t          j        |d d …|d |…         f         ||	¦  «        }
t          ||
|d¬¦  «         d S ©Núbug in external fortran code©Úrandç:Œ0âŽyE>©ÚrtolÚatol©
Ú	_IS_32BITÚdtyper   Ú
complex128ÚpytestÚxfailÚ
pymatrixidr   Úreconstruct_matrix_from_idr
   )Úselfr   r   r   r.   Úlin_opÚA_or_LÚkÚidxÚprojÚBs              r   Útest_real_id_fixed_precisionz;TestInterpolativeDecomposition.test_real_id_fixed_precisionI   s    € õ ð 	9˜œ¥B¤MÒ1Ð1°dÐ1ÝŒLÐ7Ñ8Ô8Ð8à Ð'�� aˆå!Ô/°¸À$ÐGÑGÔG‰ˆˆ3�ÝÔ1°!°A°A°A°s¸2¸A¸2´w°J´-ÀÀdÑKÔKˆÝ˜˜1 3¨UÐ3Ñ3Ô3Ð3Ð3Ð3r   c                 ó$  — t           r+|j        t          j        k    r|rt	          j        d¦  «         |}|s|n|}t          j        |||¬¦  «        \  }	}
t          j        |d d …|	d |…         f         |	|
¦  «        }t          |||d¬¦  «         d S r+   r3   )r;   r   r   r   r&   r.   r<   r>   r=   r?   r@   rA   s               r   Útest_real_id_fixed_rankz6TestInterpolativeDecomposition.test_real_id_fixed_rankV   s£   € õ ð 	9˜œ¥B¤MÒ1Ð1°dÐ1ÝŒLÐ7Ñ8Ô8Ð8ØˆØ Ð'�� aˆåÔ,¨V°Q¸TÐBÑBÔB‰	ˆˆTÝÔ1°!°A°A°A°s¸2¸A¸2´w°J´-ÀÀdÑKÔKˆÝ˜˜1 3¨UÐ3Ñ3Ô3Ð3Ð3Ð3r   r)   c                 ó  — |}|s|n|}t          j        |||¬¦  «        \  }	}
t          j        |	|
¦  «        }t          j        |||	¦  «        }t	          ||d d …|	d |…         f         |d¬¦  «         t	          ||z  ||d¬¦  «         d S )Nr-   r/   r0   )r9   r   Úreconstruct_interp_matrixÚreconstruct_skel_matrixr
   )r;   r   r   r   r&   r.   r<   r>   r=   r?   r@   ÚPrA   s                r   Ú%test_real_id_skel_and_interp_matriceszDTestInterpolativeDecomposition.test_real_id_skel_and_interp_matricesc   s¤   € ð ˆØ Ð'�� aˆåÔ,¨V°Q¸TÐBÑBÔB‰	ˆˆTÝÔ0°°dÑ;Ô;ˆÝÔ.¨q°!°SÑ9Ô9ˆÝ˜˜1˜Q˜Q˜Q  B Q B¤˜Zœ=¨s¸Ð?Ñ?Ô?Ð?Ý˜˜A™˜q s°Ð7Ñ7Ô7Ð7Ð7Ð7r   c                 ó  — t           r+|j        t          j        k    r|rt	          j        d¦  «         |s|n|}t          j        |||¬¦  «        \  }}}	||z  |	j         	                    ¦   «         z  }
t          ||
|d¬¦  «         d S r+   ©r4   r5   r   r6   r7   r8   r9   r!   ÚTÚconjr
   )r;   r   r   r   r.   r<   r=   ÚUr%   ÚVrA   s              r   Útest_svd_fixed_precisonz6TestInterpolativeDecomposition.test_svd_fixed_precisono   s�   € õ ð 	9˜œ¥B¤MÒ1Ð1°dÐ1ÝŒLÐ7Ñ8Ô8Ð8Ø Ð'�� aˆå”. ¨°4Ð8Ñ8Ô8‰ˆˆ1ˆaØ�‰E�A”C—H’H‘J”JÑˆÝ˜˜1 3¨UÐ3Ñ3Ô3Ð3Ð3Ð3r   c                 ó  — t           r+|j        t          j        k    r|rt	          j        d¦  «         |}|s|n|}t          j        |||¬¦  «        \  }	}
}|	|
z  |j         	                    ¦   «         z  }t          |||d¬¦  «         d S r+   rK   )r;   r   r   r   r&   r.   r<   r>   r=   rN   r%   rO   rA   s                r   Útest_svd_fixed_rankz2TestInterpolativeDecomposition.test_svd_fixed_rank{   s”   € õ ð 	9˜œ¥B¤MÒ1Ð1°dÐ1ÝŒLÐ7Ñ8Ô8Ð8ØˆØ Ð'�� aˆå”. ¨°Ð6Ñ6Ô6‰ˆˆ1ˆaØ�‰E�A”C—H’H‘J”JÑˆÝ˜˜1 3¨UÐ3Ñ3Ô3Ð3Ð3Ð3r   c                 óú   — |}t          j        ||d¬¦  «        \  }}t          j        |d d …|d |…         f         ||¦  «        \  }}}	||z  |	j                             ¦   «         z  }
t          ||
|d¬¦  «         d S )NFr-   r/   r0   )r9   r   Ú	id_to_svdrL   rM   r
   )r;   r   r   r&   r>   r?   r@   rN   r%   rO   rA   s              r   Útest_id_to_svdz-TestInterpolativeDecomposition.test_id_to_svdˆ   s…   € ØˆåÔ,¨Q°¸Ð>Ñ>Ô>‰	ˆˆTÝÔ& q¨¨¨¨C°°°¬G¨¤}°c¸4Ñ@Ô@‰ˆˆ1ˆaØ�‰E�A”C—H’H‘J”JÑˆÝ˜˜1 3¨UÐ3Ñ3Ô3Ð3Ð3Ð3r   c                 ó~   — t          |¦  «        }t          j        |¦  «        }t          ||d         dd¬¦  «         d S )Nr   ç�íµ ÷Æ°>r/   r0   )r   r9   Úestimate_spectral_normr
   )r;   r   ÚsÚ
norm_2_ests       r   Útest_estimate_spectral_normz:TestInterpolativeDecomposition.test_estimate_spectral_norm�   s>   € Ý�A‰JŒJˆÝÔ6°qÑ9Ô9ˆ
Ý˜
 A a¤D¨t¸$Ð?Ñ?Ô?Ð?Ð?Ð?r   c                 óÖ   — |                      ¦   «         }|d d …dfxx         dz  cc<   t          ||z
  ¦  «        }t          j        ||¦  «        }t	          ||d         dd¬¦  «         d S )Nr   g333333ó?rW   r/   r0   )Úcopyr   r9   Úestimate_spectral_norm_diffr
   )r;   r   rA   rY   rZ   s        r   Ú test_estimate_spectral_norm_diffz?TestInterpolativeDecomposition.test_estimate_spectral_norm_diff•   sn   € Ø�FŠF‰HŒHˆØ	ˆ!ˆ!ˆ!ˆQˆ$ˆˆŒ�3‰ˆˆ‰Ý�A˜‘E‰NŒNˆÝÔ;¸A¸qÑAÔAˆ
Ý˜
 A a¤D¨t¸$Ð?Ñ?Ô?Ð?Ð?Ð?r   c                 ó>  — t          j        g d¢g d¢g d¢g|j        ¬¦  «        }||fD ]s}d}t           j                             |t          |d¦  «        |z  ¦  «        }t          j        ||¦  «        }t          ||k    ¦  «         t          ||dz   k    ¦  «         Œtd S )N©é   rb   r   ©r   r   rb   ©r5   ç•Ö&è.>é   é
   )	r   Úarrayr5   r    Úmatrix_rankr   r9   Úestimate_rankr	   )r;   r   rA   ÚMÚrank_tolÚrank_npÚrank_ests          r   Útest_rank_estimates_arrayz8TestInterpolativeDecomposition.test_rank_estimates_arrayœ   s°   € ÝŒH�i�i�i   ¨I¨I¨IÐ6¸a¼gÐFÑFÔFˆà�Q�ð 	.ð 	.ˆAØˆHÝ”i×+Ò+¨A­t°A°q©z¬z¸HÑ/DÑEÔEˆGÝ!Ô/°°8Ñ<Ô<ˆHÝ�H Ò'Ñ(Ô(Ð(Ý�H ¨"¡Ò,Ñ-Ô-Ð-Ð-ð	.ð 	.r   c                 ób  — t          j        g d¢g d¢g d¢g|j        ¬¦  «        }||fD ]…}t          |¦  «        }d}t           j                             |t          |d¦  «        |z  ¦  «        }t          j        ||¦  «        }t          ||dz
  k    ¦  «         t          ||dz   k    ¦  «         Œ†d S )Nra   rc   rd   re   rf   é   )
r   rh   r5   r   r    ri   r   r9   rj   r	   )r;   r   rA   rk   ÚMLrl   rm   rn   s           r   Útest_rank_estimates_lin_opz9TestInterpolativeDecomposition.test_rank_estimates_lin_op¦   sÁ   € ÝŒH�i�i�i   ¨I¨I¨IÐ6¸a¼gÐFÑFÔFˆà�Q�ð 	-ð 	-ˆAÝ! !Ñ$Ô$ˆBØˆHÝ”i×+Ò+¨A­t°A°q©z¬z¸HÑ/DÑEÔEˆGÝ!Ô/°°HÑ=Ô=ˆHÝ�H ¨!¡Ò+Ñ,Ô,Ð,Ý�H ¨!¡Ò+Ñ,Ô,Ð,Ð,ð	-ð 	-r   c                 óŠ  — t          j        d¦  «         t          t          j        d¦  «        ddgdd¬¦  «         t          j        d¦  «         t          j        d¦  «        }t          |d	d
gdd¬¦  «         t          j                             d¦  «         t          j        ¦   «          t          j        d¦  «        }t          j                             d¦  «         t          j        t          j                             d¦  «        ¦  «         t          j        d¦  «        }t          ||¦  «         t          ||¦  «         d S )NÚdefaultrf   g#Š$•ì?gƒ<Páç£ä?g-Cëâ6?r/   r0   iÒ  gdb©äRè?gä2@å�±?é7   )r9   Úseedr
   r.   r   Úrandom)r;   Úx1Úx2Úx3s       r   Ú	test_randz(TestInterpolativeDecomposition.test_rand±   s  € ÝŒ˜	Ñ"Ô"Ð"Ý�
œ¨Ñ*Ô*¨Y¸
Ð,CØ!¨ð	.ñ 	.ô 	.ð 	.õ 	Œ˜ÑÔÐÝŒ_˜QÑÔˆÝ˜˜Y¨
Ð3¸$ÀTÐJÑJÔJÐJå
Œ	�Š�tÑÔÐÝŒÑÔÐÝŒ_˜QÑÔˆå
Œ	�Š�tÑÔÐÝŒ�œ	Ÿš rÑ*Ô*Ñ+Ô+Ð+ÝŒ_˜QÑÔˆå˜˜BÑÔÐÝ˜˜BÑÔÐÐÐr   c                 óæ   — t          d¦  «                             t          j        ¦  «        }t	          t
          ¦  «        5  t          j        |dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né   rW   Fr-   )r   r   r   Úfloat32Úassert_raisesÚ
ValueErrorr9   r   )r;   r   s     r   Útest_badcallz+TestInterpolativeDecomposition.test_badcallÅ   s§   € Ý�A‰JŒJ×Ò�bœjÑ)Ô)ˆÝ�:Ñ&Ô&ð 	:ð 	:ÝÔ$ Q¨°5Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ÁA&Á&A*Á-A*c                 ó²   — t          j        d¦  «        }t          t          ¦  «        5  t	          j        |d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)rq   é   rq   )r   Úonesr€   r�   r9   r!   )r;   Úas     r   Útest_rank_too_largez2TestInterpolativeDecomposition.test_rank_too_largeÊ   s“   € åŒG�F‰OŒOˆÝ�:Ñ&Ô&ð 	!ð 	!ÝŒN˜1˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   ©AÁAÁAc                 óÚ  — d}t           j                             dd¦  «        }t          j        ||¦  «        \  }}}t          ||j        d         ¦  «         t          j        ||¦  «        }t          j        |||¦  «        }t          |||z  ¦  «         t          j        ||¦  «        \  }}t          j        ||¦  «        }t          j        |||¦  «        }t          |||z  ¦  «         d S )Nr   é   é   rb   )
r   rx   r.   r9   r   r   r$   rF   rG   r
   )r;   r   r   r>   r?   r@   rH   rA   s           r   Útest_full_rankz-TestInterpolativeDecomposition.test_full_rankÐ   sÞ   € Øˆõ ŒI�NŠN˜2˜qÑ!Ô!ˆÝ!Ô/°°3Ñ7Ô7‰ˆˆ3�Ý�Q˜œ œ
Ñ#Ô#Ð#åÔ0°°dÑ;Ô;ˆÝÔ.¨q°!°SÑ9Ô9ˆÝ˜˜1˜q™5Ñ!Ô!Ð!õ Ô,¨Q°Ñ2Ô2‰	ˆˆTåÔ0°°dÑ;Ô;ˆÝÔ.¨q°!°SÑ9Ô9ˆÝ˜˜1˜q™5Ñ!Ô!Ð!Ð!Ð!r   r5   r.   TFr   rb   gš™™™™™¹?c                 ó"  — t           r&|t          j        k    r|rt          j        d¦  «         t          j        g d¢g d¢g d¢g d¢g d¢g|d¬¦  «        }|                     ¦   «         }t          |j        ||¬	¦  «         t          ||¦  «         d S )
Nr,   )éÿÿÿÿr�   r�   r   r   r   )r   r   r   rb   rb   rb   )rb   r   r   rb   r   r   )r   rb   r   r   rb   r   )r   r   rb   r   r   rb   ÚC)r5   Úorderr-   )
r4   r   r6   r7   r8   rh   r]   r   rL   r   )r;   r5   r.   r   r   rA   s         r   Útest_bug_9793z,TestInterpolativeDecomposition.test_bug_9793ã   s¹   € õ ð 	9˜¥"¤-Ò/Ð/°DÐ/ÝŒLÐ7Ñ8Ô8Ð8ÝŒHÐ+Ð+Ð+Ø(Ð(Ð(Ø(Ð(Ð(Ø(Ð(Ð(Ø(Ð(Ð(ð	*ð
 !¨ð-ñ -ô -ˆð �FŠF‰HŒHˆÝ�a”c˜3 TÐ*Ñ*Ô*Ð*Ý˜1˜aÑ Ô Ð Ð Ð r   N)Ú__name__Ú
__module__Ú__qualname__r7   ÚmarkÚparametrizerB   rD   rI   rP   rR   rU   r[   r_   ro   rs   r|   r‚   r‡   r‹   r   Úfloat64r6   r�   r   r   r   r(   r(   G   s:  € € € € € à„[×ÒØØ5Ð5Ð5ñ7ô 7ð4ð 4ñ7ô 7ð4ð „[×ÒØØ5Ð5Ð5ñ7ô 7ð4ð 4ñ7ô 7ð4ð „[×Ò˜]¨^Ð,<Ñ=Ô=ð	8ð 	8ñ >Ô=ð	8ð „[×ÒØØ5Ð5Ð5ñ7ô 7ð4ð 4ñ7ô 7ð4ð „[×ÒØØ5Ð5Ð5ñ7ô 7ð4ð 4ñ7ô 7ð4ð4ð 4ð 4ð@ð @ð @ð
@ð @ð @ð.ð .ð .ð	-ð 	-ð 	-ð ð  ð  ð(:ð :ð :ð
!ð !ð !ð"ð "ð "ð& „[×Ò˜W r¤z°2´=Ð&AÑBÔBØ„[×Ò˜V d¨E ]Ñ3Ô3Ø„[×Ò˜U Q¨ HÑ-Ô-ð!ð !ñ .Ô-ñ 4Ô3ñ CÔBð!ð !ð !r   r(   ) Úscipy.linalg.interpolativer    Úinterpolativer9   Únumpyr   Úscipy.linalgr   r   r   Úscipy.sparse.linalgr   r   Únumpy.testingr	   r
   r   r   r7   r   r€   ÚsysÚmaxsizer4   Úfixturer   r–   r6   r   r   r&   r(   r   r   r   ú<module>r       s¾  ðð: 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /à €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø 
€
€
€
ØŒ[˜5Ò €	ð €„ÑÔðð ñ Ôðð €„˜œ
 B¤MÐ2Ð3Ñ3Ô3ð+ð +ñ 4Ô3ð+ð €„ÑÔðð ñ Ôðð €„ÑÔðð ñ Ôððj!ð j!ð j!ð j!ð j!ñ j!ô j!ð j!ð j!ð j!r   