ó
    „ñ:ibw ã                   óD  • S SK r S SKrS SKJrJr  S SKrS SKrS SKJrJ	r	  S SK
r
S SKrS SKJrJrJr  S SKJr  S SKJrJrJrJrJrJr  SSKJr  S SKrS	 rS
 rS r " S S\\5      rS r S r!S r"S r#S r$S r%SJS jr&S r'SKS jr(S r)SLS jr*S r+S r,SMS jr-SMS jr.SMS jr/S r0SNS jr1S  r2SMS! jr3S" r4 " S# S$\\5      r5 " S% S&\5      r6 " S' S(\55      r7 " S) S*\55      r8 " S+ S,\55      r9 " S- S.\55      r: " S/ S0\55      r; " S1 S2\55      r< " S3 S4\<5      r= " S5 S6\<5      r> " S7 S8\55      r? " S9 S:\55      r@ " S; S<\<5      rA " S= S>\55      rB " S? S@\<5      rC " SA SB\55      rD " SC SD\55      rE " SE SF\<5      rF " SG SH\5      rG\HSI:X  a  \R’                  " 5         gg)Oé    N)ÚproductÚcycle)ÚNumberÚIntegral)ÚjitÚnjitÚtypeof)Úerrors)ÚTestCaseÚtagÚneeds_lapackÚ
needs_blasÚ
_is_armv7lÚEnableNRTStatsMixiné   )Úmatmul_usecasec                 ó.   • [         R                  " X5      $ ©N©ÚnpÚdot©ÚaÚbs     ÚZ/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_linalg.pyÚdot2r      s   € Ü�6Š6�!‹<Ðó    c                 ó,   • [         R                  " XUS9$ ©N©Úoutr   ©r   r   r!   s      r   Údot3r#      s   € Ü�6Š6�!˜CÑ Ð r   c                 ó.   • [         R                  " X5      $ r   )r   Úvdotr   s     r   r%   r%      ó   € Ü�7Š7�1‹=Ðr   c                   óp  ^ • \ rS rSrSr\R                  \R                  \R                  \R                  4r
U 4S jrS rS r\R                  S 5       rS rS rS	 rSS
 jrSS jrS r\S 5       r\S 5       rS r\S 5       rS r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r!Sr"U =r#$ )ÚTestProducté   z
Tests for dot products.
c                 óT   >• [         R                  " 5         [        [        U ]  5         g r   )ÚgcÚcollectÚsuperr(   ÚsetUp©ÚselfÚ	__class__s    €r   r.   ÚTestProduct.setUp&   s   ø€ ä
�
Š
ŒÜŒk˜4Ñ&Õ(r   c                 óÈ   • [         R                  " U5      n[        U[         R                  5      (       a  US-  S-   R	                  U5      $ US-  S-
  R	                  U5      $ ©Ny      ð?      à¿y               @g      à?r   ©r   ÚarangeÚ
issubclassÚcomplexfloatingÚastype©r0   ÚnÚdtypeÚbases       r   Úsample_vectorÚTestProduct.sample_vector+   óX   € ô �yŠy˜‹|ˆÜ�eœR×/Ñ/×0Ñ0Ø˜HÑ%¨Ñ*×2Ñ2°5Ó9Ð9à˜3‘J ‘N×*Ñ*¨5Ó1Ð1r   c                 óJ   • U R                  X-  U5      R                  X45      $ r   )r>   Úreshape)r0   Úmr;   r<   s       r   Úsample_matrixÚTestProduct.sample_matrix4   s$   € Ø×!Ñ! !¡%¨Ó/×7Ñ7¸¸Ó?Ð?r   c              #   ól  #   • [         R                  " SS9 n[         R                  " S[        R                  5        Sv •  SSS5        U R                  [        W5      S5        U R                  US   R                  [        R                  5        U R                  S[        US   R                  5      5        U R                  US   R                  UR                  R                  5        U R                  US   R                   UR                  R"                  S-   5        g! , (       d  f       Nè= f7f)z2
Check performance warning(s) for non-contiguity.
T)ÚrecordÚalwaysNr   r   zfaster on contiguous arrays)ÚwarningsÚcatch_warningsÚsimplefilterr
   ÚNumbaPerformanceWarningÚassertGreaterEqualÚlenÚassertIsÚcategoryÚassertInÚstrÚmessageÚassertEqualÚfilenameÚ__code__Úco_filenameÚlinenoÚco_firstlineno)r0   ÚpyfuncÚws      r   Úcheck_contiguity_warningÚ$TestProduct.check_contiguity_warning7   sÔ   é € ô
 ×$Ò$¨DÒ1°QÜ×!Ò! (¬F×,JÑ,JÔKÛ÷ 2ð 	×Ñ¤ A£¨Ô*Ø�‰�a˜‘d—m‘m¤V×%CÑ%CÔDØ�‰Ð3´S¸¸1¹¿¹Ó5FÔGØ×Ñ˜˜1™Ÿ™¨¯©×(CÑ(CÔDà×Ñ˜˜1™Ÿ™ f§o¡o×&DÑ&DÀqÑ&HÕI÷ 2Õ1üs   ‚D4—*D#ÁC"D4Ä#
D1Ä-D4c                 ó�   • U R                  5          U" U6 nU" U6 nU R                  XTSS9  AAS S S 5        g ! , (       d  f       g = f)NT©Úignore_sign_on_zero)ÚassertNoNRTLeakÚassertPreciseEqual)r0   rZ   ÚcfuncÚargsÚexpectedÚgots         r   Ú
check_funcÚTestProduct.check_funcF   sD   € Ø×!Ñ!Õ#Ù˜t�}ˆHÙ˜�,ˆCØ×#Ñ# CÀtÐ#ÑLØ�X÷	 $×#Ö#ús	   ‘7·
Ac                 ó‚  • UR                   S-   UR                  -  S-   nUR                   UR                  -  n[        R                  " U[        R                  S9n[        UR                  S-   5       H=  nXEXS-    R                  UR                  S9nUR                  R                  (       d  M=    O   [        S5      eUR                  R                  (       a   [        R                  " XaR                  SS9nO[        R                  " XaR                  SS9nUS S  US S & UR                  R                  (       d   eU$ )Nr   ©r<   zCould not obtain aligned arrayÚC©ÚorderÚF)ÚsizeÚitemsizer   ÚemptyÚuint8ÚrangeÚviewr<   ÚflagsÚalignedÚ	ExceptionÚc_contiguousrB   Úshape)r0   Úarrro   ÚdatasizeÚtmpÚiÚnews          r   Ú_aligned_copyÚTestProduct._aligned_copyN   sö   € ð —‘˜1‘ §¡Ñ,¨qÑ0ˆØ—8‘8˜cŸl™lÑ*ˆÜ�hŠh�t¤2§8¡8Ñ,ˆÜ�s—|‘| aÑ'Ö(ˆAØ˜!™,Ð'×,Ñ,°3·9±9Ð,Ð=ˆCØ�y‰y× × Ñ Ùñ )ô
 Ð<Ó=Ð=Ø�9‰9×!×!Ü—*’*˜S§)¡)°3Ñ7‰Cä—*’*˜S§)¡)°3Ñ7ˆCØ‘Q�ˆ‰AˆØ�y‰y× × Ð Ð Øˆ
r   c                 óJ  • [         (       a  U R                  O[        R                  nU R	                  5          U" U5      nU" U5      nU R                  U" USU06U5        U R                  U" USU06U5        U R                  XvSS9  AAS S S 5        g ! , (       d  f       g = f)Nr!   Tr_   )r   r   r   Úcopyra   rO   rb   )r0   rZ   rc   rd   r!   Úcopierre   rf   s           r   Úcheck_func_outÚTestProduct.check_func_outc   s‰   € ß'1¢z�×#Ò#´r·w±wˆØ×!Ñ!Õ#Ù˜c“{ˆHÙ˜“+ˆCØ�M‰M™& $Ð5¨HÑ5°xÔ@Ø�M‰M™% Ð/¨3Ñ/°Ô5Ø×#Ñ# CÀtÐ#ÑLØ�X÷ $×#Ö#ús   ¸ABÂ
B"c                 óÌ   • U R                  [        5       nU" U6   S S S 5        U(       a  SOSnU R                  U[        WR                  5      5        g ! , (       d  f       N?= f)Nzincompatible output array sizezincompatible array sizes)ÚassertRaisesÚ
ValueErrorrQ   rR   Ú	exception)r0   rc   rd   Úis_outÚraisesÚmsgs         r   Úassert_mismatching_sizesÚ$TestProduct.assert_mismatching_sizesm   sN   € Ø×ÑœzÔ*¨fÙ�4‰L÷ +æ39Ñ/Ø)ð 	à�‰�cœ3˜v×/Ñ/Ó0Õ1÷	 +Õ*ús   –AÁ
A#c                 óÒ   • U R                  [        R                  5       nU" U6   S S S 5        U R                  U< S3[	        WR
                  5      5        g ! , (       d  f       N8= f)Nz' arguments must all have the same dtype)r‡   r
   ÚTypingErrorrQ   rR   r‰   )r0   rc   rd   Ú	func_namer‹   s        r   Úassert_mismatching_dtypesÚ%TestProduct.assert_mismatching_dtypest   sO   € Ø×Ñœv×1Ñ1Ô2°fÙ�4‰L÷ 3à�‰Û"ð%ä˜&×*Ñ*Ó+õ	-÷ 3Õ2ús    AÁ
A&c           
      óF  • Sn[        SS9" U5      nU R                   HX  nU R                  X55      nU R                  X55      nU R                  XXg45        U R                  XUS S S2   US S S2   45        MZ     U R                  US-
  [        R
                  5      nU R                  U[        R
                  5      nU R                  XFU45        U R                  U[        R                  5      nU R                  U[        R
                  5      nU R                  XFU4US9  g )Né   T©Únopythonéÿÿÿÿr   )r‘   )	r   Údtypesr>   rg   r   Úfloat64r�   Úfloat32r’   )r0   rZ   r‘   r;   rc   r<   r   r   s           r   Úcheck_dot_vvÚTestProduct.check_dot_vv{   sþ   € ØˆÜ˜TÒ" 6Ó*ˆØ—[”[ˆEØ×"Ñ" 1Ó,ˆAØ×"Ñ" 1Ó,ˆAØ�O‰O˜F¨A¨6Ô2à�O‰O˜F¨A©d°¨d©G°Q±t¸°t±WÐ+=Ö>ñ !ð ×Ñ˜q 1™u¤b§j¡jÓ1ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×%Ñ% e°¨VÔ4à×Ñ˜q¤"§*¡*Ó-ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×&Ñ& u°!¨fÀ	Ð&ÒJr   c                 ó0   • U R                  [        S5        g)z
Test vector * vector np.dot()
únp.dot()N)rœ   r   ©r0   s    r   Útest_dot_vvÚTestProduct.test_dot_vvŽ   s   € ð
 	×Ñœ$ 
Õ+r   c                 ó0   • U R                  [        S5        g)z
Test np.vdot()
z	np.vdot()N)rœ   r%   r    s    r   Ú	test_vdotÚTestProduct.test_vdot•   s   € ð
 	×Ñœ$ Õ,r   c                 ó.  ^ • U 4S jn[        SS9" U5      nUb  [        SS9" U5      nS H­  u  pxU" Xx5       H5  u  pšT R                  XXš45        T R                  XX©R                  45        M7     Uc  MK  U" Xx5       HV  u  pš[        R                  " XyR
                  S9nT R                  UWXš4U5        T R                  X&X©R                  4U5        MX     M¯     Su  pxT R                  XxS-
  [        R                  5      n	T R                  U[        R                  5      n
T R                  XYU
45        T R                  XZU	R                  45        Ubî  [        R                  " U[        R                  5      nT R                  WXšU45        T R                  XjU	R                  U45        T R                  Xw[        R                  5      n	T R                  U[        R                  5      n
[        R                  " US-
  [        R                  5      nT R                  XiX«4SS9  T R                  XjU	R                  U4SS9  T R                  Xx[        R                  5      n	T R                  U[        R                  5      n
T R                  XYU
4U5        Ub{  T R                  Xx[        R                  5      n	T R                  U[        R                  5      n
[        R                  " U[        R                  5      nT R                  WXšU4U5        g g )	Nc              3   ó^  >#   • S HU  nTR                  X[        R                  5      R                  US9nTR	                  U[        R                  5      nX44v •  MW     TR
                   H+  nTR                  XU5      nTR	                  X5      nX44v •  M-     WS S S2   WS S S2   4v •  g 7f©NÚCFrl   r˜   )rD   r   rš   r‚   r>   r™   )rC   r;   rm   r   r   r<   r0   s         €r   ÚsamplesÚ)TestProduct.check_dot_vm.<locals>.samplesž   s§   øé € Û�Ø×&Ñ& q¬R¯Z©ZÓ8×=Ñ=ÀEÐ=ÐJ�Ø×&Ñ& q¬"¯*©*Ó5�Ø�d”
ñ ð Ÿœ�Ø×&Ñ& q¨UÓ3�Ø×&Ñ& qÓ0�Ø�d”
ñ %ð
 ‘D�b�D‘'˜1™T˜r˜T™7Ð"Ó"ùs   ƒB*B-Tr–   )©é   r•   )r•   r   )r   r•   rj   r¬   r   ©rŠ   )r   rg   ÚTr   rq   r<   r„   rD   rš   r>   r�   r›   r’   )r0   Úpyfunc2Úpyfunc3r‘   rª   Úcfunc2Úcfunc3rC   r;   r   r   r!   s   `           r   Úcheck_dot_vmÚTestProduct.check_dot_vmœ   sŠ  ø€ õ
	#ô ˜dÒ# GÓ,ˆØÑÜ $Ò'¨Ó0ˆFó‰DˆAñ   ž‘�Ø—‘ °!°Ô8Ø—‘ °!·S±S°Ö:ñ &ð Ó"Ù# AžM‘D�AÜŸ(š( 1¯G©GÑ4�CØ×'Ñ'¨°¸!¸ÀÔEØ×'Ñ'¨¸!¿S¹S¸À3ÖGó *ñð ‰ˆØ×Ñ˜q a¡%¬¯©Ó4ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×%Ñ% f°!¨fÔ5Ø×%Ñ% f°!·#±#¨hÔ7ØÑÜ—(’(˜1œbŸj™jÓ)ˆCØ×)Ñ)¨&°1¸°+Ô>Ø×)Ñ)¨&°a·c±c¸3°-Ô@Ø×"Ñ" 1¬¯©Ó4ˆAØ×"Ñ" 1¤b§j¡jÓ1ˆAÜ—(’(˜1˜q™5¤"§*¡*Ó-ˆCØ×)Ñ)¨&°a°+ÀdÐ)ÑKØ×)Ñ)¨&°a·c±c¸3°-ÈÐ)ÑMà×Ñ˜q¤R§Z¡ZÓ0ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×&Ñ& v°1¨v°yÔAØÑØ×"Ñ" 1¬¯©Ó4ˆAØ×"Ñ" 1¤b§j¡jÓ1ˆAÜ—(’(˜1œbŸj™jÓ)ˆCØ×*Ñ*¨6°A¸#°;À	ÕJð	 r   c                 ó:   • U R                  [        [        S5        g)z3
Test vector * matrix and matrix * vector np.dot()
rŸ   N)r´   r   r#   r    s    r   Útest_dot_vmÚTestProduct.test_dot_vmÔ   ó   € ð
 	×Ñœ$¤ jÕ1r   c                 óü  ^ • U 4S jn[        SS9" U5      nUb  [        SS9" U5      nS Hè  u  pxn	U" XxU	5       H@  u  p«T R                  XX«45        T R                  XUR                  U
R                  45        MB     Uc  MX  U" XxU	5       Hƒ  u  p«[        R                  " Xx4U
R
                  S9nT R                  UWX«4U5        [        R                  " X‡4U
R
                  S9nT R                  X&UR                  U
R                  4U5        M…     Mê     Su  pxn	T R                  XyS-
  [        R                  5      n
T R                  X˜[        R                  5      nT R                  XZU45        Ubµ  [        R                  " Xx4[        R                  5      nT R                  WX«U45        T R                  Xy[        R                  5      n
T R                  X˜[        R                  5      n[        R                  " XxS-
  4[        R                  5      nT R                  XjX¼4SS9  T R                  Xy[        R                  5      n
T R                  X˜[        R                  5      nT R                  XZU4U5        Ub|  T R                  Xy[        R                  5      n
T R                  X˜[        R                  5      n[        R                  " Xx4[        R                  5      nT R                  WX«U4U5        g g )	Nc              3   ó’  >#   • [        SS5       Hd  u  p4TR                  X[        R                  5      R	                  US9nTR                  X![        R                  5      R	                  US9nXV4v •  Mf     TR
                   H,  nTR                  XU5      nTR                  X!U5      nXV4v •  M.     WS S S2   WS S S2   4v •  g 7fr¨   )r   rD   r   rš   r‚   r™   )	rC   r;   ÚkÚorder_aÚorder_br   r   r<   r0   s	           €r   rª   Ú)TestProduct.check_dot_mm.<locals>.samplesÝ   sÁ   øé € Ü$+¨D°$Ö$7Ñ �Ø×&Ñ& q¬R¯Z©ZÓ8×=Ñ=ÀGÐ=ÐL�Ø×&Ñ& q¬R¯Z©ZÓ8×=Ñ=ÀGÐ=ÐL�Ø�d”
ñ %8ð Ÿœ�Ø×&Ñ& q¨UÓ3�Ø×&Ñ& q¨UÓ3�Ø�d”
ñ %ð
 ‘D�b�D‘'˜1™T˜r˜T™7Ð"Ó"ùs   ƒCCTr–   )©r­   r•   é   )r   r•   rÁ   )r   r   rÁ   )r   r•   r­   )r•   r   r­   )r   r   r•   )r•   r­   r   rj   rÀ   r   r®   )r   rg   r¯   r   rq   r<   r„   rD   rš   r�   r›   r’   )r0   r°   r±   r‘   rª   r²   r³   rC   r;   r¼   r   r   r!   s   `            r   Úcheck_dot_mmÚTestProduct.check_dot_mmÛ   su  ø€ õ
	#ô ˜dÒ# GÓ,ˆØÑÜ $Ò'¨Ó0ˆFó‰GˆA�!ñ    aÖ(‘�Ø—‘ °!°Ô8Ø—‘ °!·#±#°q·s±s°Ö<ñ )ð Ó"Ù# A¨!Ö,‘D�AÜŸ(š( A 6°·±Ñ9�CØ×'Ñ'¨°¸!¸ÀÔEÜŸ(š( A 6°·±Ñ9�CØ×'Ñ'¨¸!¿#¹#¸q¿s¹s¸ÀSÖIó	 -ñð& ‰ˆˆaØ×Ñ˜q a¡%¬¯©Ó4ˆØ×Ñ˜q¤R§Z¡ZÓ0ˆØ×%Ñ% f°!¨fÔ5ØÑÜ—(’(˜A˜6¤2§:¡:Ó.ˆCØ×)Ñ)¨&°1¸°+Ô>Ø×"Ñ" 1¬¯©Ó4ˆAØ×"Ñ" 1¬¯©Ó4ˆAÜ—(’(˜A 1™u˜:¤r§z¡zÓ2ˆCØ×)Ñ)¨&°a°+ÀdÐ)ÑKà×Ñ˜q¤R§Z¡ZÓ0ˆØ×Ñ˜q¤R§Z¡ZÓ0ˆØ×&Ñ& v°1¨v°yÔAØÑØ×"Ñ" 1¬¯©Ó4ˆAØ×"Ñ" 1¬¯©Ó4ˆAÜ—(’(˜A˜6¤2§:¡:Ó.ˆCØ×*Ñ*¨6°A¸#°;À	ÕJð	 r   c                 ó:   • U R                  [        [        S5        g)z
Test matrix * matrix np.dot()
rŸ   N)rÂ   r   r#   r    s    r   Útest_dot_mmÚTestProduct.test_dot_mm  r¹   r   c                 ó0   • U R                  [        S5        g)z
Test vector @ vector
ú'@'N)rœ   r   r    s    r   Útest_matmul_vvÚTestProduct.test_matmul_vv   s   € ð
 	×Ñœ.¨%Õ0r   c                 ó2   • U R                  [        SS5        g)z*
Test vector @ matrix and matrix @ vector
NrÈ   )r´   r   r    s    r   Útest_matmul_vmÚTestProduct.test_matmul_vm'  ó   € ð
 	×Ñœ.¨$°Õ6r   c                 ó2   • U R                  [        SS5        g)z
Test matrix @ matrix
NrÈ   )rÂ   r   r    s    r   Útest_matmul_mmÚTestProduct.test_matmul_mm.  rÎ   r   c                 óü  • Su  pn[         R                  nU R                  XU5      S S S2   nU R                  X#U5      S S S2   n[         R                  " X4U5      n[	        SS9" [
        5      nU R                  UR                  5         U" XV5        S S S 5        [	        SS9" [        5      nU R                  UR                  5         U" XVU5        S S S 5        U R                  X45      S S S2   nU R                  X45      S S S2   n[	        SS9" [        5      nU R                  UR                  5         U" XV5        S S S 5        g ! , (       d  f       N¼= f! , (       d  f       N�= f! , (       d  f       g = f)NrÀ   r˜   Tr–   )r   rš   rD   rq   r   r   r\   Úpy_funcr#   r>   r%   )	r0   rC   r¼   r;   r<   r   r   r!   rc   s	            r   Útest_contiguity_warningsÚ$TestProduct.test_contiguity_warnings5  s8  € à‰ˆˆaÜ—
‘
ˆØ×Ñ˜q UÓ+©D¨b¨DÑ1ˆØ×Ñ˜q UÓ+©D¨b¨DÑ1ˆÜ�hŠh˜�v˜uÓ%ˆä˜TÒ"¤4Ó(ˆØ×*Ñ*¨5¯=©=Õ9Ù�!ŒK÷ :ä˜TÒ"¤4Ó(ˆØ×*Ñ*¨5¯=©=Õ9Ù�!˜Ô÷ :ð ×Ñ˜qÓ(©¨2¨Ñ.ˆØ×Ñ˜qÓ(©¨2¨Ñ.ˆä˜TÒ"¤4Ó(ˆØ×*Ñ*¨5¯=©=Õ9Ù�!ŒK÷ :Ð9÷ :Õ9ú÷ :Õ9ú÷ :Õ9ús$   Â	EÃ
EÄ9	E-Å
EÅ
E*Å-
E;© )F)rŸ   )$Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   rš   r›   Ú
complex128Ú	complex64r™   r.   r>   rD   Ú
contextlibÚcontextmanagerr\   rg   r   r„   r�   r’   rœ   r   r¡   r¤   r´   r·   rÂ   rÅ   rÉ   rÌ   rÐ   rÔ   Ú__static_attributes__Ú__classcell__©r1   s   @r   r(   r(      s!  ø† ñð �j‰j˜"Ÿ*™* b§m¡m°R·\±\ÐB€Fõ)ò
2ò@ð ×ÑñJó ðJòòò*ô2ô-òKð& ñ,ó ð,ð ñ-ó ð-ò6Kðp ñ2ó ð2ò<Kð| ñ2ó ð2ð ñ1ó ð1ð ñ7ó ð7ð ñ7ó ð7ð ñó ör   r(   c                 ó@   • [         R                  R                  U 5      $ r   ©r   ÚlinalgÚinv©r   s    r   Úinvert_matrixrè   N  ó   € Ü�9‰9�=‰=˜ÓÐr   c                 ó@   • [         R                  R                  U 5      $ r   )r   rå   Úcholeskyrç   s    r   Úcholesky_matrixrì   R  ó   € Ü�9‰9×Ñ˜aÓ Ð r   c                 ó@   • [         R                  R                  U 5      $ r   )r   rå   Úeigrç   s    r   Ú
eig_matrixrð   V  ré   r   c                 ó@   • [         R                  R                  U 5      $ r   )r   rå   Úeigvalsrç   s    r   Úeigvals_matrixró   Z  ó   € Ü�9‰9×Ñ˜QÓÐr   c                 ó@   • [         R                  R                  U 5      $ r   )r   rå   Úeighrç   s    r   Úeigh_matrixr÷   ^  ó   € Ü�9‰9�>‰>˜!ÓÐr   c                 ó@   • [         R                  R                  U 5      $ r   )r   rå   Úeigvalshrç   s    r   Úeigvalsh_matrixrû   b  rí   r   c                 ó@   • [         R                  R                  X5      $ r   ©r   rå   Úsvd)r   Úfull_matricess     r   Ú
svd_matrixr   f  s   € Ü�9‰9�=‰=˜Ó*Ð*r   c                 ó@   • [         R                  R                  U 5      $ r   ©r   rå   Úqrrç   s    r   Ú	qr_matrixr  j  s   € Ü�9‰9�<‰<˜‹?Ðr   c                 óB   • [         R                  R                  XU5      $ r   ©r   rå   Úlstsq)ÚAÚBÚrconds      r   Úlstsq_systemr  n  s   € Ü�9‰9�?‰?˜1 Ó'Ð'r   c                 ó@   • [         R                  R                  X5      $ r   ©r   rå   Úsolve)r  r	  s     r   Úsolve_systemr  r  s   € Ü�9‰9�?‰?˜1Ó Ð r   c                 ó@   • [         R                  R                  U 5      $ r   ©r   rå   Úpinv)r  r
  s     r   Úpinv_matrixr  v  rø   r   c                 ó@   • [         R                  R                  U 5      $ r   ©r   rå   Úslogdetrç   s    r   Úslogdet_matrixr  z  rô   r   c                 ó@   • [         R                  R                  U 5      $ r   )r   rå   Údetrç   s    r   Ú
det_matrixr  ~  ré   r   c                 ó@   • [         R                  R                  X5      $ r   )r   rå   Únorm)r   Úords     r   Únorm_matrixr  ‚  s   € Ü�9‰9�>‰>˜!Ó!Ð!r   c                 ó@   • [         R                  R                  X5      $ r   )r   rå   Úcond)r   Úps     r   Úcond_matrixr"  †  s   € Ü�9‰9�>‰>˜!ÓÐr   c                 ó@   • [         R                  R                  X5      $ r   ©r   rå   Úmatrix_rank)r   Útols     r   Úmatrix_rank_matrixr'  Š  s   € Ü�9‰9× Ñ  Ó(Ð(r   c                 ó@   • [         R                  R                  X5      $ r   )r   rå   Úmatrix_power)r   r;   s     r   Úmatrix_power_matrixr*  Ž  s   € Ü�9‰9×!Ñ! !Ó'Ð'r   c                 ó.   • [         R                  " X5      $ r   ©r   Útrace)r   Úoffsets     r   Útrace_matrixr/  ’  s   € Ü�8Š8�AÓÐr   c                 ó.   • [         R                  " U 5      $ r   r,  rç   s    r   Útrace_matrix_no_offsetr1  –  s   € Ü�8Š8�A‹;Ðr   c                 ó,   • [         R                  " XUS9$ r   )r   Úouterr"   s      r   Úouter_matrixr4  š  s   € Ü�8Š8�A˜cÑ"Ð"r   c                 ó.   • [         R                  " X5      $ r   )r   Úkronr   s     r   Úkron_matrixr7  ž  r&   r   c                   óä   ^ • \ rS rSrSr\R                  \R                  \R                  \R                  4r
U 4S jrS r SS jr\4S jrS rS rSS	 jrS
 rS rS rSS jrS rS rSrU =r$ )ÚTestLinalgBasei¢  zM
Provides setUp and common data/error modes for testing np.linalg functions.
c                 óT   >• [         R                  " 5         [        [        U ]  5         g r   )r+   r,   r-   r9  r.   r/   s    €r   r.   ÚTestLinalgBase.setUpª  s   ø€ ä
�
Š
ŒÜŒn˜dÑ)Õ+r   c                 óÈ   • [         R                  " U5      n[        U[         R                  5      (       a  US-  S-   R	                  U5      $ US-  S-   R	                  U5      $ r4   r5   r:   s       r   r>   ÚTestLinalgBase.sample_vector¯  r@   r   c                 ó€  • Sn[        U5      S:w  a  [        S5      eUS;  a  [        S5      eU[        R                  [        R                  [        R
                  [        R                  4;  a  [        S5      eUb  Ub  [        S5      eUc  UnUS	:  a  [        S
5      e[        R                  R                  S5        Uu  pxUS:  d  US:  a  [        S5      e[        Xx5      n	Uc  U	n
OCUS::  a  [        S5      e[        U[        5      (       d  [        S5      eUn
XI:”  a  [        S5      eUS	:X  d  US	:X  a=  XV:w  a  [        S5      e[        Xx5      nU R                  X²5      R                  Xx5      nU$ U R                  Xw-  U5      R                  Xw5      n[        R                  R!                  U5      u  pïU R                  Xˆ-  U5      SSS2   R                  Xˆ5      n[        R                  R!                  U5      u  nn[        R"                  " XeU
5      n[        R$                  " Xx45      n[        R&                  " [        R(                  " Xx5      5      nUUUS   SU
 US	   SU
 4'   [        R*                  " [        R*                  " UU5      UR,                  5      n[        R.                  " XÂUS9nU$ )a¯  
Provides a sample matrix with an optionally specified rank or condition
number.

size: (rows, columns), the dimensions of the returned matrix.
dtype: the dtype for the returned matrix.
order: the memory layout for the returned matrix, 'F' or 'C'.
rank: the rank of the matrix, an integer value, defaults to full rank.
condition: the condition number of the matrix (defaults to 1.)

NOTE: Only one of rank or condition may be set.
ç      ð?r­   úsize must be a length 2 tuple.)rn   rk   ú order must be one of 'F' or 'C'.ú*dtype must be a numpy floating point type.Nú/Only one of rank or condition can be specified.r   úCondition number must be >=1.r   ú+Negative dimensions given for matrix shape.úRank must be greater than zero.úRank must an integer.ú"Rank given greater than full rank.ú8Condition number was specified for a vector (always 1.).r˜   ©r<   rm   )rN   rˆ   r   r›   rš   rÝ   rÜ   ÚrandomÚseedÚminÚ
isinstancer   Úmaxr>   rB   rå   r  ÚlinspaceÚzerosÚnonzeroÚeyer   r¯   Úarray)r0   ro   r<   rm   ÚrankÚ	conditionÚd_condrC   r;   ÚminmnÚrvÚmaxmnÚQr|   ÚUÚ_ÚVÚsvÚSÚidxs                       r   Úspecific_sample_matrixÚ%TestLinalgBase.specific_sample_matrix¸  sl  € ð  ˆäˆt‹9˜‹>ÜÐ=Ó>Ð>à˜
Ó"ÜÐ?Ó@Ð@àœŸ™¤R§Z¡Z´·±¼r¿}¹}ÐMÓMÜÐIÓJÐJàÑ 	Ñ 5ÜÐNÓOÐOàÑØˆIà�q‹=ÜÐ<Ó=Ð=ä
�	‰	�‰�qÔØ‰ˆàˆq‹5�A˜“EÜÐJÓKÐKä�A“	ˆØ‰<Ø‰Bà�q‹yÜ Ð!BÓCÐCÜ˜d¤H×-Ñ-Ü Ð!8Ó9Ð9ØˆBØ‹|Ü Ð!EÓFÐFà�‹6�Q˜!“Vð Ó"Ü ØNóPð Pä˜“IˆEØ×"Ñ" 5Ó0×8Ñ8¸Ó>ˆAð* ˆð ×$Ñ$ Q¡U¨EÓ2×:Ñ:¸1Ó@ˆCÜ—9‘9—<‘< Ó$‰DˆAà×$Ñ$ Q¡U¨EÓ2±4°R°4Ñ8×@Ñ@ÀÓFˆCÜ—9‘9—<‘< Ó$‰DˆAˆqä—’˜V°Ó3ˆBÜ—’˜!˜Ó ˆAÜ—*’*œRŸVšV A›\Ó*ˆCØ*,ˆAˆc�!‰f�S�bˆk˜3˜q™6 # 2˜;Ð&Ñ'Ü—’”r—v’v˜a “| Q§S¡SÓ)ˆAÜ—’˜¨uÑ5ˆAàˆr   c                 ó®   • U R                  U5       nU" U6   S S S 5        U R                  U[        WR                  5      5        g ! , (       d  f       N4= fr   )r‡   rQ   rR   r‰   )r0   rc   rd   rŒ   Úerrr‹   s         r   Úassert_errorÚTestLinalgBase.assert_error  s@   € Ø×Ñ˜sÔ# vÙ�4‰L÷ $à�‰�cœ3˜v×/Ñ/Ó0Õ1÷ $Õ#ús   ’AÁ
Ac                 ó^   • SnU R                  XU[        R                  R                  5        g )Nz.Last 2 dimensions of the array must be square.©rf  r   rå   ÚLinAlgError©r0   rc   rd   rŒ   s       r   Úassert_non_squareÚ TestLinalgBase.assert_non_square  s#   € Ø>ˆØ×Ñ˜% s¬B¯I©I×,AÑ,AÕBr   c                 óP   • SU-  nU R                  X#U[        R                  5        g )Nz9np.linalg.%s() only supported on float and complex arrays©rf  r
   r�   ©r0   Únamerc   rd   rŒ   s        r   Úassert_wrong_dtypeÚ!TestLinalgBase.assert_wrong_dtype  s$   € ØIÈDÑPˆØ×Ñ˜% s¬F×,>Ñ,>Õ?r   c                 óp   • U(       a  SOSnU< SU< S3nU R                  X#U[        R                  5        g )Nú	np.linalgr   Ú.z() only supported on 2-D arraysro  ©r0   rq  rc   rd   Ú	la_prefixÚprefixrŒ   s          r   Úassert_wrong_dimensionsÚ&TestLinalgBase.assert_wrong_dimensions  s-   € Þ )‘¨tˆÛ8>ÃÐEˆØ×Ñ˜% s¬F×,>Ñ,>Õ?r   c                 ó^   • SnU R                  XU[        R                  R                  5        g )Nz$Array must not contain infs or NaNs.ri  rk  s       r   Úassert_no_nan_or_infÚ#TestLinalgBase.assert_no_nan_or_inf  s#   € Ø4ˆØ×Ñ˜% s¬B¯I©I×,AÑ,AÕBr   c                 óŒ  • [        U[        5      (       a  U H  nU R                  X25        M     g[        U[        5      (       d  UR                  R
                  nUR                  R                  nSnU R                  XE-  U5        SnUS:X  a  U R                  XF5        gUS:X  a  U R                  XV5        g[        S5      eg)aæ  
This checks that in a computed result from numba (array, possibly tuple
of arrays) all the arrays are contiguous in memory and that they are
all at least one of "C_CONTIGUOUS" or "F_CONTIGUOUS". The computed
result of the contiguousness is then compared against a hardcoded
expected result.

got: is the computed results from numba
expected_contig: is "C" or "F" and is the expected type of
                contiguousness across all input values
                (and therefore tests).
z6Results are not at least one of all C or F contiguous.z0Computed contiguousness does not match expected.rk   rn   zUnknown contigN)	rN  ÚtupleÚassert_contig_sanityr   ru   rx   Úf_contiguousÚ
assertTruerˆ   )r0   rf   Úexpected_contigr   Úc_contigÚf_contigrŒ   s          r   r�  Ú#TestLinalgBase.assert_contig_sanity"  s­   € ô �cœ5×!Ñ!ã�Ø×)Ñ)¨!Ö=ò ô ˜c¤6×*Ñ*àŸ9™9×1Ñ1�ØŸ9™9×1Ñ1�ð O�Ø—‘ Ñ 3°SÔ9àH�Ø" cÓ)Ø—O‘O HÕ2Ø$¨Ó+Ø—O‘O HÕ2ä$Ð%5Ó6Ð6ð! +r   c                 óZ   • SnU R                  XU[        R                  R                  S9  g )Nz(Matrix is singular to machine precision.©re  ri  rk  s       r   Úassert_raise_on_singularÚ'TestLinalgBase.assert_raise_on_singularG  s&   € Ø8ˆØ×Ñ˜% s´·	±	×0EÑ0EÐÒFr   c                 ón  • U R                  UR                  S   UR                  S   5        [        R                  " UR                  S   UR                  S9nS[        R
                  " UR                  5      R                  -  nUc  SU-  nUc  SU-  n[        R                  R                  XX#5        g)z5
Checks if a matrix is equal to the identity matrix.
r˜   éþÿÿÿrj   é   Né
   éd   )	rT   ry   r   rS  r<   ÚfinfoÚ
resolutionÚtestingÚassert_allclose)r0   rf   ÚrtolÚatolrS  r’  s         r   Úassert_is_identity_matrixÚ(TestLinalgBase.assert_is_identity_matrixK  sŽ   € ð
 	×Ñ˜Ÿ™ 2™¨¯	©	°"©Ô6ä�fŠf�S—Y‘Y˜r‘]¨#¯)©)Ñ4ˆØœŸš #§)¡)Ó,×7Ñ7Ñ7ˆ
Ø‰<Ø˜
‘?ˆDØ‰<Ø˜Ñ#ˆDä
�
‰
×"Ñ" 3¨TÕ8r   c                 ó6   • SnU R                  XU[        5        g)z%
For use in norm() and cond() tests.
z Invalid norm order for matrices.N)rf  rˆ   rk  s       r   Úassert_invalid_norm_kindÚ'TestLinalgBase.assert_invalid_norm_kind[  s   € ð 1ˆØ×Ñ˜% s¬JÕ7r   c                 ó^   • SnU R                  XU[        R                  R                  5        g )NzArrays cannot be emptyri  rk  s       r   Úassert_raise_on_emptyÚ$TestLinalgBase.assert_raise_on_emptyb  s#   € Ø&ˆØ×Ñ˜% s¬B¯I©I×,AÑ,AÕBr   rÖ   )NN©T)r×   rØ   rÙ   rÚ   rÛ   r   rš   r›   rÜ   rÝ   r™   r.   r>   rb  rˆ   rf  rl  rr  rz  r}  r�  rŠ  r—  rš  r�  rà   rá   râ   s   @r   r9  r9  ¢  sƒ   ø† ñð
 �j‰j˜"Ÿ*™* b§m¡m°R·\±\ÐB€Fõ,ò
2ð <@ôRðh 2<ô 2ò
Cò@ô@ò
Cò#7òJGô9ò 8÷Cð Cr   r9  c                   ó   • \ rS rSrSrS rSrg)ÚTestTestLinalgBaseig  zz
The sample matrix code TestLinalgBase.specific_sample_matrix()
is a bit involved, this class tests it works as intended.
c                 óL  ^ ^• [        S5      m/ SQn[        UTR                  S5       GHÛ  u  p#nUu  pV[        XV5      nTR	                  X#U5      nT R                  UR                  U5        T R                  [        R                  R                  U5      U5        US:”  a`  US-
  n	TR	                  X#XIS9nT R                  UR                  U5        T R                  [        R                  R                  U5      U	5        S[        R                  " U5      R                  -  n
TR	                  X#U5      nT R                  UR                  U5        [        R                  R                  [        R                  R                  U5      SU
U
S9  US:”  d  GMp  S	nTR	                  X#XKS
9nT R                  UR                  U5        [        R                  R                  [        R                  R                  U5      S	U
U
S9  GMÞ     [        4UU 4S jjnT R!                  ["        5       nSnU" S[        R$                  S4U[        S9  S S S 5        SnU" S[        R$                  S4U[        S9  SnU" S[        R$                  S4U[        S9  SnU" S[        R&                  S4U[        S9  SnU" S[        R$                  SSS4U[        S9  SnU" S[        R$                  SS S4U[        S9  SnU" S[        R$                  S4U[        S9  SnU" S[        R$                  SS4U[        S9  SnU" S[        R$                  SS4U[        S9  SnU" S[        R$                  SS S4U[        S9  S nU" S[        R$                  SS!4U[        S9  g ! , (       d  f       GNO= f)"Nrb  ©©é   r   ©é   rŽ  ©rŽ  r§  ©r•   r•   ©r   r¥  ÚFCr   ©rU  rŽ  r?  ©r•  r–  ç      $@©rV  c                 óÄ   >• TR                  U5       nTR                  " U 6   S S S 5        TR                  U[        WR                  5      5        g ! , (       d  f       N4= fr   )r‡   rb  rQ   rR   r‰   )rd   rŒ   re  r‹   Úinstr0   s       €€r   Úcheck_errorÚCTestTestLinalgBase.test_specific_sample_matrix.<locals>.check_errorœ  sH   ø€ Ø×"Ñ" 3Ô'¨6Ø×+Ò+¨TÑ2÷ (à�M‰M˜#œs 6×#3Ñ#3Ó4Õ5÷ (Õ'ús   “AÁ
AÚblankr¬   rn   r‰  r@  ©r   rA  ÚzrB  rC  rD  r˜   rE  )r­   éýÿÿÿrF  rH  rÁ   rI  )r   r•   r�  rG  g      ø?)r9  r   r™   rM  rb  rT   ry   r   rå   r%  r‘  r’  r“  r”  r   rˆ   r‡   ÚAssertionErrorrš   Úint32)r0   Úsizesro   r<   rm   rC   r;   rX  r  rU  r’  rV  r²  r‹   rŒ   r±  s   `              @r   Útest_specific_sample_matrixÚ.TestTestLinalgBase.test_specific_sample_matrixm  sM  ù€ ô Ð6Ó7ˆâ:ˆô #*¨%°·±¸d×"CÑˆD˜à‰DˆAÜ˜“IˆEð ×+Ñ+¨D¸Ó?ˆAØ×Ñ˜QŸW™W dÔ+Ø×ÑœRŸY™Y×2Ñ2°1Ó5°uÔ=ð �q‹yØ˜q‘y�Ø×/Ñ/°¸UÐ/ÐN�Ø× Ñ  §¡¨$Ô/Ø× Ñ ¤§¡×!6Ñ!6°qÓ!9¸4Ô@àœRŸXšX e›_×7Ñ7Ñ7ˆJð ×+Ñ+¨D¸Ó?ˆAØ×Ñ˜QŸW™W dÔ+Ü�J‰J×&Ñ&¤r§y¡y§~¡~°aÓ'8Ø')Ø,6Ø,6ð 'ñ 8ð �qŽyØ�	Ø×/Ñ/Ø ð 0ð =�à× Ñ  §¡¨$Ô/Ü—
‘
×*Ñ*¬2¯9©9¯>©>¸!Ó+<Ø+.Ø0:Ø0:ð +ô <ñC #DôN (2÷ 	6ð 	6ð ×Ñœ~Ô.°&ØˆCÙ˜¤§¡¨SÐ1°3¼JÒG÷ /ð /ˆÙ�Tœ2Ÿ:™: sÐ+¨S´jÒAð 1ˆÙ�VœRŸZ™Z¨Ð-¨s¼
ÒCð ;ˆÙ�VœRŸX™X sÐ+¨S´jÒAð @ˆÙ�VœRŸZ™Z¨¨a°Ð3°S¼jÒIð .ˆÙ�VœRŸZ™Z¨¨d°BÐ7¸Ä*ÒMð <ˆÙ�WœbŸj™j¨#Ð.°¼ÒDð 0ˆÙ�VœRŸZ™Z¨¨bÐ1°3¼JÒGð 3ˆÙ�VœRŸZ™Z¨¨aÐ0°#¼:ÒFð IˆÙ�VœRŸZ™Z¨¨d°BÐ7¸Ä*ÒMð &ˆÙ�VœRŸZ™Z¨¨cÐ2°C¼ZÓH÷Y /Ö.ús   È, NÎ
N#rÖ   N)r×   rØ   rÙ   rÚ   rÛ   r»  rà   rÖ   r   r   r¡  r¡  g  s   † ñõ
aIr   r¡  c                   ó8   • \ rS rSrSr\S 5       r\S 5       rSrg)ÚTestLinalgInviÑ  z
Tests for np.linalg.inv.
c           	      óB  ^ ^• Sn[        SS9" [        5      mUU 4S jn[        T R                  S5       H   u  p4T R	                  X4X45      nU" U5        M"     U" [
        R                  " S5      5        T R                  T[
        R                  " S5      45        T R                  ST[
        R                  " S	[
        R                  S
945        T R                  ST[
        R                  " S5      45        T R                  T[
        R                  " S	5      45        g)z
Test np.linalg.inv
r�  Tr–   c                 óv  >• [        U 5      nT" U 5      nTR                  US5        Sn [        R                  R	                  X2SS9  U(       a'  [        R                  " X05      nTR                  U5        TR                  5          T" U 5        S S S 5        g ! [
         a    Sn N^f = f! , (       d  f       g = f)Nrn   Fr�  ©ÚnulpT)	rè   r�  r   r“  Úassert_array_almost_equal_nulpr¸  r   r—  ra   )r   Úkwargsre   rf   Úuse_reconstructionÚrecrc   r0   s         €€r   ÚcheckÚ,TestLinalgInv.test_linalg_inv.<locals>.checkÞ  s«   ø€ Ü$ QÓ'ˆHÙ˜“(ˆCØ×%Ñ% c¨3Ô/à!&Ðð*Ü—
‘
×9Ñ9¸#Ø?Að :ñ Cö "Ü—f’f˜S“n�Ø×.Ñ.¨sÔ3ð ×%Ñ%Õ'Ù�a”÷ (Ð'øô "ó *à%)Ò"ð*ú÷ (Õ'ús   ªB Â	B*ÂB'Â&B'Â*
B8r©   ©r   r   r¬   ræ   ©r­   r­   rj   N)r   rè   r   r™   rb  r   rq   rl  Úonesrr  r¹  rz  rŠ  rQ  )r0   r;   rÇ  r<   rm   r   rc   s   `     @r   Útest_linalg_invÚTestLinalgInv.test_linalg_invÖ  sè   ù€ ð
 ˆÜ˜TÒ"¤=Ó1ˆö	ô. $ D§K¡K°Ö6‰LˆEØ×+Ñ+¨Q¨F°EÓAˆAÙ�!ŽHñ 7ñ
 	Œb�hŠh�vÓÔð 	×Ñ˜u¤r§w¢w¨v£Ð&8Ô9ð 	×Ñ  uÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×$Ñ$ U¨E´B·G²G¸B³K°>ÔBð 	×%Ñ% e¬b¯hªh°vÓ.>Ð-@ÕAr   c                 ó€  • [         R                  " / SQ/ SQ/ SQ/ SQ/SS9n[         R                  " U5      n[        SS9S	 5       nUR	                  US
5      n[         R
                  R                  X5        U" US
5      n[         R
                  R                  X5        [         R
                  R                  XE5        g )N©r?  r•   r­   r¥  ©éûÿÿÿrÁ   r­   r•   ©é	   r·  r   r   ©r­   r�  r­   é   rn   rl   Tr–   c                 ód   • U(       a  U SS2S S 24   n [         R                  R                  U 5      $ ©Nr   r­   rä   ©ÚXÚtests     r   ÚainvÚ2TestLinalgInv.test_no_input_mutation.<locals>.ainv  ó)   € æà�a˜�cš1�f‘I�Ü—9‘9—=‘= Ó#Ð#r   F©r   rT  r‚   r   rÓ   r“  r”  )r0   rÙ  ÚX_origrÛ  re   rf   s         r   Útest_no_input_mutationÚ$TestLinalgInv.test_no_input_mutation	  sž   € ä�HŠH’nÚ$Ú$Ú$ð&ð .1ñ2ˆô
 —’˜“ˆä	�dÑ	ñ	$ó 
ð	$ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1Ô-á�1�e‹nˆÜ
�
‰
×"Ñ" 1Ô-ä
�
‰
×"Ñ" 8Õ1r   rÖ   N)	r×   rØ   rÙ   rÚ   rÛ   r   rÌ  rà  rà   rÖ   r   r   r¾  r¾  Ñ  s2   † ñð ñ0Bó ð0Bðd ñ2ó ó2r   r¾  c                   ó4   • \ rS rSrSrS rS r\S 5       rSr	g)ÚTestLinalgCholeskyi"  z
Tests for np.linalg.cholesky.
c                 ó¶  • [         R                  R                  S5        [         R                  R                  X5      n[         R                  R                  U5      u  pV[         R                  " SUS-   5      n[         R                  " [         R                  " UR                  [         R                  " U5      5      U5      n[         R                  " X‚US9nU$ )Nr   r   rJ  )r   rK  rL  Úrandrå   r  r6   r   r¯   ÚdiagrT  )	r0   rC   r<   rm   r  Úqr]  ÚLr[  s	            r   rD   Ú TestLinalgCholesky.sample_matrix'  s‰   € ä
�	‰	�‰�qÔÜ�I‰I�N‰N˜1Ó ˆô �y‰y�|‰|˜A‹‰ˆÜ�IŠI�a˜˜Q™ÓˆÜ�FŠF”2—6’6˜!Ÿ#™#œrŸwšw q›zÓ*¨AÓ.ˆÜ�HŠH�Q¨5Ñ1ˆØˆr   c                 ó^   • SnU R                  XU[        R                  R                  5        g )Nz Matrix is not positive definite.ri  rk  s       r   Úassert_not_pdÚ TestLinalgCholesky.assert_not_pd3  s#   € Ø0ˆØ×Ñ˜% s¬B¯I©I×,AÑ,AÕBr   c           	      ó²  ^ ^• Sn[        SS9" [        5      mUU 4S jn[        T R                  S5       H  u  p4T R	                  XU5      nU" U5        M!     U" [
        R                  " S5      5        SnT R                  T[
        R                  " S[
        R                  S	945        T R                  UT[
        R                  " S
[
        R                  S	945        T R                  UT[
        R                  " S[
        R                  S	945        T R                  T[
        R                  " S[
        R                  S	9R                  SS5      45        g)z
Test np.linalg.cholesky
r�  Tr–   c                 ó,  >• [        U 5      nT" U 5      nSnTR                  US5         [        R                  R	                  X!SS9  U(       a‚  [        R                  " U[        R                  " UR                  5      5      nS[        R                  " U R                  5      R                  -  n[        R                  R                  U UUUS9  TR                  5          T" U 5        S S S 5        g ! [
         a    Sn N¹f = f! , (       d  f       g = f)NFrk   r�  rÁ  TrŽ  r­  )rì   r�  r   r“  rÃ  r¸  r   Úconjr¯   r‘  r<   r’  r”  ra   )r   re   rf   rÅ  rÆ  r’  rc   r0   s         €€r   rÇ  Ú6TestLinalgCholesky.test_linalg_cholesky.<locals>.check?  sì   ø€ Ü& qÓ)ˆHÙ˜“(ˆCØ!&Ðà×%Ñ% c¨3Ô/ð*Ü—
‘
×9Ñ9¸#Ø?Að :ñ Cö "Ü—f’f˜S¤"§'¢'¨#¯%©%£.Ó1�Ø¤§¢¨!¯'©'Ó!2×!=Ñ!=Ñ=�
Ü—
‘
×*Ñ*ØØØ#Ø#ð	 +ñ ð ×%Ñ%Õ'Ù�a”÷ (Ð'øô! "ó *à%)Ò"ð*ú÷  (Õ'ús   ªC3 Ã!	DÃ3DÄDÄ
Dr«  rÉ  rë   r¬   rj   rÊ  rÁ   r­   N)r   rì   r   r™   rD   r   rq   rl  rË  rš   rr  r¹  rz  rë  rB   )r0   r;   rÇ  r<   rm   r   Úrnrc   s   `      @r   Útest_linalg_choleskyÚ'TestLinalgCholesky.test_linalg_cholesky7  s  ù€ ð
 ˆÜ˜TÒ"¤?Ó3ˆö	ô< $ D§K¡K°Ö6‰LˆEØ×"Ñ" 1¨UÓ3ˆAÙ�!ŽHñ 7ñ
 	Œb�hŠh�vÓÔàˆà×Ñ˜u¤r§w¢w¨v¼R¿Z¹ZÑ'HÐ&JÔKð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×$Ñ$ R¨Ü&(§g¢g¨b¼¿
¹
Ñ&CÐ%Eô	Gð 	×Ñ˜5ÜŸGšG A¬R¯Z©ZÑ8×@Ñ@ÀÀAÓFÐHõ	Jr   rÖ   N)
r×   rØ   rÙ   rÚ   rÛ   rD   rë  r   rò  rà   rÖ   r   r   rã  rã  "  s(   † ñò
òCð ñ:Jó ó:Jr   rã  c                   ó†   • \ rS rSrSrS rS rS r SS jr\	S 5       r
\	S	 5       r\	S
 5       r\	S 5       r\	S 5       rSrg)ÚTestLinalgEigenSystemsiu  z"
Tests for np.linalg.eig/eigvals.
c                 ó²  • U R                  X5      n[        R                  " U5      n[        R                  " [        R                  " UR
                  S   UR
                  S   S5      5      nUSS  XV'   [        R                  " [        R                  " UR
                  S   UR
                  S   S5      5      nUS S XV'   [        R                  " XRUS9nU$ )Nr   r   r˜   rJ  )r>   r   ræ  rR  rS  ry   rT  )r0   rC   r<   rm   Úvr[  ra  s          r   rD   Ú$TestLinalgEigenSystems.sample_matrixz  s¤   € à×Ñ˜qÓ(ˆÜ�GŠG�A‹JˆÜ�jŠjœŸš §¡¨¡
¨A¯G©G°A©J¸Ó:Ó;ˆØ�1�2�ˆ‰Ü�jŠjœŸš §¡¨¡
¨A¯G©G°A©J¸Ó;Ó<ˆØ�3�B�ˆ‰Ü�HŠH�Q¨5Ñ1ˆØˆr   c                 ó2   • US-   nU R                  X#U5        g )Nz+() argument must not cause a domain change.)rf  rp  s        r   Úassert_no_domain_changeÚ.TestLinalgEigenSystems.assert_no_domain_change…  s   € ØÐBÑBˆØ×Ñ˜% sÕ+r   c                 ó    ^ ^^^• UUUU 4S jnU$ )Nc                  óî  >• TR                   " U 6 nT" U 6 nU S   nTR                  [        U5      [        U5      5        Sn[        U[        5      (       a  SnTR                  [        U5      T5        OTR                  UR
                  T5        TR                  US5        Sn[        [        U5      5       H'  n [        R                  R                  X&   X   SS9  M)     S[        R                  " UR                  5      R                  -  nU(       Ga  U(       GaË  Uu  p‰TS   S	:X  aù  [        R                  " [        R                   " UR"                  S   UR"                  S
   S5      5      n
[        R                  " [        R                   " UR"                  S   UR"                  S
   S
5      5      nT" U 6   [        R$                  " X:   5      X;'   [        R&                  " [        R(                  " U5      5      U[        R*                  " UR"                  S   5      '   [        R,                  " X95      n[        R,                  " U	[        R(                  " U5      5      n[        R                  R/                  UR&                  UR&                  UUS9  [        R0                  " U	5      (       a4  [        R                  R/                  UR2                  UR2                  UUS9  OH[        R                  R/                  [        R4                  " U5      [        R4                  " U5      UUS9  TR7                  5          T" U 6   S S S 5        g ! [         a    Sn GMª  f = f! , (       d  f       g = f)Nr   FTrn   r�  rÁ  rŽ  r˜   Úhr   r­  )rÓ   rT   rN   rN  r€  Úndimr�  rs   r   r“  rÃ  r¸  r‘  r<   r’  rR  rS  ry   rï  Úrealræ  Údiag_indicesr   r”  ÚiscomplexobjÚimagÚsortra   )rd   re   rf   r   Úres_is_tuplerÅ  r¼   r’  r[   r÷  ÚidxlÚidxuÚlhsÚrhsrc   Úexpected_res_lenrq  r0   s                 €€€€r   rÇ  Ú3TestLinalgEigenSystems._check_worker.<locals>.check‹  s¨  ø€ Ø—}’} dÐ+ˆHÙ˜�,ˆCØ�Q‘ˆAà×ÑœS ›]¬C°«HÔ5à ˆLÜ˜#œu×%Ñ%Ø#�Ø× Ñ ¤ S£Ð+;Õ<à× Ñ  §¡Ð+;Ô<ð ×%Ñ% c¨3Ô/à!&Ðäœ3˜x›=Ö)�ð.Ü—J‘J×=Ñ=Ø™ ¡°"ð >ó 6ñ *ð$ œRŸXšX a§g¡gÓ.×9Ñ9Ñ9ˆJß!ßØ‘D�Að ˜B‘x 3“Ü!Ÿzšz¬"¯&ª&°·±¸±¸Q¿W¹WÀQ¹ZÈÓ*LÓM˜Ü!Ÿzšz¬"¯&ª&°·±¸±¸Q¿W¹WÀQ¹ZÈÓ*KÓL˜Ù˜t™ô #%§'¢'¨!©'Ó"2˜™ô :<¿ºÄÇÂÈÃÓ9L˜œ"Ÿ/š/¨!¯'©'°!©*Ó5Ñ6äŸ&š& ›,�CÜŸ&š& ¤B§G¢G¨A£JÓ/�Cä—J‘J×.Ñ.ØŸ™ØŸ™Ø'Ø'ð	 /ñ ô —’ q×)Ñ)ÜŸ
™
×2Ñ2ØŸH™HØŸH™HØ!+Ø!+ð	 3ñ øô —J‘J×.Ñ.ÜŸš Ó)ÜŸš ›Ø'Ø'ð	 /ñ ð ×%Ñ%Õ'Ù�t‘÷ (Ð'øôG &ó .à)-Ô&ð.ú÷F (Õ'ús   Â<#MÍM&ÍM#Í"M#Í&
M4rÖ   )r0   rc   rq  r
  Úcheck_for_domain_changerÇ  s   ````  r   Ú_check_workerÚ$TestLinalgEigenSystems._check_worker‰  s   û€ ÷[	ð [	ðx ˆr   Nc           
      óh  • Sn[        SS9" U5      nU R                  XaUU5      n[        U R                  S5       H  u  p‰U R	                  XXU	5      n
U" U
5        M!     [
        R                  [
        R                  4 Hæ  nU" [
        R                  " SUS95        U R                  U[
        R                  " SUS945        U R                  X[
        R                  " S[
        R                  S945        U R                  X[
        R                  " SUS945        U R                  U[
        R                  " S	S
/[
        R                   [
        R"                  //US945        Mè     U(       aÄ  [
        R                  " SS/SS//5      nU" UR%                  [
        R&                  5      5        U" U5      u  pÞU R)                  [
        R*                  " UR,                  5      5        [
        R                  [
        R.                  4 H%  nU R1                  XUR%                  U5      45        M'     gg)z
Test np.linalg.eig
r�  Tr–   r«  rÉ  rj   r¬   rÊ  r?  ç       @r   r�  r­   N)r   r  r   r™   rD   r   r›   rÝ   rq   rl  rË  rr  r¹  rz  r}  rT  ÚinfÚnanr9   rÜ   rƒ  Úanyr  rš   rú  )r0   rq  Úfuncr
  r  r;   rc   rÇ  r<   rm   r   Útyr  Úlr]  s                  r   Úchecker_for_linalg_eigÚ-TestLinalgEigenSystems.checker_for_linalg_eigé  sÈ  € ð
 ˆÜ˜TÒ" 4Ó(ˆØ×"Ñ" 5Ð0@Ø#:ó<ˆô
 $ D§K¡K°Ö6‰LˆEØ×"Ñ" 1¨UÓ3ˆAÙ�!ŽHñ 7ô
 —:‘:œrŸ|™|Ó,ˆBñ ”"—(’(˜6¨Ñ,Ô-ð ×"Ñ" 5¬2¯7ª7°6ÀÑ+DÐ*FÔGð ×#Ñ# DÜ%'§W¢W¨V¼2¿8¹8Ñ%DÐ$FôHð ×(Ñ(¨´r·w²w¸rÈÑ7LÐ6NÔOð ×%Ñ% eÜ')§x¢x°"°b°¼b¿f¹fÄbÇfÁfÐ=MÐ0NØ68ñ(:ð '<ö=ñ! -ö( #ô —’˜1˜b˜' A q 6Ð*Ó+ˆAÙ�!—(‘(œ2Ÿ=™=Ó)Ô*á˜“7‰DˆAØ�O‰OœBŸFšF 1§6¡6›NÔ+ô —z‘z¤2§:¡:Ó.�Ø×,Ñ,¨T¸1¿8¹8ÀB»<¸/ÖJò /ð- #r   c                 ó4   • U R                  S[        SS5        g )Nrï   r­   T)r  rð   r    s    r   Útest_linalg_eigÚ&TestLinalgEigenSystems.test_linalg_eig'  s   € à×#Ñ# E¬:°q¸$Õ?r   c                 ó4   • U R                  S[        SS5        g )Nrò   r   T)r  ró   r    s    r   Útest_linalg_eigvalsÚ*TestLinalgEigenSystems.test_linalg_eigvals+  s   € à×#Ñ# I¬~¸qÀ$ÕGr   c                 ó4   • U R                  S[        SS5        g )Nrö   r­   F)r  r÷   r    s    r   Útest_linalg_eighÚ'TestLinalgEigenSystems.test_linalg_eigh/  s   € à×#Ñ# F¬K¸¸EÕBr   c                 ó4   • U R                  S[        SS5        g )Nrú   r   F)r  rû   r    s    r   Útest_linalg_eigvalshÚ+TestLinalgEigenSystems.test_linalg_eigvalsh3  s   € à×#Ñ# J´ÀÀEÕJr   c           
      óz  ^• S GH!  nUu  p#n[        [        R                  U5      m[        SS9U4S j5       nU R	                  XRX45      n[        R
                  [        R                  4 H¶  nU R                  TUS9   [        R                  " / SQ/ SQ/ SQ/ S	Q/S
US9n[        R                  " U5      n	UR                  US5      n
[        R                  R                  X‰5        U" US5      n[        R                  R                  X‰5        U" US5        S S S 5        M¸     GM$     g ! , (       d  f       MÏ  = f)N))rï   r­   T)rò   r   T)rö   r­   F)rú   r   FTr–   c                 ó8   >• U(       a  U SS2S S 24   n T" U 5      $ r×  rÖ   )rÙ  rÚ  Úmeths     €r   r  Ú;TestLinalgEigenSystems.test_no_input_mutation.<locals>.funcD  s    ø€ æà˜!˜A˜#šq˜&™	�AÙ˜A“w�r   )r'  r<   )r®  r   r   r   )r   rÓ  r   r   )r   r   rÕ  r   )r   r   r   r¥  rn   )rm   r<   F)Úgetattrr   rå   r   r  rš   rÜ   ÚsubTestrT  r‚   rÓ   r“  r”  )r0   ÚcrC   ÚnoutÚdomain_changer  rÇ  r<   rÙ  rß  re   rf   r'  s               @r   rà  Ú-TestLinalgEigenSystems.test_no_input_mutation7  s  ø€ ô*ˆAð
 &'Ñ"ˆA�]äœ2Ÿ9™9 aÓ(ˆDä˜$Ñôó  ðð ×&Ñ& t°ÓDˆEäŸ*™*¤b§m¡mÓ4�Ø—\‘\ t°5�\Ò9ô Ÿš¢.Ú ,Ú ,Ú ,ð""ð *-°Eñ	;�Aô  ŸWšW Q›Z�Fà#Ÿ|™|¨A¨uÓ5�HÜ—J‘J×.Ñ.¨qÔ9á˜q %›.�CÜ—J‘J×.Ñ.¨qÔ9á˜!˜U”O÷# :Ñ9ô 5ò%*÷& :Ö9ús   Á>BD+Ä+
D:rÖ   r   )r×   rØ   rÙ   rÚ   rÛ   rD   rú  r  r  r   r  r  r   r#  rà  rà   rÖ   r   r   rõ  rõ  u  s’   † ñò	ò,ò^ðB IMô<Kð| ñ@ó ð@ð ñHó ðHð ñCó ðCð ñKó ðKð ñ'$ó ó'$r   rõ  c                   ó>   • \ rS rSrSrS r\S 5       r\S 5       rSr	g)ÚTestLinalgSvdib  z
Tests for np.linalg.svd.
c                 ó  • Uu  pEn[        [        U5      5       H-  nU R                  X'   R                  X7   R                  5        M/     [        R
                  " UR                  S   UR                  S   45      n[        R                  " X…5        [        R                  " [        R                  " XH5      U5      n	[        R                  " UR                  5      R                  n
[        R                  R                  UU	SU
-  SU
-  S9  g )Nr   r   r�  r�  r­  )rs   rN   rT   ry   r   rQ  Úfill_diagonalr   r‘  r<   r’  r“  r”  )r0   r   rf   re   Úur_  Úvtr¼   ÚsrÆ  r’  s              r   Úcheck_reconstructionÚ"TestLinalgSvd.check_reconstructionm  sÍ   € Ø‰	ˆˆrô ”s˜8“}Ö%ˆAØ×Ñ˜S™VŸ\™\¨8©;×+<Ñ+<Ö=ñ &ô �HŠH�a—g‘g˜a‘j "§(¡(¨1¡+Ð.Ó/ˆÜ
×Ò˜Ôä�fŠf”R—V’V˜A“\ 2Ó&ˆÜ—X’X˜aŸg™gÓ&×1Ñ1ˆ
Ü
�
‰
×"Ñ"ØØØ�j‘Ø�zÑ!ð	 	#ò 	
r   c           	      ó¦  ^ ^• [        SS9" [        5      mUU 4S jn/ SQnSn[        UT R                  US5       H  u  pEpgT R	                  XEU5      nU" X†S9  M      Sn	T R                  U	T[        R                  " S	[        R                  S
945        T R                  U	T[        R                  " S[        R                  S
945        T R                  T[        R                  " SS/[        R                  [        R                  //[        R                  S
945        S H-  n
[        R                  " U
5      S4nT R!                  TU5        M/     g)z
Test np.linalg.svd
Tr–   c                 ó  >• [        U 40 UD6nT" U 40 UD6nTR                  [        U5      [        U5      5        TR                  [        U5      S5        TR                  US5        Sn[	        [        U5      5       H'  n [
        R                  R                  X5   X%   SS9  M)     U(       a  TR                  XU5        TR                  5          T" U 40 UD6  S S S 5        g ! [         a    Sn Mv  f = f! , (       d  f       g = f)Nr•   rn   Fr�  rÁ  T)r   rT   rN   r�  rs   r   r“  rÃ  r¸  r6  ra   )r   rÄ  re   rf   rÅ  r¼   rc   r0   s         €€r   rÇ  Ú,TestLinalgSvd.test_linalg_svd.<locals>.checkˆ  sõ   ø€ Ü! !Ñ. vÑ.ˆHÙ˜Ñ$˜VÑ$ˆCà×ÑœS ›]¬C°«HÔ5à×ÑœS ›X qÔ)à×%Ñ% c¨3Ô/à!&Ðäœ3˜x›=Ö)�ð.Ü—J‘J×=Ñ=Ø™ ¡°"ð >ó 6ñ *ö "Ø×)Ñ)¨!°(Ô;ð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (Ð'øô &ó .à)-Ó&ð.ú÷ (Õ'ús   Â#C%Ã
C8Ã%C5Ã4C5Ã8
D)r¤  )r¥  rŽ  )rŽ  r¥  r©  rª  )TFr«  )rÿ   rþ   rÊ  rj   r�  r?  r  ©©r   r   ©r   r   rÉ  N)r   r   r   r™   rb  rr  r   rË  r¹  rz  rš   r}  rT  r  r  rq   r�  )r0   rÇ  rº  rÿ   ro   r<   Úfmatrm   r   rñ  Úszrd   rc   s   `           @r   Útest_linalg_svdÚTestLinalgSvd.test_linalg_svd�  s3  ù€ ô
 ˜TÒ"¤:Ó.ˆö	#ò< 9ˆð &ˆô ˜˜tŸ{™{¨M¸4Ö@ñ %ˆD˜ð ×+Ñ+¨D¸Ó?ˆAÙ�!Ô(ñ Að
 ˆð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×$Ñ$ R¨Ü&(§g¢g¨b¼¿
¹
Ñ&CÐ%Eô	Gð 	×!Ñ! %Ü#%§8¢8¨b°"¨Z¼"¿&¹&Ä"Ç&Á&Ð9IÐ,JÜ24·*±*ñ$>ð #@ô	Aó +ˆBÜ—H’H˜R“L $Ð'ˆDØ×&Ñ& u¨dÖ3ò +r   c                 óî  • [         R                  " / SQ/ SQ/ SQ/ SQ/SS9n[         R                  " U5      n[        SS9S	 5       nUR	                  US
5      n[         R
                  R                  X5        U" US
5      n[         R
                  R                  X5         [        XE5       H$  u  pg[         R
                  R                  Xg5        M&     g ! [         a    U R                  XU5         g f = f)NrÏ  rÐ  rÒ  rÔ  rn   rl   Tr–   c                 ód   • U(       a  U SS2S S 24   n [         R                  R                  U 5      $ r×  rý   rØ  s     r   r  Ú2TestLinalgSvd.test_no_input_mutation.<locals>.funcÎ  rÝ  r   F)
r   rT  r‚   r   rÓ   r“  r”  Úzipr¸  r6  ©r0   rÙ  rß  r  re   rf   Úe_aÚg_as           r   rà  Ú$TestLinalgSvd.test_no_input_mutationÅ  sÓ   € ä�HŠH’nÚ$Ú$Ú$ð&ð .1ñ2ˆô
 —’˜“ˆä	�dÑ	ñ	$ó 
ð	$ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1Ô-á�1�e‹nˆÜ
�
‰
×"Ñ" 1Ô-ð	8Ü Ö.‘�Ü—
‘
×*Ñ*¨3Ö4ò /øäó 	8Ø×%Ñ% a¨hÖ7ð	8ús   Â!3C ÃC4Ã3C4rÖ   N)
r×   rØ   rÙ   rÚ   rÛ   r6  r   r@  rà  rà   rÖ   r   r   r0  r0  b  s7   † ñò
ð( ñA4ó ðA4ðF ñ8ó ó8r   r0  c                   ó8   • \ rS rSrSr\S 5       r\S 5       rSrg)ÚTestLinalgQriâ  z
Tests for np.linalg.qr.
c           	      óž  ^ ^	• [        SS9" [        5      m	U	U 4S jn/ SQn[        UT R                  S5       H   u  p4nT R	                  X4U5      nU" U5        M"     SnT R                  UT	[        R                  " S[        R                  S945        T R                  UT	[        R                  " S	[        R                  S945        T R                  T	[        R                  " S
S/[        R                  [        R                  //[        R                  S945        S H*  nT R                  T	[        R                   " U5      45        M,     g)z
Test np.linalg.qr
Tr–   c                 óÖ  >• [        U 40 UD6nT
" U 40 UD6nTR                  [        U5      [        U5      5        TR                  [        U5      S5        TR                  US5        Sn[	        [        U5      5       H'  n [
        R                  R                  X5   X%   SS9  M)     U(       aó  Uu  pg[	        [        U5      5       H-  nTR                  X5   R                  X%   R                  5        M/     [
        R                  " Xg5      n[
        R                  " U R                  5      R                  n	[
        R                  R                  U USU	-  SU	-  S9  TR                  [
        R                  " [
        R                   " UR"                  5      U5      5        TR%                  5          T
" U 40 UD6  S S S 5        g ! [         a    Sn GMX  f = f! , (       d  f       g = f)	Nr­   rn   Fr�  rÁ  Tr�  r­  )r  rT   rN   r�  rs   r   r“  rÃ  r¸  ry   r   r‘  r<   r’  r”  r—  Ú	conjugater¯   ra   )r   rÄ  re   rf   rÅ  r¼   rç  ÚrrÆ  r’  rc   r0   s             €€r   rÇ  Ú*TestLinalgQr.test_linalg_qr.<locals>.checkî  sž  ø€ Ü  Ñ- fÑ-ˆHÙ˜Ñ$˜VÑ$ˆCð ×ÑœS ›]¬C°«HÔ5à×ÑœS ›X qÔ)à×%Ñ% c¨3Ô/à!&Ðäœ3˜x›=Ö)�ð.Ü—J‘J×=Ñ=Ø™ ¡°"ð >ó 6ñ *ö  "Ø‘�ô œs 8›}Ö-�AØ×$Ñ$ S¡V§\¡\°8±;×3DÑ3DÖEñ .ô —f’f˜Q“l�ÜŸXšX a§g¡gÓ.×9Ñ9�
Ü—
‘
×*Ñ*ØØØ˜j™Ø˜zÑ)ð	 +ñ ð ×.Ñ.¬r¯vªv´b·l²lÀ1Ç3Á3Ó6GÈÓ/KÔLð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (Ð'øôC &ó .à)-Ô&ð.ú÷B (Õ'ús   Â#GÆ3
GÇGÇGÇ
G(r£  r«  r  rÊ  rj   r�  r?  r  r;  N)r   r  r   r™   rb  rr  r   rË  r¹  rz  rš   r}  rT  r  r  r�  rq   )
r0   rÇ  rº  ro   r<   rm   r   rñ  r?  rc   s
   `        @r   Útest_linalg_qrÚTestLinalgQr.test_linalg_qrç  s  ù€ ô
 ˜TÒ"¤9Ó-ˆö3	#òn ;ˆô ˜˜tŸ{™{¨DÖ1ñ ˆD˜à×+Ñ+¨D¸Ó?ˆAÙ�!ŽHñ 2ð ˆð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×$Ñ$ R¨Ü&(§g¢g¨b¼¿
¹
Ñ&CÐ%Eô	Gð 	×!Ñ! %Ü#%§8¢8¨b°"¨Z¼"¿&¹&Ä"Ç&Á&Ð9IÐ,JÜ24·*±*ñ$>ð #@ô	Aó
 +ˆBØ×&Ñ& u¬r¯xªx¸«|¨oÖ>ò +r   c                 ó¨  • [         R                  " / SQ/ SQ/ SQ/ SQ/SS9n[         R                  " U5      n[        SS9S	 5       nUR	                  US
5      n[         R
                  R                  X5        U" US
5      n[         R
                  R                  X5        [        XE5       H$  u  pg[         R
                  R                  Xg5        M&     g )NrÏ  rÐ  rÒ  rÔ  rn   rl   Tr–   c                 ód   • U(       a  U SS2S S 24   n [         R                  R                  U 5      $ r×  r  rØ  s     r   r  Ú1TestLinalgQr.test_no_input_mutation.<locals>.funcI  s(   € æà�a˜�cš1�f‘I�Ü—9‘9—<‘< “?Ð"r   F)r   rT  r‚   r   rÓ   r“  r”  rE  rF  s           r   rà  Ú#TestLinalgQr.test_no_input_mutation@  s¯   € ä�HŠH’nÚ$Ú$Ú$ð&ð .1ñ2ˆô
 —’˜“ˆä	�dÑ	ñ	#ó 
ð	#ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1Ô-á�1�e‹nˆÜ
�
‰
×"Ñ" 1Ô-ä˜HÖ*‰HˆCÜ�J‰J×&Ñ& sÖ0ò +r   rÖ   N)	r×   rØ   rÙ   rÚ   rÛ   r   rQ  rà  rà   rÖ   r   r   rK  rK  â  s2   † ñð ñV?ó ðV?ðp ñ1ó ó1r   rK  c                   ó.   • \ rS rSrSrSS jrS rS rSrg)	ÚTestLinalgSystemsiZ  zi
Base class for testing "system" solvers from np.linalg.
Namely np.linalg.solve() and np.linalg.lstsq().
c                 óp   • U(       a  SOSnU< SU< S3nU R                  X#U[        R                  5        g )Nru  r   rv  z%() only supported on 1 and 2-D arraysro  rw  s          r   Úassert_wrong_dimensions_1DÚ,TestLinalgSystems.assert_wrong_dimensions_1Da  s-   € Þ )‘¨tˆÛ>DÃdÐKˆØ×Ñ˜% s¬F×,>Ñ,>Õ?r   c                 ó^   • SnU R                  XU[        R                  R                  5        g )Nz<Incompatible array sizes, system is not dimensionally valid.ri  rk  s       r   Úassert_dimensionally_invalidÚ.TestLinalgSystems.assert_dimensionally_invalidg  s#   € ØLˆØ×Ñ˜% s¬B¯I©I×,AÑ,AÕBr   c                 óP   • SU-  nU R                  X#U[        R                  5        g )NzAnp.linalg.%s() only supports inputs that have homogeneous dtypes.ro  rp  s        r   Úassert_homogeneous_dtypesÚ+TestLinalgSystems.assert_homogeneous_dtypesl  s%   € ØQÐTXÑXˆØ×Ñ˜% s¬F×,>Ñ,>Õ?r   rÖ   NrŸ  )	r×   rØ   rÙ   rÚ   rÛ   rZ  r]  r`  rà   rÖ   r   r   rX  rX  Z  s   † ñô@òCõ
@r   rX  c                   ó8   • \ rS rSrSr\S 5       r\S 5       rSrg)ÚTestLinalgLstsqiq  z
Tests for np.linalg.lstsq.
c                 óF  ^ ^^^• [        SS9" [        5      mUU 4S jm/ SQn[        T R                  5      nSS/n[        U5      mSnUUU 4S jnU H�  n[	        U5      n[	        T5      nT R                  XgU5      n	U" X—5        Uu  p«[        X«5      nU
S	:w  d  MJ  US	:w  d  MR  US	-
  nT R                  XgX�S
9n	U" X—5        T R                  XgX„S9n	SU-  nXÎ-  nU" X—US9  M‘     SS/SS/SS/SS//nU HD  u  n	n[        R                  " U	5      [        R                  " U5      4nT R                  TU5        MF     [        R                  " SS/SS//[        R                  S9nTUU44  Sn[        R                  " S	S/SS//[        R                  S9nT R                  UTUU45        T R                  UTUU45        [        R                  " S	S/SS//[        R                  S9nT R                  UTUU45        T R                  UTUU45        [        R                  " S	S/[        R                  S9nT R!                  UTUU45        [        R                  " SS/[        R"                  [        R$                  //[        R                  S9nT R'                  TUU45        T R'                  TUU45        [        R                  " SS/[        R                  S9nTUU44  [        R                  " S	S/SS//SS/SS///[        R                  S9nT R)                  UTUU45        [        R                  " S/[        R                  S9n[        R                  " S/S/S//[        R                  S9nT R+                  TUU45        T R+                  TUU45        g) z
Test np.linalg.lstsq
Tr–   c           
      óž  >• [        X40 UD6nT" X40 UD6nTR                  [        U5      [        U5      5        TR                  [        U5      S5        TR                  US5        Sn TR                  US   US   5        [	        [        U5      5       H'  n [
        R                  R                  XF   X6   SS9  M)     U(       aÛ  Uu  pxpš/ SQn TR                  X“S   5        U HP  n[        X6   [
        R                  5      (       d  M&  TR                  XF   R                  X6   R                  5        MR     [
        R                  " U R                  5      R                   n [
        R"                  " X5      n[
        R                  R%                  UUSU-  SU-  S	9  TR/                  5          T" X40 UD6  S S S 5        g ! [         a    Sn GM@  f = f! [         a    Sn GN(f = f! [         a%    TR                  [        X“S   -
  5      S:  5         Nßf = f! [         Ga    U GH  n [
        R                  R%                  X6   XF   S
U-  S
U-  S	9  OG! [         a:    [
        R&                  R)                  U 5      nTR+                  SU-  SU-  5         Of = f[
        R&                  R-                  U[
        R"                  " XS   5      -
  5      n[
        R&                  R-                  U[
        R"                  " X5      -
  5      n[
        R                  R%                  UUSS9  GM      GN–f = f! , (       d  f       g = f)NrÁ   rk   Fr­   r�  rÁ  T)r   r   r•   r­  r�  r?  r   r®  ©r•  )r  rT   rN   r�  rs   r   r“  rÃ  r¸  rN  Úndarrayry   rƒ  Úabsr‘  r<   r’  r   r”  rå   r   ÚassertGreaterr  ra   )r  r	  rÄ  re   rf   rÅ  r¼   ÚxÚresrU  r5  Úout_array_idxr’  rÆ  r+  Úres_expectedÚres_gotrc   r0   s                    €€r   rÇ  Ú0TestLinalgLstsq.test_linalg_lstsq.<locals>.check†  s   ø€ Ü# AÑ3¨FÑ3ˆHÙ˜Ñ' Ñ'ˆCð ×ÑœS ›]¬C°«HÔ5à×ÑœS ›X qÔ)à×%Ñ% c¨3Ô/à!&Ðð
*Ø× Ñ   Q¡¨°!©Ô5äœs 8›}Ö-�Að2ÜŸ
™
×AÑAØ™F H¡K°bð Bó :ñ .ö "Ø"%‘�˜ò !*�ð	Aà×$Ñ$ T°A©;Ô7ã*˜Ü% h¡k´2·:±:×>Ó>Ø ×,Ñ,¨S©V¯\©\¸8¹;×;LÑ;LÖMñ +ô  ŸXšX a§g¡gÓ.×9Ñ9�
ð$=ô Ÿ&š& ›,�CÜ—J‘J×.Ñ.ØØØ *™_Ø *™_ð	 /ñ ðF ×%Ñ%Õ'Ù�aÑ%˜fÒ%÷ (Ð'øôA *ó 2à-1Ô*ð2ûô "ó *Ø%)Ó"ð*ûô  &ó Aà—O‘O¤C¨¸©{Ñ(:Ó$;¸aÑ$?Ö@ðAûô  &ô =ô +˜ð
JÜŸJ™J×6Ñ6Ø (¡Ø #¡Ø%(¨:Ñ%5Ø%(¨:Ñ%5ð	 7ò øô  .ó Jä "§	¡	§¡¨qÓ 1˜AØ ×.Ñ.¨r°A©v¸¸Z¹ÖIðJúô (*§y¡y§~¡~Ø¤§¢ q°1©+Ó 6Ñ6ó(8˜ä"$§)¡)§.¡.°´R·V²V¸A³\Ñ1AÓ"B˜ô Ÿ
™
×2Ñ2Ø(¨'¸ð 3ô =ô+ +ð	=ú÷: (Õ'ús’   Á+/G Â#GÂ>G Ã8G. Ä.G. Å(<H  Æ4
L>ÇGÇG ÇGÇG ÇG+Ç*G+Ç.,HÈHÈ L;È2*IÉL;ÉAJ!ÊL;Ê J!Ê!BL;Ì:L;Ì>
Mr£  rn   rk   r®  c                 óÚ   >• SnU Hb  n[        T	5      nT
R                  U R                  S   U4X5      nT" X40 UD6  [        T	5      nUS S 2S4   R                  US9nT" X40 UD6  Md     g )N©r   é   r   rl   )Únextrb  ry   r‚   )r  ÚdtrÄ  Úb_sizesÚb_sizeÚb_orderr	  r|   rÇ  Úcycle_orderr0   s           €€€r   Úinner_test_loop_fnÚ=TestLinalgLstsq.test_linalg_lstsq.<locals>.inner_test_loop_fnõ  s~   ø€ àˆGã!�ô ˜{Ó+�Ø×/Ñ/Ø—W‘W˜Q‘Z Ð(¨"ó7�á�aÑ%˜fÒ%ô ˜{Ó+�Øš˜1˜‘g—l‘l¨�lÐ1�Ù�aÑ' Ô'ò "r   r   r¬  r¯  r?  ©r
  r<  rµ  r=  ©r   r   ©r   r  ç      @ç      @rj   r  r­   r•   rÁ   rŽ  é   r¥  rÕ  N)r   r  r   r™   rs  rb  rM  r   rq   r�  rT  rš   r¹  rr  r›   r`  rz  r  r  r}  rZ  r]  )r0   rº  Úcycle_dtÚordersÚspecific_condry  Úa_sizert  Úa_orderr  rC   r;   rX  rO  r
  Úapprox_half_rank_rcondÚemptiesr   rd   Úokrñ  ÚbadÚoneDÚbad1DÚbad2Drc   rÇ  rx  s   `                        @@@r   Útest_linalg_lstsqÚ!TestLinalgLstsq.test_linalg_lstsq  s¥  û€ ô
 ˜TÒ"¤<Ó0ˆöX	&òx ;ˆô ˜Ÿ™Ó%ˆà�s�ˆä˜F“mˆð ˆ÷	(ó$ ˆFä�h“ˆBÜ˜;Ó'ˆGð ×+Ñ+¨F¸Ó@ˆAñ ˜qÔ%à‰DˆAÜ˜“IˆEð �A�v˜!˜q�&ð ˜A‘I�Ø×/Ñ/Ø ð 0ð 1�ñ # 1Ô)ð ×/Ñ/Ø ð 0ð B�ð ˜]Ñ*�Ø).©Ð&Ù" 1Ø)?ôAñE ðN 
�ˆØ	�ˆØ	�ˆØ	�Ðð	
ˆó ‰DˆAˆqÜ—H’H˜Q“K¤§¢¨!£Ð-ˆDØ×&Ñ& u¨dÖ3ñ ô
 �XŠX˜˜B�x " b Ð*´"·*±*Ñ=ˆð 	��Bˆx‰ð ˆô �hŠh˜˜A˜  A Ð'¬r¯x©xÑ8ˆØ×Ñ  E¨B°¨9Ô5Ø×Ñ  E¨C°¨9Ô5ô �hŠh˜˜A˜  A Ð'¬r¯z©zÑ:ˆØ×&Ñ& r¨5°2°s°)Ô<Ø×&Ñ& r¨5°3¸°)Ô<ô �hŠh˜˜1�v¤R§Z¡ZÑ0ˆØ×$Ñ$ R¨°°b°	Ô:ô �hŠh˜˜R˜
¤R§V¡V¬R¯V©VÐ$4Ð5¼R¿Z¹ZÑHˆØ×!Ñ! %¨"¨c¨Ô3Ø×!Ñ! %¨#¨r¨Ô3ô �xŠx˜˜R˜¬¯
©
Ñ3ˆØ��DˆzÑÜ�hŠh˜!˜Q˜ ! Q Ð(¨A¨q¨6°A°q°6Ð*:Ð;Ä2Ç:Á:ÑNˆØ×'Ñ'¨¨E°B¸°9Ô=ô —’˜"˜¤R§Z¡ZÑ0ˆÜ—’˜2˜$   r dÐ+´2·:±:Ñ>ˆØ×)Ñ)¨%°"°e°Ô=Ø×)Ñ)¨%°"°e°Õ=r   c           	      ó  • [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/SS9n[         R                  " U5      n[         R                  " / S	Q5      n[        S
S9S 5       nU" XS5        [         R                  R                  X5        g )N)r?  g)\�Âõ(@g®Gáz@)r?  gš™™™™™@r  )r?  g      @gffffff@)r?  gffffffò?g�Âõ(\�@)r?  gáz®Gá@g)\�Âõ(
@)r?  g�Âõ(\�ö?gÍÌÌÌÌÌ@rn   rl   )r?  r  r~  r  ç      @g      @Tr–   c                 ód   • U(       a  U SS2S S 24   n [         R                  R                  X5      $ r×  r  ©rÙ  ÚyrÚ  s      r   Úf2Ú*TestLinalgLstsq.test_issue3368.<locals>.f2n  ó)   € æà�a˜�cš1�f‘I�Ü—9‘9—?‘? 1Ó(Ð(r   F)r   rT  r‚   r   r“  r”  )r0   rÙ  rß  r“  r”  s        r   Útest_issue3368ÚTestLinalgLstsq.test_issue3368b  s~   € ä�HŠHÒ&Ú&Ú&Ú&Ú&Ú&ð)ð
 14ñ5ˆô —’˜“ˆÜ�HŠHÒ-Ó.ˆä	�dÑ	ñ	)ó 
ð	)ñ 	ˆ1�ŒÜ
�
‰
×"Ñ" 1Õ-r   rÖ   N)	r×   rØ   rÙ   rÚ   rÛ   r   r�  r—  rà   rÖ   r   r   rc  rc  q  s2   † ñð ñ`>ó ð`>ðD ñ.ó ó.r   rc  c                   ó8   • \ rS rSrSr\S 5       r\S 5       rSrg)ÚTestLinalgSolveiy  z
Tests for np.linalg.solve.
c                 óð  ^ ^• [        SS9" [        5      mUU 4S jn/ SQn[        UT R                  S5       Hv  u  p4nT R	                  X4U5      nSn[        US5       HL  u  p‰T R	                  UR
                  S   U4XI5      n
U" Xj5        U
SS2S4   R                  U	S	9nU" Xk5        MN     Mx     T" [        R                  " S
5      [        R                  " S5      5        [        R                  " SS/SS//[        R                  S9nT" XÌ5        Sn[        R                  " SS/SS//[        R                  S9nT R                  UTXÎ45        T R                  UTXì45        [        R                  " SS/SS//[        R                  S9nT R                  UTXÎ45        T R                  UTXì45        [        R                  " SS/[        R                  S9nT R                  UTXì45        [        R                  " SS/[        R                   [        R"                  //[        R                  S9nT R%                  TXÎ45        T R%                  TXì45        [        R                  " SS/[        R                  S9nT" XÏ5        [        R                  " SS/SS//SS/SS///[        R                  S9nT R'                  UTXÎ45        [        R                  " S/[        R                  S9n[        R                  " S/S/S//[        R                  S9nT R)                  TUU45        T R)                  TUU45        T R	                  S[        R                  SSS9nT R+                  TUU45        g)z
Test np.linalg.solve
Tr–   c                 óF  >• [        X40 UD6nT" X40 UD6nT	R                  US5        Sn [        R                  R	                  XCSS9  U(       aŒ  T	R                  UR                  UR                  5        [        R                  " X5      n[        R                  " U R                  5      R                  n[        R                  R                  UUSU-  SU-  S9  T	R                  5          T" X40 UD6  S S S 5        g ! [
         a    Sn NÄf = f! , (       d  f       g = f)Nrn   Fr�  rÁ  Tr�  r­  )r  r�  r   r“  rÃ  r¸  rT   ry   r   r‘  r<   r’  r”  ra   )
r   r   rÄ  re   rf   rÅ  rÆ  r’  rc   r0   s
           €€r   rÇ  Ú0TestLinalgSolve.test_linalg_solve.<locals>.check…  s  ø€ Ü# AÑ3¨FÑ3ˆHÙ˜Ñ' Ñ'ˆCð ×%Ñ% c¨3Ô/à!&Ðð*Ü—
‘
×9Ñ9Ø¨ð :ñ ,ö "à× Ñ  §¡¨H¯N©NÔ;ô —f’f˜Q“n�ÜŸXšX a§g¡gÓ.×9Ñ9�
Ü—
‘
×*Ñ*ØØØ˜j™Ø˜zÑ)ð	 +ñ ð ×%Ñ%Õ'Ù�aÑ%˜fÒ%÷ (Ð'øô7 "ó *à%)Ò"ð*ú÷6 (Õ'ús   ¬D  Ã-
DÄ DÄDÄ
D )r|  r©  ©r¥  r¥  r«  rq  r   Nrl   rÉ  r}  r?  ç        rj   r  r   r­   r•   rÁ   r  rŽ  r€  r¥  rÕ  r~  rÊ  rk   r¬  )r   r  r   r™   rb  ry   r‚   r   rq   rT  rš   r¹  rr  r›   r`  rz  r  r  r}  rZ  r]  rŠ  )r0   rÇ  rº  ro   r<   rm   r  ru  rv  rw  r	  r|   rˆ  rñ  r‰  Úok_oneDr‹  rŒ  rc   s   `                 @r   Útest_linalg_solveÚ!TestLinalgSolve.test_linalg_solve~  s  ù€ ô
 ˜TÒ"¤<Ó0ˆö(	&òV )ˆô ˜˜tŸ{™{¨DÖ1ñ ˆD˜à×+Ñ+¨D¸Ó?ˆAàˆGä#*¨7°DÖ#9‘�à×/Ñ/Ø—W‘W˜Q‘Z Ð(¨%ó:�á�a”ð š˜1˜‘g—l‘l¨�lÐ1�Ù�a–ó $:ñ 2ñ  	Œb�hŠh�vÓ¤§¢¨£Ô/ô �XŠX˜˜B�x " b Ð*´"·*±*Ñ=ˆñ 	ˆbŒð ˆô �hŠh˜˜A˜  A Ð'¬r¯x©xÑ8ˆØ×Ñ  E¨B¨9Ô5Ø×Ñ  E¨C¨9Ô5ô �hŠh˜˜A˜  A Ð'¬r¯z©zÑ:ˆØ×&Ñ& r¨5°2°)Ô<Ø×&Ñ& r¨5°3°)Ô<ô �hŠh˜˜1�v¤R§Z¡ZÑ0ˆØ×$Ñ$ R¨°°	Ô:ô �hŠh˜˜R˜
¤R§V¡V¬R¯V©VÐ$4Ð5¼R¿Z¹ZÑHˆØ×!Ñ! %¨"¨Ô3Ø×!Ñ! %¨#¨Ô3ô —(’(˜B ˜8¬2¯:©:Ñ6ˆÙˆbÔÜ�hŠh˜!˜Q˜ ! Q Ð(¨A¨q¨6°A°q°6Ð*:Ð;Ä2Ç:Á:ÑNˆØ×'Ñ'¨¨E°B°9Ô=ô —’˜"˜¤R§Z¡ZÑ0ˆÜ—’˜2˜$   r dÐ+´2·:±:Ñ>ˆØ×)Ñ)¨%°"°e°Ô=Ø×)Ñ)¨%°"°e°Ô=ð ×+Ñ+¨F´B·J±JÀÈ!Ð+ÐLˆØ×%Ñ% e¨e°R¨[Õ9r   c                 óX  • [         R                  " / SQ/ SQ/ SQ/ SQ/SS9n[         R                  " U5      n[         R                  " / SQ5      n[         R                  " U5      n[        SS	9S
 5       nUR	                  XS5      n[         R
                  R                  X5        [         R
                  R                  X45        U" XS5      n[         R
                  R                  X5        [         R
                  R                  X45        [         R
                  R                  Xg5        g )N)r?  r   r   r   )rŸ  r   r   r   )rŸ  r   r   r   )r?  r   r   r   rn   rl   )r?  r  r~  rÁ   Tr–   c                 ód   • U(       a  U SS2S S 24   n [         R                  R                  X5      $ r×  r  r’  s      r   r  Ú4TestLinalgSolve.test_no_input_mutation.<locals>.funcþ  r–  r   FrÞ  )r0   rÙ  rß  r“  Úy_origr  re   rf   s           r   rà  Ú&TestLinalgSolve.test_no_input_mutationó  sÞ   € ä�HŠH’mÚ#Ú#Ú#ð&ð .1ñ2ˆô
 —’˜“ˆÜ�HŠH’_Ó%ˆÜ—’˜“ˆä	�dÑ	ñ	)ó 
ð	)ð —<‘<  eÓ,ˆÜ
�
‰
×"Ñ" 1Ô-Ü
�
‰
×"Ñ" 1Ô-á�1˜ÓˆÜ
�
‰
×"Ñ" 1Ô-Ü
�
‰
×"Ñ" 1Ô-ä
�
‰
×"Ñ" 8Õ1r   rÖ   N)	r×   rØ   rÙ   rÚ   rÛ   r   r¡  rà  rà   rÖ   r   r   rš  rš  y  s2   † ñð ñr:ó ðr:ðh ñ2ó ó2r   rš  c                   ó8   • \ rS rSrSr\S 5       r\S 5       rSrg)ÚTestLinalgPinvi  z
Tests for np.linalg.pinv.
c           	      ó
  ^ ^• [        SS9" [        5      mUU 4S jn/ SQnSn[        UT R                  S5       H_  u  pEnT R	                  XEU5      nU" U5        Uu  p‰US:w  d  M,  U	S:w  d  M4  [        X‰5      n
T R	                  XEUUS9nS	U-  nX«-  nU" X|S
9  Ma     S H  nU" [        R                  " U5      5        M!     SnT R                  UT[        R                  " S[        R                  S945        T R                  UT[        R                  " S[        R                  S945        T R                  T[        R                  " S	S/[        R                  [        R                   //[        R                  S945        g)z
Test np.linalg.pinv
Tr–   c                 óF  >• [        U 40 UD6nT	" U 40 UD6nT
R                  US5        Sn [        R                  R	                  X2SS9  U(       aN  T
R                  UR                  UR                  5        [        R                  " X05      n T
R                  U5        T
R+                  5          T	" U 40 UD6  S S S 5        g ! [
         a    Sn N†f = f! [
         Ga0    S[        R                  " U R                  5      R                  -  nT	" U5      n[        R                  R                  UU SU-  SU-  S9  U R                  S	   U R                  S
   :¼  a€  [        SS9" [        5      nU" U [        R                   " U R                  S	   5      R#                  U R                  5      40 UD6S	   n[        R                  R                  UUSU-  SU-  S9  T
R%                  [        R&                  R)                  X2-
  5      U5         GNof = f! , (       d  f       g = f)Nrn   Fr�  rÁ  TrŽ  r�  r­  r   r   r–   )r  r�  r   r“  rÃ  r¸  rT   ry   r   r—  r‘  r<   r’  r”  r   r  rS  r9   Ú
assertLessrå   r  ra   )r   rÄ  re   rf   rÅ  rÆ  r’  r  Ú
lstsq_pinvrc   r0   s            €€r   rÇ  Ú.TestLinalgPinv.test_linalg_pinv.<locals>.check  s  ø€ Ü" 1Ñ/¨Ñ/ˆHÙ˜Ñ$˜VÑ$ˆCð ×%Ñ% c¨3Ô/à!&Ðð*Ü—
‘
×9Ñ9Ø¨ð :ñ ,ö "ð × Ñ  §¡¨H¯N©NÔ;ô
 —f’f˜S“n�ðPØ×2Ñ2°3Ô7ð< ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (Ð'øôe "ó *à%)Ò"ð*ûô* &ô Pà!"¤R§X¢X¨a¯g©gÓ%6×%AÑ%AÑ!A�JÙ ›*�CÜ—J‘J×.Ñ.ØØØ *™_Ø  :Ñ-ð	 /ñ ð —w‘w˜q‘z Q§W¡W¨Q¡ZÓ/ô !$¨TÒ 2´<Ó @˜Ù%*ØœrŸvšvØ !§¡¨¡
ó ,ß,2©FØ !§¡ó-)ñ&4ð -3ñ&4ð 56ñ&7˜
ô Ÿ
™
×2Ñ2ØØ&Ø!# j¡Ø!$ zÑ!1ð	 3ñ ð —O‘O¤B§I¡I§N¡N°3±>Ó$BÀJ×Oð5Pú÷: (Õ'ús0   ¬C ÂC Â/
HÃCÃCÃD7HÈHÈ
H r£  r®  r«  r   r¯  r?  r{  )r<  r=  r  rÊ  rj   r�  r  N)r   r  r   r™   rb  rM  r   rq   rr  rË  r¹  rz  rš   r}  rT  r  r  )r0   rÇ  rº  rƒ  ro   r<   rm   r   rC   r;   rX  r
  r†  r?  rñ  rc   s   `              @r   Útest_linalg_pinvÚTestLinalgPinv.test_linalg_pinv  ss  ù€ ô
 ˜TÒ"¤;Ó/ˆö@	#òH ;ˆð ˆô ˜˜tŸ{™{¨DÖ1ñ ˆD˜ð ×+Ñ+¨D¸Ó?ˆAÙ�!ŒHà‰DˆAØ�A�v˜!˜q�&ä˜A›	�Ø×/Ñ/°¸UØ:Gð 0ð I�à˜]Ñ*�Ø).©Ð&Ù�aÔ6ñ 2ó  #ˆBÙ”"—(’(˜2“,Öñ #ð ˆð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×$Ñ$ R¨Ü&(§g¢g¨b¼¿
¹
Ñ&CÐ%Eô	Gð 	×!Ñ! %Ü#%§8¢8¨b°"¨Z¼"¿&¹&Ä"Ç&Á&Ð9IÐ,JÜ24·*±*ñ$>ð #@õ	Ar   c                 óž  • [        SS9S 5       n[        R                  " / SQ/ SQ/ SQ/ SQ/SS	9n[        R                  " U5      nUR	                  S
5      nUR                  U5      n[        R                  R                  X#5        U" U5      n[        R                  R                  X#5        [        R                  R                  XV5        g )NTr–   c                 óF   • [         R                  R                  U S   5      $ )Nr   r  )r÷  s    r   Úsome_fnÚ.TestLinalgPinv.test_issue5870.<locals>.some_fnŒ  s   € ä—9‘9—>‘> ! A¡$Ó'Ð'r   rÏ  rÐ  rÒ  rÔ  rn   rl   )r   rÁ   rÁ   )r   r   rT  r‚   rB   rÓ   r“  r”  )r0   r³  Úv_dataÚv_origÚ
reshaped_vre   rf   s          r   Útest_issue5870ÚTestLinalgPinv.test_issue5870‰  s«   € ô 
�dÑ	ñ	(ó 
ð	(ô —’š>Ú)Ú)Ú)ð+ð 36ñ7ˆô
 —’˜“ˆØ—^‘^ IÓ.ˆ
à—?‘? :Ó.ˆÜ
�
‰
×"Ñ" 6Ô2á�jÓ!ˆÜ
�
‰
×"Ñ" 6Ô2ä
�
‰
×"Ñ" 8Õ1r   rÖ   N)	r×   rØ   rÙ   rÚ   rÛ   r   r¯  r¸  rà   rÖ   r   r   r©  r©    s4   † ñð ñqAó ðqAðf ñ2ó ó2r   r©  c                   óZ   • \ rS rSrSrS rS rS r\S 5       r	\S 5       r
\S 5       rS	rg
)ÚTestLinalgDetAndSlogdeti¡  z°
Tests for np.linalg.det. and np.linalg.slogdet.
Exactly the same inputs are used for both tests as
det() is a trivial function of slogdet(), the tests
are therefore combined.
c                 ó*  • [        U40 UD6nU" U40 UD6nS[        R                  " UR                  5      R                  -  n[        R
                  R                  XTUS9  U R                  5          U" U40 UD6  S S S 5        g ! , (       d  f       g = f©NrŽ  rf  )r  r   r‘  r<   r’  r“  r”  ra   )r0   rc   r   rÄ  re   rf   r’  s          r   Ú	check_detÚ!TestLinalgDetAndSlogdet.check_det©  s}   € Ü˜aÑ* 6Ñ*ˆÙ�AÑ ˜Ñ ˆàœŸš !§'¡'Ó*×5Ñ5Ñ5ˆ
ô 	�
‰
×"Ñ" 3°zÐ"ÑBð ×!Ñ!Õ#Ù�!Ñ�vÒ÷ $×#Ö#ús   Á1
BÂ
Bc                 óÔ  • [        U40 UD6nU" U40 UD6nU R                  [        U5      [        U5      5        U R                  [        U5      S5        [        S5       HA  nU R                  [        R
                  " XV   5      [        R
                  " XF   5      5        MC     UR                  R                  US   5      n[        R                  R                  XtS   SS9  S[        R                  " UR                  5      R                  -  n[        R                  R                  US   US   XˆS9  U R                  5          U" U40 UD6  S S S 5        g ! , (       d  f       g = f)Nr­   r   r�  rÁ  rŽ  r   r­  )r  rT   rN   rs   r   r  r<   Útyper“  rÃ  r‘  r’  r”  ra   )	r0   rc   r   rÄ  re   rf   r¼   Úgot_convr’  s	            r   Úcheck_slogdetÚ%TestLinalgDetAndSlogdet.check_slogdet¶  s-  € Ü! !Ñ. vÑ.ˆÙ�AÑ ˜Ñ ˆð 	×Ñœ˜X›¬¨C«Ô1à×Ñœ˜S› 1Ô%ô �q–ˆAØ×ÑÜ—’ ¡Ó'Ü—’ ¡Ó,ö.ñ ð —7‘7—<‘<  A¡Ó'ˆÜ
�
‰
×1Ñ1Ø˜q‘k¨ð 	2ñ 	,ð œŸš !§'¡'Ó*×5Ñ5Ñ5ˆ
Ü
�
‰
×"Ñ"Ø�‰F�H˜Q‘K jð 	#ñ 	Cð ×!Ñ!Õ#Ù�!Ñ�vÒ÷ $×#Ö#ús   Å
EÅ
E'c           	      ó®  • / SQn[        X@R                  S5       H   u  pVnU R                  XVU5      nU" X85        M"     [        U R                  S5       H"  u  pg[        R                  " SUS9nU" X85        M$     U" U[        R
                  " S5      5        U R                  X[        R                  " S[        R                  S945        U R                  X[        R                  " S[        R                  S945        U R                  U[        R                  " SS	/[        R                  [        R                  //[        R                  S945        g )
N)r|  )rÁ   rÁ   rž  r«  r©  rj   rÉ  rÊ  r�  r?  r  )r   r™   rb  r   rQ  rq   rr  rË  r¹  rz  rš   r}  rT  r  r  )	r0   rñ  rÇ  rc   rº  ro   r<   rm   r   s	            r   Údo_testÚTestLinalgDetAndSlogdet.do_testÙ  s  € ò )ˆô ˜Ÿ{™{¨DÖ1ñ ˆD˜ð ×+Ñ+¨D¸Ó?ˆAÙ�%ŽOñ 2ô $ D§K¡K°Ö6‰LˆEÜ—’˜ uÑ-ˆAÙ�%ŽOñ 7ñ
 	ˆe”R—X’X˜fÓ%Ô&ð 	×Ñ Ü!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×$Ñ$ RÜ&(§g¢g¨b¼¿
¹
Ñ&CÐ%Eô	Gð 	×!Ñ! %Ü#%§8¢8¨b°"¨Z¼"¿&¹&Ä"Ç&Á&Ð9IÐ,JÜ24·*±*ñ$>ð #@õ	Ar   c                 ód   • [        SS9" [        5      nU R                  SU R                  U5        g )NTr–   r  )r   r  rÆ  r¾  ©r0   rc   s     r   Útest_linalg_detÚ'TestLinalgDetAndSlogdet.test_linalg_detú  s%   € ä˜TÒ"¤:Ó.ˆØ�‰�U˜DŸN™N¨EÕ2r   c                 ód   • [        SS9" [        5      nU R                  SU R                  U5        g )NTr–   r  )r   r  rÆ  rÃ  rÉ  s     r   Útest_linalg_slogdetÚ+TestLinalgDetAndSlogdet.test_linalg_slogdetÿ  s'   € ä˜TÒ"¤>Ó2ˆØ�‰�Y × 2Ñ 2°EÕ:r   c                 ó€  • [         R                  " / SQ/ SQ/ SQ/ SQ/SS9n[         R                  " U5      n[        SS9S	 5       nUR	                  US
5      n[         R
                  R                  X5        U" US
5      n[         R
                  R                  X5        [         R
                  R                  XE5        g )NrÏ  rÐ  rÒ  rÔ  rn   rl   Tr–   c                 ód   • U(       a  U SS2S S 24   n [         R                  R                  U 5      $ r×  r  rØ  s     r   r  Ú<TestLinalgDetAndSlogdet.test_no_input_mutation.<locals>.func  s+   € æà�a˜�cš1�f‘I�Ü—9‘9×$Ñ$ QÓ'Ð'r   FrÞ  ©r0   rÙ  rß  r  re   rf   s         r   rà  Ú.TestLinalgDetAndSlogdet.test_no_input_mutation  sž   € ä�HŠH’nÚ$Ú$Ú$ð&ð .1ñ2ˆô
 —’˜“ˆä	�dÑ	ñ	(ó 
ð	(ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1Ô-á�1�e‹nˆÜ
�
‰
×"Ñ" 1Ô-ä
�
‰
×"Ñ" 8Õ1r   rÖ   N)r×   rØ   rÙ   rÚ   rÛ   r¾  rÃ  rÆ  r   rÊ  rÍ  rà  rà   rÖ   r   r   r»  r»  ¡  sU   † ñòò!òFAðB ñ3ó ð3ð ñ;ó ð;ð ñ2ó ó2r   r»  c                   ó(   • \ rS rSrSr\S 5       rSrg)ÚTestLinalgNormi   z
Tests for np.linalg.norm.
c                 ó  ^ ^
• [        SS9" [        5      m
U
U 4S jn/ SQnS[        R                  [        R                  * SSSS	S
SSS/n[	        UT R
                  U5       H  u  pEnT R                  XE5      nU" XvS9  M     [	        T R
                  U5       H#  u  pVT R                  SU5      SSS2   nU" XvS9  M%     / SQnS[        R                  [        R                  * SSS	S
/n[	        UT R
                  SU5       H  u  pEp†T R                  XEU5      nU" XvS9  M      S/n[	        T R
                  US5       HA  u  pVnT R                  SXX5      nU" USS US9  U" USS2SS24   US9  U" USSSS24   US9  MC     [	        T R
                  US5       H`  u  pVn[        R                  " SXXS9nT R                  T
" Xv5      S5        [        R                  " SXXS9nT R                  T
" Xv5      S5        Mb     Sn	T R                  U	T
[        R                  " S[        R                  S945        T R                  U	T
[        R                  " S[        R                  S9R                  S	S	S5      45        T R!                  T
[        R"                  " SS/[        R                  [        R$                  //[        R                  S9S	45        T R'                  T
[        R"                  " SS/SS //[        R                  S9S!45        g)"z
Test np.linalg.norm
Tr–   c                 ó€  >• [        U 40 UD6nT" U 40 UD6nTR                  [        R                  " U5      (       + 5        S[        R                  " U R
                  5      R                  -  n[        R                  R                  X2US9  TR                  5          T" U 40 UD6  S S S 5        g ! , (       d  f       g = fr½  )
r  rƒ  r   r  r‘  r<   r’  r“  r”  ra   ©r   rÄ  re   rf   r’  rc   r0   s        €€r   rÇ  Ú.TestLinalgNorm.test_linalg_norm.<locals>.check,  ó˜   ø€ Ü" 1Ñ/¨Ñ/ˆHÙ˜Ñ$˜VÑ$ˆCð �O‰O¤§¢°Ó 4Ô4Ô5àœRŸXšX a§g¡gÓ.×9Ñ9Ñ9ˆJô �J‰J×&Ñ& s¸:Ð&ÑFð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (×'Ö'úó   Â
B/Â/
B=)r   rÁ   r¥  Nr   r   r˜   r­   r�  rŽ  gÍÌÌÌÌÌ@g333333À)r  r�  r•   r£  r«  )é   rr  rÁ   r}  rJ  rŸ  rÉ  r  rÊ  rj   é   r?  r  r~  r  r€  )r   r  r   r  r   r™   r>   rb  rq   rT   rr  rË  r¹  rZ  rš   rB   r}  rT  r  rš  )r0   rÇ  rº  Ú	nrm_typesro   r<   Únrm_typer   rm   rñ  rc   s   `         @r   Útest_linalg_normÚTestLinalgNorm.test_linalg_norm%  sø  ù€ ô
 ˜TÒ"¤;Ó/ˆö	#ò" ˆØœ2Ÿ6™6¤B§F¡F 7¨A¨q°"°a¸¸QÀÀTÐJˆ	ô ˜˜tŸ{™{¨IÖ6ñ "ˆD˜à×"Ñ" 4Ó/ˆAÙ�!Ô"ñ 7ô ˜Ÿ™ YÖ/ñ ˆEà×"Ñ" 2 uÓ-©c°¨cÑ2ˆAÙ�!Ô"ñ 0ò ;ˆØœ2Ÿ6™6¤B§F¡F 7¨A¨r°1°bÐ9ˆ	ô ˜˜tŸ{™{¨D°)Ö<ñ )ˆD˜ð ×+Ñ+¨D¸Ó?ˆAÙ�!Ô"ñ =ð �Fˆ	ä˜Ÿ™ Y°Ö5ñ #ˆE˜Uà×+Ñ+¨H°eÓCˆAá�!�B�Q�%˜XÒ&ñ �!’A�q‘r�E‘( Ò)ñ �!�A�q�t˜!�t�G‘* (Ô+ñ 6ô  ˜Ÿ™ Y°Ö5ñ #ˆE˜Uä—’˜ UÑ8ˆAØ×Ñ™U 1Ó/°Ô5Ü—’˜ uÑ:ˆAØ×Ñ™U 1Ó/°Ö5ñ	 6ð ˆð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×'Ñ'Ø�œŸšØœ"Ÿ*™*ñ&ß&-¡gØ�1�aó'ðô	ð 	×!Ñ! %Ü#%§8¢8¨b°"¨X¼¿¹ÄÇÁÐ7GÐ,HÜ24·*±*ñ$>Ø?@ð#Bô	Cð
 	×%Ñ% e¬b¯hªh¸¸R¸À2ÀrÀ(Ð7KÜ=?¿Z¹Zñ/IØJKð.Mõ 	Nr   rÖ   N)r×   rØ   rÙ   rÚ   rÛ   r   rà  rà   rÖ   r   r   rÕ  rÕ     s   † ñð ñ`Nó ó`Nr   rÕ  c                   ó(   • \ rS rSrSr\S 5       rSrg)ÚTestLinalgCondi‰  z
Tests for np.linalg.cond.
c           	      ó¤  ^ ^• [        SS9" [        5      mUU 4S jnS[        R                  [        R                  * SSSS/nS	S
/n[	        UT R
                  SU5       H  u  pEpgT R                  XEU5      nU" X‡S9  M      / SQn[	        UT R
                  S5       H   u  pEnT R                  XEU5      nU" U5        M"     S H*  n	T R                  T[        R                  " U	5      45        M,     [        R                  " SS/SS//[        R                  S9n
U" U
5        U" U
SS9  [        R                  " SS/SS//[        R                  S9n
U" U
SS9  [        R                  " 5          [        R                  " SS/SS//[        R                  S9n[        R                  " S[        5        U" U5        SSS5        SnT R                  UT[        R                   " S[        R"                  S945        T R%                  UT[        R                   " S[        R                  S945        T R'                  T[        R                  " SS/[        R                  [        R(                  //[        R                  S945        T R+                  T[        R                  " SS/SS//[        R                  S9S45        g! , (       d  f       GN= f)z
Test np.linalg.cond
Tr–   c                 ó€  >• [        U 40 UD6nT" U 40 UD6nTR                  [        R                  " U5      (       + 5        S[        R                  " U R
                  5      R                  -  n[        R                  R                  X2US9  TR                  5          T" U 40 UD6  S S S 5        g ! , (       d  f       g = fr½  )
r"  rƒ  r   r  r‘  r<   r’  r“  r”  ra   rØ  s        €€r   rÇ  Ú.TestLinalgCond.test_linalg_cond.<locals>.check–  rÚ  rÛ  Nr   r˜   r­   r�  r©  rž  r«  )r!  )r¤  r¦  r¨  rª  r;  r   rj   g Èë…óÌágš™™™™™¹?Úignorer   rÊ  r�  r?  r  r~  r  r€  )r   r"  r   r  r   r™   rb  r�  rq   rT  rš   rI   rJ   rK   ÚRuntimeWarningrr  rË  r¹  rz  r}  r  rš  )r0   rÇ  Úpsrº  ro   r<   rm   r!  r   r?  rj  rñ  rc   s   `           @r   Útest_linalg_condÚTestLinalgCond.test_linalg_condŽ  sp  ù€ ô ˜TÒ"¤;Ó/ˆö	#ð" ”B—F‘FœRŸV™V˜G Q¨¨A¨rÐ2ˆØ˜Ð ˆô ˜˜tŸ{™{¨D°"Ö5ñ "ˆD˜à×+Ñ+¨D¸Ó?ˆAÙ�!ŒMñ 6ò
 3ˆä˜˜tŸ{™{¨DÖ1ñ ˆD˜à×+Ñ+¨D¸Ó?ˆAÙ�!ŽHñ 2ó
 +ˆBØ×&Ñ& u¬r¯xªx¸«|¨oÖ>ñ +ô �HŠH�q˜!�f˜q !˜fÐ%¬R¯Z©ZÑ8ˆÙˆaŒÙˆa�1ŠÜ�HŠH�q˜!�f˜q !˜fÐ%¬R¯Z©ZÑ8ˆÙˆa�2Šô
 ×$Ò$Õ&Ü—’˜6 1˜+¨¨3 xÐ0¼¿
¹
ÑCˆAÜ×!Ò! (¬NÔ;Ù�!ŒH÷ 'ð
 ˆð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×$Ñ$ R¨Ü&(§g¢g¨b¼¿
¹
Ñ&CÐ%Eô	Gð 	×!Ñ! %Ü#%§8¢8¨b°"¨Z¼"¿&¹&Ä"Ç&Á&Ð9IÐ,JÜ24·*±*ñ$>ð #@ô	Að
 	×%Ñ% e¬b¯hªh¸¸R¸À2ÀrÀ(Ð7KÜ=?¿Z¹Zñ/IØJKð.Mõ 	N÷+ 'Ö&ús   Å-AK Ë 
KrÖ   N)r×   rØ   rÙ   rÚ   rÛ   r   rê  rà   rÖ   r   r   rã  rã  ‰  s   † ñð ñKNó óKNr   rã  c                   ó8   • \ rS rSrSr\S 5       r\S 5       rSrg)ÚTestLinalgMatrixRankiÝ  z"
Tests for np.linalg.matrix_rank.
c           	      ó`  ^ ^• [        SS9" [        5      mUU 4S jn/ SQn[        UT R                  S5       GHø  u  p4nT R	                  X4U5      nU" U5        Sn[        S[        U5      S-
  5       GHI  nT R	                  X4XXS9nT R                  T" U5      U5        U" U5        UR                  u  pšS	US
S
2S
S
24'   [        R                  " [        R                  " Xš5      5      n[        R                  " U5      (       aN  S[        R                  R                  U5      -   S-   S[        R                  R                  U5      -  -   nSUS'   O'S[        R                  R                  U5      -   nSUS'   UR                  U5      XkS   S
U US   S
U 4'   T R                  T" Xg5      US-
  5        U" XgS9  GML     S	US
S
2S
S
24'   T R                  T" U5      S5        U" U5        [        R                  " U5      (       a  SUS'   OSUS'   T R                  T" Xg5      S5        U" XgS9  GMû     T R                   H]  n[        R                   " SUS9nT R                  T" U5      S5        U" U5        SUS'   T R                  T" U5      S5        U" U5        M_     S H4  nS H+  nT R#                  T[        R$                  " U5      U45        M-     M6     SnT R'                  UT[        R(                  " S[        R*                  S945        T R-                  UT[        R(                  " S[        R.                  S9R1                  SSS5      45        T R3                  T[        R4                  " SS/[        R6                  [        R8                  //[        R.                  S945        g
)z
Test np.linalg.matrix_rank
Tr–   c                 óÔ   >• [        U 40 UD6nT" U 40 UD6n[        R                  R                  X25        TR	                  5          T" U 40 UD6  S S S 5        g ! , (       d  f       g = fr   )r'  r   r“  r”  ra   )r   rÄ  re   rf   rc   r0   s       €€r   rÇ  Ú;TestLinalgMatrixRank.test_linalg_matrix_rank.<locals>.checkê  s\   ø€ Ü)¨!Ñ6¨vÑ6ˆHÙ˜Ñ$˜VÑ$ˆCô �J‰J×&Ñ& sÔ5ð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (×'Ö'ús   Á
AÁ
A'r£  r«  ç‚vIhÂ%<=r   r¬  rŸ  Nr?  ù              ð?y›+¡†›„=›+¡†›„=r   g›+¡†›„=)r&  )r˜   r˜   rŽ  rj   r;  )Nrñ  r%  rÊ  rÝ  r­   r•   r  )r   r'  r   r™   rb  rs   rM  rT   ry   r   rR  rS  r  rK  rå  r9   rQ  r�  rq   rr  rË  r¹  rZ  rš   rB   r}  rT  r  r  )r0   rÇ  rº  ro   r<   rm   r   r&  r¼   rC   r;   ra  r   rt  r?  rñ  rc   s   `               @r   Útest_linalg_matrix_rankÚ,TestLinalgMatrixRank.test_linalg_matrix_rankâ  sD  ù€ ô ˜TÒ"Ô#5Ó6ˆö
	#ò ;ˆô ˜˜tŸ{™{¨D×1ñ ˆD˜ð ×+Ñ+¨D¸Ó?ˆAÙ�!ŒHð ˆCä˜1œc $›i¨!™m×,�à×/Ñ/°¸UÐ/ÐK�Ø× Ñ ¡ q£¨1Ô-Ù�a”ð —w‘w‘�Ø�’!’Q�$‘Ü—j’j¤§¢¨£Ó.�Ü—?’? 1×%Ñ%ØœRŸY™YŸ^™^¨AÓ.Ñ.°Ñ4ØœbŸi™iŸn™n¨QÓ/Ñ/ñ0�Að *�A�a’DàœRŸY™YŸ^™^¨AÓ.Ñ.�AØ �A�a‘DØ,-¯H©H°U«O��a‘&˜˜!�*˜c !™f R a˜jÐ(Ñ)à× Ñ ¡ q£°°A±Ô6Ù�aÕ!ñ- -ð0 ˆAŠa’ˆd‰GØ×Ñ™U 1›X qÔ)Ù�!ŒHä�Š˜q×!Ñ!Ø*��&’	à!��&‘	à×Ñ™U 1›]¨AÔ.Ù�!ÕñW 2ð^ —+”+ˆBÜ—’˜! BÑ'ˆAØ×Ñ™U 1›X qÔ)Ù�!ŒHàˆAˆa‰DØ×Ñ™U 1›X qÔ)Ù�!ŽHñ ó +ˆBÛ$�Ø×*Ñ*¨5´2·8²8¸B³<ÀÐ2EÖFó %ñ +ð ˆð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@Ð Bô	Dð 	×'Ñ'Ø�œŸšØœ"Ÿ*™*ñ&ß&-¡gØ�1�aó'ðô	ð 	×!Ñ! %Ü#%§8¢8¨b°"¨Z¼"¿&¹&Ä"Ç&Á&Ð9IÐ,JÜ24·*±*ñ$>ð #@õ	Ar   c                 ó€  • [         R                  " / SQ/ SQ/ SQ/ SQ/SS9n[         R                  " U5      n[        SS9S	 5       nUR	                  US
5      n[         R
                  R                  X5        U" US
5      n[         R
                  R                  X5        [         R
                  R                  XE5        g )NrÏ  rÐ  rÒ  rÔ  rn   rl   Tr–   c                 ód   • U(       a  U SS2S S 24   n [         R                  R                  U 5      $ r×  r$  rØ  s     r   r  Ú9TestLinalgMatrixRank.test_no_input_mutation.<locals>.funcT	  s+   € æà�a˜�cš1�f‘I�Ü—9‘9×(Ñ(¨Ó+Ð+r   FrÞ  rÒ  s         r   rà  Ú+TestLinalgMatrixRank.test_no_input_mutationG	  s    € ô �HŠH’nÚ$Ú$Ú$ð&ð .1ñ2ˆô
 —’˜“ˆä	�dÑ	ñ	,ó 
ð	,ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1Ô-á�1�e‹nˆÜ
�
‰
×"Ñ" 1Ô-ä
�
‰
×"Ñ" 8Õ1r   rÖ   N)	r×   rØ   rÙ   rÚ   rÛ   r   ró  rà  rà   rÖ   r   r   rí  rí  Ý  s4   † ñð ñbAó ðbAðH ñ2ó ó2r   rí  c                   ó.   • \ rS rSrSrS r\S 5       rSrg)ÚTestLinalgMatrixPowerid	  z#
Tests for np.linalg.matrix_power.
c                 ó˜   • U" US   S5        U R                  [        R                  5         U" U6   S S S 5        g ! , (       d  f       g = f)Nr   r   ©r‡   r
   r�   )r0   rc   rd   s      r   Úassert_int_exponenentÚ+TestLinalgMatrixPower.assert_int_exponenenti	  s7   € áˆd�1‰g�qÔà×Ñœv×1Ñ1Õ2Ù�4‰L÷ 3×2Ö2ús	   ¬;»
A	c           	      ó~  ^ ^• [        SS9" [        5      mUU 4S jn/ SQnSS/[        [        SS5      5      -   S	S
/-   n[	        X#T R
                  S5       H=  u  pEpgT R                  XFU5      nU" X…5        [        R                  " SXgS9nU" X…5        M?     Sn	T R                  U	T[        R                  " S[        R                  S9S45        T R                  U	T[        R                  " S[        R                  S9S45        [        R                  " S5      S4n
SnT R                  TX«5        T R                  U	T[        R                  " S[        R                  S9S45        T R                  T[        R                  " S5      S45        T R!                  T[        R"                  " SS/SS//5      S45        g )NTr–   c                 óJ  >• [        X5      nT" X5      nTR                  US5        S[        R                  " U R                  5      R
                  -  n[        R                  R                  X2XDS9  TR                  5          T" X5        S S S 5        g ! , (       d  f       g = f)Nrk   r¥  r­  )	r*  r�  r   r‘  r<   r’  r“  r”  ra   )r   Úpwrre   rf   rk  rc   r0   s        €€r   rÇ  Ú=TestLinalgMatrixPower.test_linalg_matrix_power.<locals>.checkt	  s}   ø€ Ü*¨1Ó2ˆHÙ˜“-ˆCð ×%Ñ% c¨3Ô/à”b—h’h˜qŸw™wÓ'×2Ñ2Ñ2ˆCÜ�J‰J×&Ñ& s¸3Ð&ÑIð ×%Ñ%Õ'Ù�a”÷ (×'Ö'ús   Â	BÂ
B")r|  ©rŽ  rŽ  rž  ißÿÿÿiïÿÿÿéöÿÿÿr�  rÜ  é!   r«  rÉ  rJ  r)  rÊ  rj   r   )r•   rŽ  zinput must be a square arrayç333333ó?rŸ  r   r˜   )r   r*  Úlistrs   r   r™   rb  r   rq   rr  rË  r¹  rf  rz  rš   rý  rŠ  rT  )r0   rÇ  rº  Úpowersro   r  r<   rm   r   rñ  rd   rŒ   rc   s   `           @r   Útest_linalg_matrix_powerÚ.TestLinalgMatrixPower.test_linalg_matrix_powerp	  s‘  ù€ ä˜TÒ"Ô#6Ó7ˆö	ò )ˆØ�s�œd¤5¨¨b£>Ó2Ñ2°b¸"°XÑ=ˆô ˜ t§{¡{°DÖ9ñ $ˆD�uà×+Ñ+¨D¸Ó?ˆAÙ�!ŒMÜ—’˜ uÑ:ˆAÙ�!ŽMñ	 :ð ˆð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@À!Ð Dô	Fð 	×Ñ  EÜ!#§¢¨´r·x±xÑ!@À!Ð Dô	Fô —’˜“ Ð#ˆØ,ˆØ×Ñ˜% Ô+ð 	×$Ñ$ R¨Ü&(§g¢g¨b¼¿
¹
Ñ&CÀQÐ%Gô	Ið 	×"Ñ" 5¬2¯7ª7°6«?¸CÐ*@ÔAð 	×%Ñ% e¬b¯hªh¸¸Q¸À!ÀQÀÐ7HÓ.IÈ2Ð-NÕOr   rÖ   N)	r×   rØ   rÙ   rÚ   rÛ   rý  r   r	  rà   rÖ   r   r   rú  rú  d	  s"   † ñòð ñ2Pó ó2Pr   rú  c                   ó>   ^ • \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )Ú	TestTracei¦	  z
Tests for np.trace.
c                 óŠ   >• [         [        U ]  5         [        SS9" [        5      U l        [        SS9" [        5      U l        g )NTr–   )r-   r  r.   r   r/  Úcfunc_w_offsetr1  Úcfunc_no_offsetr/   s    €r   r.   ÚTestTrace.setUp«	  s5   ø€ ÜŒi˜Ñ$Ô&ä!¨4Ò0´Ó>ˆÔÜ"¨DÒ1Ô2HÓIˆÕr   c                 ó˜   • U" U5        U R                  [        R                  5         U" U40 UD6  S S S 5        g ! , (       d  f       g = fr   rü  )r0   rc   r   rÄ  s       r   Úassert_int_offsetÚTestTrace.assert_int_offset±	  s6   € áˆaŒà×Ñœv×1Ñ1Õ2Ù�!Ñ�vÒ÷ 3×2Ö2ús	   ¨
;»
A	c           	      ó   ^ • U 4S jn/ SQn/ SQ[        [        SS5      5      -   / SQ-   n[        X#T R                  S5       HW  u  pEpgT R	                  XFU5      nU" X…S9  US	:X  a  U" U5        [
        R                  " S
XgS9nU" X…S9  US	:X  d  MO  U" U5        MY     Sn	T R                  U	T R                  [
        R                  " S[
        R                  S9S4S5        T R                  U	T R                  [
        R                  " S[
        R                  S94S5        T R                  T R                  [
        R                  " S5      SS9  g )Nc                 ó‚  >• SU;   a  [        U 40 UD6nTR                  nO[        U 40 UD6nTR                  nU" U 40 UD6nS[        R
                  " U R                  5      R                  -  n[        R                  R                  XBXUS9  TR                  5          U" U 40 UD6  S S S 5        g ! , (       d  f       g = f)Nr.  rŽ  r­  )r/  r  r1  r  r   r‘  r<   r’  r“  r”  ra   )r   rÄ  re   rc   rf   rk  r0   s         €r   rÇ  Ú#TestTrace.test_trace.<locals>.checkº	  s©   ø€ Ø˜6Ó!Ü'¨Ñ4¨VÑ4�Ø×+Ñ+‘ä1°!Ñ>°vÑ>�Ø×,Ñ,�á˜Ñ$˜VÑ$ˆCà”b—h’h˜qŸw™wÓ'×2Ñ2Ñ2ˆCÜ�J‰J×&Ñ& s¸3Ð&ÑIð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (×'Ö'ús   Â
B0Â0
B>r£  )ióÿÿÿiôÿÿÿiõÿÿÿr  r�  )r§  rÝ  rr  r«  )r.  r   rÉ  rJ  r-  rj   r   FrÊ  r  )r  rs   r   r™   rb  r   rq   rz  r  rË  rš   r  r  )
r0   rÇ  rº  Úoffsetsro   r.  r<   rm   r   rñ  s
   `         r   Ú
test_traceÚTestTrace.test_trace¸	  s3  ø€ õ	#ò& ;ˆò "¤D¬¨s°B«Ó$8Ñ8º<ÑGˆô ˜¨¯©°TÖ:ñ 'ˆD˜%à×+Ñ+¨D¸Ó?ˆAÙ�!Ò#Ø˜‹{Ù�a”Ü—’˜ uÑ:ˆAÙ�!Ò#Ø˜�{Ù�a–ñ ;ð ˆð 	×$Ñ$ R¨×)<Ñ)<Ü&(§g¢g¨b¼¿
¹
Ñ&CÀQÐ%GÈô	Pà×$Ñ$ R¨×)=Ñ)=Ü&(§g¢g¨b¼¿
¹
Ñ&CÐ%EÀuô	Nð 	×ÑØ×Ñ¤§¢Øó"Ø #ð 	ò 	%r   c                 ó6  • [        SSS9S 5       n[        R                  " S[        R                  S9nU" U5        U R	                  [
        5       nU" S5        SSS5        [        WR                  5      nU R                  SU5        g! , (       d  f       N6= f)	z
Issue 2314z(optional(float64[:,:]),)Tr–   c                 ó.   • [         R                  " U 5      $ r   r,  rç   s    r   ÚtestedÚ5TestTrace.test_trace_w_optional_input.<locals>.testedì	  s   € ä—8’8˜A“;Ðr   r  rj   Nz(expected array(float64, 2d, A), got None)	r   r   rË  rš   r‡   Ú	TypeErrorrR   r‰   rT   )r0   r  r   r‹   Úerrmsgs        r   Útest_trace_w_optional_inputÚ%TestTrace.test_trace_w_optional_inputê	  s�   € ä	Ð(°4Ñ	8ñ	ó 
9ð	ô �GŠG�F¤"§*¡*Ñ-ˆÙˆqŒ	à×ÑœyÔ)¨VÙ�4ŒL÷ *ô �V×%Ñ%Ó&ˆØ×ÑÐCÀVÕL÷	 *Õ)ús   Á	B
Â

B)r  r  )r×   rØ   rÙ   rÚ   rÛ   r.   r  r  r   rà   rá   râ   s   @r   r  r  ¦	  s%   ø† ñõJòò0%÷dMð Mr   r  c                   ób   • \ rS rSr\" / SQ5      r\" / SQ5      r/ SQrS rS r	S r
S rS	 rS
rg)Ú
TestBasicsiú	  )rn   rk   rk   rn   )rk   rn   rk   rn   )r¤  r©  rª  )r¥  rµ  )r•   r~  r�  c           
      ó8  • U R                  X[        R                  " S///[        R                  S9[        R                  " S5      4S5        U R                  X[        R                  " S5      [        R                  " S///[        R                  S94S5        g )Nr   rj   F)rZ  r   rT  rš   rË  )r0   rñ  rc   s      r   Ú_assert_wrong_dimÚTestBasics._assert_wrong_dim
  sr   € à×'Ñ'ØœŸš A 3 % ´·
±
Ñ;¼R¿WºWÀQ»ZÐHÈ%ô	Qà×'Ñ'ØœŸš ›
¤B§H¢H°¨s¨e¨W¼B¿J¹JÑ$GÐHÈ%õ	Qr   c                 óÈ   • [        U[        5      (       d  U$ [        U5      S:X  a  U R                  US   U5      $ U R                  US   US   -  U5      R	                  XS9$ )Nr   r   rl   )rN  r€  rN   r>   rB   )r0   ro   r<   rm   s       r   Ú
_gen_inputÚTestBasics._gen_input

  sn   € Ü˜$¤×&Ñ&ØˆKä�4‹y˜A‹~Ø×)Ñ)¨$¨q©'°5Ó9Ð9à×)Ñ)Ø˜‘G˜d 1™gÑ%Øóç"™7Øð #ð 'ð'r   c                 ó  • U R                  X[        U R                  5      5      nU R                  X#[        U R                  5      5      n[        R
                  " U5      (       a  US-   n[        R
                  " U5      (       a  US-   nXE4$ )Nrò  )r(  rs  Úorder1Úorder2r   r  )r0   Úsize1Úsize2r<   r   r   s         r   Ú
_get_inputÚTestBasics._get_input
  sk   € Ø�O‰O˜E¬$¨t¯{©{Ó*;Ó<ˆØ�O‰O˜E¬$¨t¯{©{Ó*;Ó<ˆä�?Š?˜1×ÑØ�B‘ˆAÜ�?Š?˜1×ÑØ�B‘ˆAØˆvˆr   c                 ó  ^ ^	• [        SS9" [        5      m	U	U 4S jn[        T R                  5      n[	        T R
                  T R
                  5       H¤  u  p4[        U5      nT R                  X4U5      u  pgU" Xg5        [        R                  " [        R                  " U5      R                  [        R                  " U5      R                  4[        R                  " U5      R                  S9nU" XgUS9  M¦     T R                  ST	5        g )NTr–   c                 óð  >• [        X5      nT" X5      nS[        R                  " [        R                  " U 5      R                  5      R
                  -  n[        R                  R                  XCXUS9  SU;   aJ  T" X40 UD6n[        R                  R                  XCUUS9  [        R                  R                  US   UXUS9  TR                  5          T" X40 UD6  S S S 5        g ! , (       d  f       g = f)NrŽ  r­  r!   )	r4  r   r‘  Úasarrayr<   r’  r“  r”  ra   ©r   r   rÄ  re   rf   rk  rc   r0   s         €€r   rÇ  Ú$TestBasics.test_outer.<locals>.check#
  sÕ   ø€ ô $ AÓ)ˆHÙ˜“+ˆCà”b—h’hœrŸzšz¨!›}×2Ñ2Ó3×>Ñ>Ñ>ˆCÜ�J‰J×&Ñ& s¸3Ð&ÑIð ˜‹Ù˜AÑ+ FÑ+�Ü—
‘
×*Ñ*¨3¸sØ03ð +ñ 5ä—
‘
×*Ñ*¨6°%©=¸(Ø03ð +ñ ?ð ×%Ñ%Õ'Ù�aÑ%˜fÒ%÷ (×'Ö'ús   Ã
C'Ã'
C5rj   r    r3  )r   r4  r   r™   r   rº  rs  r/  r   rq   r3  ro   r<   r%  )
r0   rÇ  Údtsr-  r.  r<   r   r   r+  rc   s
   `        @r   Ú
test_outerÚTestBasics.test_outer 
  sÂ   ù€ Ü˜TÒ"¤<Ó0ˆö	&ô* �D—K‘KÓ ˆÜ# D§J¡J°·
±
Ö;‰LˆEÜ˜“IˆEØ—_‘_ U°5Ó9‰FˆQÙ�!ŒKÜ—’œ"Ÿ*š* Q›-×,Ñ,¬b¯jªj¸«m×.@Ñ.@ÐAÜ"$§*¢*¨Q£-×"5Ñ"5ñ7ˆAá�!˜AÔñ <ð 	×Ñ˜w¨Õ.r   c                 ó´  ^ ^	• [        SS9" [        5      m	U	U 4S jn[        T R                  T R                  T R                  5       H"  u  p#nT R                  X#U5      u  pVU" XV5        M$     T R                  ST	5        [        R                  " S5      S S S2   [        R                  " S5      S S S2   4nSnT R                  T	Xx[        R                  S9  g )	NTr–   c                 óN  >• [        X5      nT" X5      nS[        R                  " [        R                  " U 5      R                  5      R
                  -  n[        R                  R                  XCXUS9  TR                  5          T" X5        S S S 5        g ! , (       d  f       g = f)NrŽ  r­  )	r7  r   r‘  r3  r<   r’  r“  r”  ra   r4  s         €€r   rÇ  Ú#TestBasics.test_kron.<locals>.checkF
  su   ø€ ä" 1Ó(ˆHÙ˜“+ˆCà”b—h’hœrŸzšz¨!›}×2Ñ2Ó3×>Ñ>Ñ>ˆCÜ�J‰J×&Ñ& s¸3Ð&ÑIð ×%Ñ%Õ'Ù�a”÷ (×'Ö'ús   Â	BÂ
B$r6  r�  r­   zonly supports 'C' or 'F' layoutr‰  )r   r7  r   rº  r™   r/  r%  r   rq   rf  r
   r�   )
r0   rÇ  r-  r.  r<   r   r   rd   rŒ   rc   s
   `        @r   Ú	test_kronÚTestBasics.test_kronC
  s¶   ù€ Ü˜TÒ"¤;Ó/ˆö
	ô ˜Ÿ
™
 D§J¡J°·±Ö<ñ  ˆE˜%à—_‘_ U°5Ó9‰FˆQÙ�!ŽKñ =ð 	×Ñ˜v uÔ-ä—’˜“™S˜q˜SÑ!¤2§8¢8¨B£<±°!°Ñ#4Ð5ˆØ/ˆØ×Ñ˜% ´×0BÑ0BÐÒCr   rÖ   N)r×   rØ   rÙ   rÚ   r   r+  r,  rº  r%  r(  r/  r7  r<  rà   rÖ   r   r   r#  r#  ú	  s;   † áÒ'Ó(€FÙÒ'Ó(€Fò ?€EòQò
'òò!/õFDr   r#  c                   ó   • \ rS rSrS rSrg)ÚTestHelpersi^
  c                 ó  ^ ^• SSK Jm  U 4S jn[        U4S j5       nSS/n[        R                  /nSS/nU" U[        R
                  X4U5        [        U4S	 j5       nS
S/n[        R                  /nSS/nS nU" XgX4U5        g )Nr   )Ú_copy_to_fortran_orderc                 óT  >• [        X#U5       H—  u  pVn[        R                  " [        R                  " U5      5      R	                  XWS9nU " U5      n	T
R                  U" U5      U	5        T
R                  UR                  R                  U	R                  R                  5        M™     g )Nrl   )	r   r   r6   ÚprodrB   rb   ÚassertNotEqualÚctypesÚdata)ÚudtÚexpectfnÚshapesr™   r‚  ry   r<   rm   r   rO  r0   s             €r   rÇ  Ú5TestHelpers.test_copy_to_fortran_order.<locals>.checkb
  s{   ø€ Ü'.¨v¸vÖ'FÑ#�˜eÜ—I’IœbŸgšg e›nÓ-×5Ñ5°eÐ5ÐI�á˜“F�à×'Ñ'©°«°QÔ7à×#Ñ# A§H¡H§M¡M°1·8±8·=±=ÖAò (Gr   c                 ó   >• T" U 5      $ r   rÖ   )r   rA  s    €r   Údirect_callÚ;TestHelpers.test_copy_to_fortran_order.<locals>.direct_calll
  s   ø€ á)¨!Ó,Ð,r   )r•   rÁ   )r•   r­   rŽ  rk   rn   c                 ó*   >• U S S S2   S   nT" U5      $ ©Nr­   r   rÖ   )r   ÚslicedrA  s     €r   Úslice_to_anyÚ<TestHelpers.test_copy_to_fortran_order.<locals>.slice_to_anyv
  s!   ø€ ð ‘s˜�s‘V˜A‘YˆFÙ)¨&Ó1Ð1r   )r•   r•   rÁ   )r•   r•   r­   rŽ  c                 óD   • U S S S2   S   n[         R                  " U5      $ rO  )r   Úasfortranarray)r   rP  s     r   Úexpected_slice_to_anyÚETestHelpers.test_copy_to_fortran_order.<locals>.expected_slice_to_any€
  s$   € à‘s˜�s‘V˜A‘YˆFÜ×$Ò$ VÓ,Ð,r   )Únumba.np.linalgrA  r   r   ÚintprT  )	r0   rÇ  rL  rI  r™   r‚  rQ  rU  rA  s	   `       @r   Útest_copy_to_fortran_orderÚ&TestHelpers.test_copy_to_fortran_order_
  s›   ù€ Ý:õ	Bô 
ô	-ó 
ð	-ð ˜)Ð$ˆÜ—'‘'�ˆØ�s�ˆÙˆkœ2×,Ñ,¨f¸fÔEô 
ô	2ó 
ð	2ð
 ˜\Ð*ˆÜ—'‘'�ˆØ�s�ˆò	-ñ
 	ˆl°6À6ÕJr   rÖ   N)r×   rØ   rÙ   rÚ   rY  rà   rÖ   r   r   r?  r?  ^
  s   † õ&Kr   r?  Ú__main__rµ  )r˜   )gVçž¯Ò<r   r}  )JrÞ   r+   Ú	itertoolsr   r   ÚsysrI   Únumbersr   r   ÚplatformÚnumpyr   Únumbar   r   r	   Ú
numba.corer
   Únumba.tests.supportr   r   r   r   r   r   r   Úunittestr   r#   r%   r(   rè   rì   rð   ró   r÷   rû   r   r  r  r  r  r  r  r  r"  r'  r*  r/  r1  r4  r7  r9  r¡  r¾  rã  rõ  r0  rK  rX  rc  rš  r©  r»  rÕ  rã  rí  rú  r  r#  r?  r×   ÚmainrÖ   r   r   Ú<module>rf     s  ðÛ Û 	ß $Û 
Û ß $Û ã ç #Ñ #Ý ÷B÷ Bå *Û òò!òôjÐ% xô jò^	ò!òò òò!ô+òô(ò!ôò òô"ô ô)ò(ôòô#òôBCÐ(¨(ô BCôJgI˜ô gIôTN2�Nô N2ôbPJ˜ô PJôfj$˜^ô j$ôZ}8�Nô }8ô@u1�>ô u1ôp@˜ô @ô.E.Ð'ô E.ôPT2Ð'ô T2ônN2�^ô N2ôby2˜nô y2ô~fNÐ&ô fNôRQN�^ô QNôhD2Ð,ô D2ôN?P˜Nô ?PôDQM�ô QMôhaDÐ"ô aDôH'K�(ô 'KðR ˆzÓØ‡M‚M…Oð r   