Ë
    èÿæibw ã                   ó2  — d dl Z d dlZd dlmZmZ d dlZd dlZd dlmZm	Z	 d dl
Z
d dlZd dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZ ddlmZ d dlZd	„ Zd
„ Zd„ Z G d„ dee«      Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%dJd„Z&d„ Z'dKd„Z(d„ Z)dLd„Z*d„ Z+d„ Z,dMd„Z-dMd„Z.dMd„Z/d„ Z0dNd„Z1d „ Z2dMd!„Z3d"„ Z4 G d#„ d$ee«      Z5 G d%„ d&e«      Z6 G d'„ d(e5«      Z7 G d)„ d*e5«      Z8 G d+„ d,e5«      Z9 G d-„ d.e5«      Z: G d/„ d0e5«      Z; G d1„ d2e5«      Z< G d3„ d4e<«      Z= G d5„ d6e<«      Z> G d7„ d8e5«      Z? G d9„ d:e5«      Z@ G d;„ d<e<«      ZA G d=„ d>e5«      ZB G d?„ d@e<«      ZC G dA„ dBe5«      ZD G dC„ dDe5«      ZE G dE„ dFe<«      ZF G dG„ dHe«      ZGeHdIk(  r ej’                  «        yy)Oé    N)ÚproductÚcycle)ÚNumberÚIntegral)ÚjitÚnjitÚtypeof)Úerrors)ÚTestCaseÚtagÚneeds_lapackÚ
needs_blasÚ
_is_armv7lÚEnableNRTStatsMixiné   )Úmatmul_usecasec                 ó.   — t        j                  | |«      S ©N©ÚnpÚdot©ÚaÚbs     úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_linalg.pyÚdot2r      s   € Ü�6‰6�!�Q‹<Ðó    c                 ó2   — t        j                  | ||¬«      S ©N©Úoutr   ©r   r   r!   s      r   Údot3r#      s   € Ü�6‰6�!�Q˜CÔ Ð r   c                 ó.   — t        j                  | |«      S r   )r   Úvdotr   s     r   r%   r%      ó   € Ü�7‰7�1�a‹=Ðr   c                   ób  ‡ — e Zd ZdZej
                  ej                  ej                  ej                  fZ	ˆ fd„Z
d„ Zd„ Zej                  d„ «       Zd„ Zd„ Zd„ Zdd	„Zdd
„Zd„ Zed„ «       Zed„ «       Zd„ Zed„ «       Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z ˆ xZ!S )ÚTestProductz!
    Tests for dot products.
    c                 óR   •— t        j                  «        t        t        | �  «        y r   )ÚgcÚcollectÚsuperr(   ÚsetUp©ÚselfÚ	__class__s    €r   r-   zTestProduct.setUp&   s   ø€ ä
�
‰
ŒÜŒk˜4Ñ&Õ(r   c                 ó¼   — t        j                  |«      }t        |t         j                  «      r|dz  dz   j	                  |«      S |dz  dz
  j	                  |«      S ©Ny      ð?      à¿y               @g      à?r   ©r   ÚarangeÚ
issubclassÚcomplexfloatingÚastype©r/   ÚnÚdtypeÚbases       r   Úsample_vectorzTestProduct.sample_vector+   óU   € ô �y‰y˜‹|ˆÜ�eœR×/Ñ/Ô0Ø˜HÑ%¨Ñ*×2Ñ2°5Ó9Ð9à˜3‘J ‘N×*Ñ*¨5Ó1Ð1r   c                 óN   — | j                  ||z  |«      j                  ||f«      S r   )r<   Úreshape)r/   Úmr9   r:   s       r   Úsample_matrixzTestProduct.sample_matrix4   s(   € Ø×!Ñ! ! a¡%¨Ó/×7Ñ7¸¸A¸Ó?Ð?r   c              #   ód  K  — t        j                  d¬«      5 }t        j                  dt        j                  «       d–— ddd«       | j                  t        «      d«       | j                  |d   j                  t        j                  «       | j                  dt        |d   j                  «      «       | j                  |d   j                  |j                  j                  «       | j                  |d   j                   |j                  j"                  dz   «       y# 1 sw Y   ŒãxY w­w)zB
        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)r/   ÚpyfuncÚws      r   Úcheck_contiguity_warningz$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   ‚D0™)D$ÁC"D0Ä$D-Ä)D0c                 óŽ   — | j                  «       5   ||Ž } ||Ž }| j                  ||d¬«       ~~d d d «       y # 1 sw Y   y xY w)NT©Úignore_sign_on_zero)ÚassertNoNRTLeakÚassertPreciseEqual)r/   rV   ÚcfuncÚargsÚexpectedÚgots         r   Ú
check_funczTestProduct.check_funcF   sF   € Ø×!Ñ!Õ#Ù˜t�}ˆHÙ˜�,ˆCØ×#Ñ# C¨ÀtÐ#ÔLØ�X÷	 $×#Ñ#ús	   ‘!;»Ac                 óz  — |j                   dz   |j                  z  dz   }|j                   |j                  z  }t        j                  |t        j                  ¬«      }t        |j                  dz   «      D ]<  }||||z    j                  |j                  ¬«      }|j                  j                  sŒ< n t        d«      ‚|j                  j                  r#t        j                  ||j                  d¬«      }n"t        j                  ||j                  d¬«      }|d d  |d d  |j                  j                  sJ ‚|S )Nr   ©r:   zCould not obtain aligned arrayÚC©ÚorderÚF)ÚsizeÚitemsizer   ÚemptyÚuint8ÚrangeÚviewr:   ÚflagsÚalignedÚ	ExceptionÚc_contiguousr?   Úshape)r/   Úarrri   ÚdatasizeÚtmpÚiÚnews          r   Ú_aligned_copyzTestProduct._aligned_copyN   sû   € ð —‘˜1‘ §¡Ñ,¨qÑ0ˆØ—8‘8˜cŸl™lÑ*ˆÜ�h‰h�t¤2§8¡8Ô,ˆÜ�s—|‘| aÑ'Ö(ˆAØ�a˜!˜h™,Ð'×,Ñ,°3·9±9Ð,Ó=ˆCØ�y‰y× Ó Ùð )ô
 Ð<Ó=Ð=Ø�9‰9×!Ò!Ü—*‘*˜S #§)¡)°3Ô7‰Cä—*‘*˜S #§)¡)°3Ô7ˆCØ‘Q�ˆ‰AˆØ�y‰y× Ò Ð Ð Øˆ
r   c                 ó>  — t         r| j                  nt        j                  }| j	                  «       5   ||«      } ||«      }| j                   ||d|iŽ|«       | j                   ||d|iŽ|«       | j                  ||d¬«       ~~d d d «       y # 1 sw Y   y xY w)Nr!   TrZ   )r   ry   r   Úcopyr\   rK   r]   )r/   rV   r^   r_   r!   Úcopierr`   ra   s           r   Úcheck_func_outzTestProduct.check_func_outc   s‰   € Ý'1�×#Ò#´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                 ó¸   — | j                  t        «      5 } ||Ž  d d d «       |rdnd}| j                  |t        j                  «      «       y # 1 sw Y   Œ5xY w)Nzincompatible output array sizezincompatible array sizes)ÚassertRaisesÚ
ValueErrorrM   rN   Ú	exception)r/   r^   r_   Úis_outÚraisesÚmsgs         r   Úassert_mismatching_sizesz$TestProduct.assert_mismatching_sizesm   sN   € Ø×ÑœzÔ*¨fÙ�4‰L÷ +á39Ñ/Ø)ð 	à�‰�cœ3˜v×/Ñ/Ó0Õ1÷	 +Ð*ús   –AÁAc                 óÆ   — | j                  t        j                  «      5 } ||Ž  d d d «       | j                  |›d�t	        j
                  «      «       y # 1 sw Y   Œ2xY w)Nz' arguments must all have the same dtype)r   r
   ÚTypingErrorrM   rN   r�   )r/   r^   r_   Ú	func_namerƒ   s        r   Úassert_mismatching_dtypesz%TestProduct.assert_mismatching_dtypest   sO   € Ø×Ñœv×1Ñ1Ô2°fÙ�4‰L÷ 3à�‰Ú"ð%ä˜&×*Ñ*Ó+õ	-÷ 3Ð2ús    AÁA c           
      ó\  — d} t        d¬«      |«      }| j                  D ]\  }| j                  ||«      }| j                  ||«      }| j                  ||||f«       | j                  |||d d d…   |d d d…   f«       Œ^ | j                  |dz
  t        j
                  «      }| j                  |t        j
                  «      }| j                  |||f«       | j                  |t        j                  «      }| j                  |t        j
                  «      }| j                  |||f|¬«       y )Né   T©Únopythonéÿÿÿÿr   )rˆ   )	r   Údtypesr<   rb   r   Úfloat64r…   Úfloat32r‰   )r/   rV   rˆ   r9   r^   r:   r   r   s           r   Úcheck_dot_vvzTestProduct.check_dot_vv{   s  € ØˆØ"”˜TÔ" 6Ó*ˆØ—[”[ˆEØ×"Ñ" 1 eÓ,ˆAØ×"Ñ" 1 eÓ,ˆAØ�O‰O˜F E¨A¨q¨6Ô2à�O‰O˜F E¨A©d°¨d©G°Q±t¸°t±WÐ+=Õ>ð !ð ×Ñ˜q 1™u¤b§j¡jÓ1ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×%Ñ% e¨a°¨VÔ4à×Ñ˜q¤"§*¡*Ó-ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×&Ñ& u¨q°!¨fÀ	Ð&ÕJr   c                 ó0   — | j                  t        d«       y)z/
        Test vector * vector np.dot()
        únp.dot()N)r’   r   ©r/   s    r   Útest_dot_vvzTestProduct.test_dot_vvŽ   s   € ð
 	×Ñœ$ 
Õ+r   c                 ó0   — | j                  t        d«       y)z 
        Test np.vdot()
        z	np.vdot()N)r’   r%   r•   s    r   Ú	test_vdotzTestProduct.test_vdot•   s   € ð
 	×Ñœ$ Õ,r   c                 ób  ‡ — ˆ fd„} t        d¬«      |«      }|� t        d¬«      |«      }dD ]µ  \  }} |||«      D ]9  \  }	}
‰ j                  |||	|
f«       ‰ j                  |||
|	j                  f«       Œ; |€ŒN |||«      D ]\  \  }	}
t        j                  ||	j
                  ¬«      }‰ j                  ||	|
f|«       ‰ j                  |||
|	j                  f|«       Œ^ Œ· d\  }}‰ j                  ||dz
  t        j                  «      }	‰ j                  |t        j                  «      }
‰ j                  ||	|
f«       ‰ j                  ||
|	j                  f«       |�øt        j                  |t        j                  «      }‰ j                  |	|
|f«       ‰ j                  ||
|	j                  |f«       ‰ j                  ||t        j                  «      }	‰ j                  |t        j                  «      }
t        j                  |dz
  t        j                  «      }‰ j                  ||	|
|fd¬«       ‰ j                  ||
|	j                  |fd¬«       ‰ j                  ||t        j                  «      }	‰ j                  |t        j                  «      }
‰ j                  ||	|
f|«       |�|‰ j                  ||t        j                  «      }	‰ j                  |t        j                  «      }
t        j                  |t        j                  «      }‰ j                  |	|
|f|«       y y )	Nc              3   óf  •K  — dD ]Y  }‰j                  | |t        j                  «      j                  |¬«      }‰j	                  |t        j                  «      }||f–— Œ[ ‰j
                  D ]-  }‰j                  | ||«      }‰j	                  ||«      }||f–— Œ/ d d d…   d d d…   f–— y ­w©NÚCFrf   rŽ   )rA   r   r�   r{   r<   r�   )r@   r9   rg   r   r   r:   r/   s         €r   Úsamplesz)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.B1TrŒ   )©é   r‹   )r‹   r   )r   r‹   rd   rž   r   ©r‚   )r   rb   ÚTr   rk   r:   r}   rA   r�   r<   r…   r‘   r‰   )r/   Úpyfunc2Úpyfunc3rˆ   r�   Úcfunc2Úcfunc3r@   r9   r   r   r!   s   `           r   Úcheck_dot_vmzTestProduct.check_dot_vmœ   sÄ  ø€ ô
	#ð $”˜dÔ# GÓ,ˆØÐØ'”S $Ô'¨Ó0ˆFó‰DˆAˆqñ    1ž‘��1Ø—‘ ¨°!°Q°Ô8Ø—‘ ¨°!°Q·S±S°Õ:ð &ð Ñ"Ù# A qžM‘D�A�qÜŸ(™( 1¨A¯G©GÔ4�CØ×'Ñ'¨°¸!¸Q¸ÀÔEØ×'Ñ'¨°¸!¸Q¿S¹S¸À3ÕGñ *ðð ‰ˆˆ1Ø×Ñ˜q ! a¡%¬¯©Ó4ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×%Ñ% f¨q°!¨fÔ5Ø×%Ñ% f¨q°!·#±#¨hÔ7ØÐÜ—(‘(˜1œbŸj™jÓ)ˆCØ×)Ñ)¨&°1°a¸°+Ô>Ø×)Ñ)¨&°1°a·c±c¸3°-Ô@Ø×"Ñ" 1 a¬¯©Ó4ˆAØ×"Ñ" 1¤b§j¡jÓ1ˆAÜ—(‘(˜1˜q™5¤"§*¡*Ó-ˆCØ×)Ñ)¨&°1°a¸°+ÀdÐ)ÔKØ×)Ñ)¨&°1°a·c±c¸3°-ÈÐ)ÔMà×Ñ˜q !¤R§Z¡ZÓ0ˆØ×Ñ˜q¤"§*¡*Ó-ˆØ×&Ñ& v°°1¨v°yÔAØÐØ×"Ñ" 1 a¬¯©Ó4ˆAØ×"Ñ" 1¤b§j¡jÓ1ˆAÜ—(‘(˜1œbŸj™jÓ)ˆCØ×*Ñ*¨6°A°q¸#°;À	ÕJð	 r   c                 ó:   — | j                  t        t        d«       y)zC
        Test vector * matrix and matrix * vector np.dot()
        r”   N)r¦   r   r#   r•   s    r   Útest_dot_vmzTestProduct.test_dot_vmÔ   ó   € ð
 	×Ñœ$¤ jÕ1r   c                 ó4  ‡ — ˆ fd„} t        d¬«      |«      }|� t        d¬«      |«      }dD ]ñ  \  }}}	 ||||	«      D ]C  \  }
}‰ j                  |||
|f«       ‰ j                  |||j                  |
j                  f«       ŒE |€ŒZ ||||	«      D ]‹  \  }
}t        j                  ||f|
j
                  ¬«      }‰ j                  ||
|f|«       t        j                  ||f|
j
                  ¬«      }‰ j                  |||j                  |
j                  f|«       Œ� Œó d\  }}}	‰ j                  ||	dz
  t        j                  «      }
‰ j                  |	|t        j                  «      }‰ j                  ||
|f«       |�½t        j                  ||ft        j                  «      }‰ j                  |
||f«       ‰ j                  ||	t        j                  «      }
‰ j                  |	|t        j                  «      }t        j                  ||dz
  ft        j                  «      }‰ j                  ||
||fd¬«       ‰ j                  ||	t        j                  «      }
‰ j                  |	|t        j                  «      }‰ j                  ||
|f|«       |�‰ j                  ||	t        j                  «      }
‰ j                  |	|t        j                  «      }t        j                  ||ft        j                  «      }‰ j                  |
||f|«       y y )	Nc              3   ó¤  •K  — t        dd«      D ]m  \  }}‰j                  | |t        j                  «      j	                  |¬«      }‰j                  ||t        j                  «      j	                  |¬«      }||f–— Œo ‰j
                  D ].  }‰j                  | ||«      }‰j                  |||«      }||f–— Œ0 d d d…   d d d…   f–— y ­wr›   )r   rA   r   r�   r{   r�   )	r@   r9   ÚkÚorder_aÚorder_br   r   r:   r/   s	           €r   r�   z)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   rd   r¯   r   r    )r   rb   r¡   r   rk   r:   r}   rA   r�   r…   r‘   r‰   )r/   r¢   r£   rˆ   r�   r¤   r¥   r@   r9   r¬   r   r   r!   s   `            r   Úcheck_dot_mmzTestProduct.check_dot_mmÛ   sµ  ø€ ô
	#ð $”˜dÔ# GÓ,ˆØÐØ'”S $Ô'¨Ó0ˆFó‰GˆAˆq�!ñ    1 aÖ(‘��1Ø—‘ ¨°!°Q°Ô8Ø—‘ ¨°!·#±#°q·s±s°Õ<ð )ð Ñ"Ù# A q¨!Ö,‘D�A�qÜŸ(™( A q 6°·±Ô9�CØ×'Ñ'¨°¸!¸Q¸ÀÔEÜŸ(™( A q 6°·±Ô9�CØ×'Ñ'¨°¸!¿#¹#¸q¿s¹s¸ÀSÕIñ	 -ðð& ‰ˆˆ1ˆaØ×Ñ˜q ! a¡%¬¯©Ó4ˆØ×Ñ˜q !¤R§Z¡ZÓ0ˆØ×%Ñ% f¨q°!¨fÔ5ØÐÜ—(‘(˜A˜q˜6¤2§:¡:Ó.ˆCØ×)Ñ)¨&°1°a¸°+Ô>Ø×"Ñ" 1 a¬¯©Ó4ˆAØ×"Ñ" 1 a¬¯©Ó4ˆAÜ—(‘(˜A˜q 1™u˜:¤r§z¡zÓ2ˆCØ×)Ñ)¨&°1°a¸°+ÀdÐ)ÔKà×Ñ˜q !¤R§Z¡ZÓ0ˆØ×Ñ˜q !¤R§Z¡ZÓ0ˆØ×&Ñ& v°°1¨v°yÔAØÐØ×"Ñ" 1 a¬¯©Ó4ˆAØ×"Ñ" 1 a¬¯©Ó4ˆAÜ—(‘(˜A˜q˜6¤2§:¡:Ó.ˆCØ×*Ñ*¨6°A°q¸#°;À	ÕJð	 r   c                 ó:   — | j                  t        t        d«       y)z/
        Test matrix * matrix np.dot()
        r”   N)r±   r   r#   r•   s    r   Útest_dot_mmzTestProduct.test_dot_mm  r©   r   c                 ó0   — | j                  t        d«       y)z&
        Test vector @ vector
        ú'@'N)r’   r   r•   s    r   Útest_matmul_vvzTestProduct.test_matmul_vv   s   € ð
 	×Ñœ.¨%Õ0r   c                 ó2   — | j                  t        dd«       y)z:
        Test vector @ matrix and matrix @ vector
        Nrµ   )r¦   r   r•   s    r   Útest_matmul_vmzTestProduct.test_matmul_vm'  ó   € ð
 	×Ñœ.¨$°Õ6r   c                 ó2   — | j                  t        dd«       y)z&
        Test matrix @ matrix
        Nrµ   )r±   r   r•   s    r   Útest_matmul_mmzTestProduct.test_matmul_mm.  r¹   r   c                 ó   — d\  }}}t         j                  }| j                  |||«      d d d…   }| j                  |||«      d d d…   }t        j                  ||f|«      } t	        d¬«      t
        «      }| j                  |j                  «      5   |||«       d d d «        t	        d¬«      t        «      }| j                  |j                  «      5   ||||«       d d d «       | j                  ||«      d d d…   }| j                  ||«      d d d…   } t	        d¬«      t        «      }| j                  |j                  «      5   |||«       d d d «       y # 1 sw Y   ŒÁxY w# 1 sw Y   Œ‰xY w# 1 sw Y   y xY w)Nr¯   rŽ   TrŒ   )r   r�   rA   rk   r   r   rX   Úpy_funcr#   r<   r%   )	r/   r@   r¬   r9   r:   r   r   r!   r^   s	            r   Útest_contiguity_warningsz$TestProduct.test_contiguity_warnings5  sP  € à‰ˆˆ1ˆaÜ—
‘
ˆØ×Ñ˜q ! UÓ+©D¨b¨DÑ1ˆØ×Ñ˜q ! UÓ+©D¨b¨DÑ1ˆÜ�h‰h˜˜1�v˜uÓ%ˆà"”˜TÔ"¤4Ó(ˆØ×*Ñ*¨5¯=©=Õ9Ù�!�QŒK÷ :à"”˜TÔ"¤4Ó(ˆØ×*Ñ*¨5¯=©=Õ9Ù�!�Q˜Ô÷ :ð ×Ñ˜q %Ó(©¨2¨Ñ.ˆØ×Ñ˜q %Ó(©¨2¨Ñ.ˆà"”˜TÔ"¤4Ó(ˆØ×*Ñ*¨5¯=©=Õ9Ù�!�QŒK÷ :Ð9÷ :Ð9ú÷ :Ð9ú÷ :Ð9ús$   Â
EÃE(Å	
E4ÅE%Å(E1Å4E=)F)r”   )"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r�   r‘   Ú
complex128Ú	complex64r�   r-   r<   rA   Ú
contextlibÚcontextmanagerrX   rb   ry   r}   r…   r‰   r’   r   r–   r˜   r¦   r¨   r±   r³   r¶   r¸   r»   r¾   Ú__classcell__©r0   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                 ó@   — t         j                  j                  | «      S r   ©r   ÚlinalgÚinv©r   s    r   Úinvert_matrixrÎ   N  ó   € Ü�9‰9�=‰=˜ÓÐr   c                 ó@   — t         j                  j                  | «      S r   )r   rË   ÚcholeskyrÍ   s    r   Úcholesky_matrixrÒ   R  ó   € Ü�9‰9×Ñ˜aÓ Ð r   c                 ó@   — t         j                  j                  | «      S r   )r   rË   ÚeigrÍ   s    r   Ú
eig_matrixrÖ   V  rÏ   r   c                 ó@   — t         j                  j                  | «      S r   )r   rË   ÚeigvalsrÍ   s    r   Úeigvals_matrixrÙ   Z  ó   € Ü�9‰9×Ñ˜QÓÐr   c                 ó@   — t         j                  j                  | «      S r   )r   rË   ÚeighrÍ   s    r   Úeigh_matrixrÝ   ^  ó   € Ü�9‰9�>‰>˜!ÓÐr   c                 ó@   — t         j                  j                  | «      S r   )r   rË   ÚeigvalshrÍ   s    r   Úeigvalsh_matrixrá   b  rÓ   r   c                 óB   — t         j                  j                  | |«      S r   ©r   rË   Úsvd)r   Úfull_matricess     r   Ú
svd_matrixræ   f  s   € Ü�9‰9�=‰=˜˜MÓ*Ð*r   c                 ó@   — t         j                  j                  | «      S r   ©r   rË   ÚqrrÍ   s    r   Ú	qr_matrixrê   j  s   € Ü�9‰9�<‰<˜‹?Ðr   c                 óD   — t         j                  j                  | ||«      S r   ©r   rË   Úlstsq)ÚAÚBÚrconds      r   Úlstsq_systemrñ   n  s   € Ü�9‰9�?‰?˜1˜a Ó'Ð'r   c                 óB   — t         j                  j                  | |«      S r   ©r   rË   Úsolve)rî   rï   s     r   Úsolve_systemrõ   r  s   € Ü�9‰9�?‰?˜1˜aÓ Ð r   c                 ó@   — t         j                  j                  | «      S r   ©r   rË   Úpinv)rî   rð   s     r   Úpinv_matrixrù   v  rÞ   r   c                 ó@   — t         j                  j                  | «      S r   ©r   rË   ÚslogdetrÍ   s    r   Úslogdet_matrixrý   z  rÚ   r   c                 ó@   — t         j                  j                  | «      S r   )r   rË   ÚdetrÍ   s    r   Ú
det_matrixr   ~  rÏ   r   c                 óB   — t         j                  j                  | |«      S r   )r   rË   Únorm)r   Úords     r   Únorm_matrixr  ‚  s   € Ü�9‰9�>‰>˜!˜SÓ!Ð!r   c                 óB   — t         j                  j                  | |«      S r   )r   rË   Úcond)r   Úps     r   Úcond_matrixr  †  s   € Ü�9‰9�>‰>˜!˜QÓÐr   c                 óB   — t         j                  j                  | |«      S r   ©r   rË   Úmatrix_rank)r   Útols     r   Úmatrix_rank_matrixr  Š  s   € Ü�9‰9× Ñ   CÓ(Ð(r   c                 óB   — t         j                  j                  | |«      S r   )r   rË   Úmatrix_power)r   r9   s     r   Úmatrix_power_matrixr  Ž  s   € Ü�9‰9×!Ñ! ! QÓ'Ð'r   c                 ó.   — t        j                  | |«      S r   ©r   Útrace)r   Úoffsets     r   Útrace_matrixr  ’  s   € Ü�8‰8�A�vÓÐr   c                 ó,   — t        j                  | «      S r   r  rÍ   s    r   Útrace_matrix_no_offsetr  –  s   € Ü�8‰8�A‹;Ðr   c                 ó2   — t        j                  | ||¬«      S r   )r   Úouterr"   s      r   Úouter_matrixr  š  s   € Ü�8‰8�A�q˜cÔ"Ð"r   c                 ó.   — t        j                  | |«      S r   )r   Úkronr   s     r   Úkron_matrixr  ž  r&   r   c                   óÒ   ‡ — e Zd ZdZej
                  ej                  ej                  ej                  fZ	ˆ fd„Z
d„ Z	 dd„Zefd„Zd„ Zd„ Zdd„Zd	„ Zd
„ Zd„ Zdd„Zd„ Zd„ Zˆ xZS )ÚTestLinalgBasezU
    Provides setUp and common data/error modes for testing np.linalg functions.
    c                 óR   •— t        j                  «        t        t        | �  «        y r   )r*   r+   r,   r  r-   r.   s    €r   r-   zTestLinalgBase.setUpª  s   ø€ ä
�
‰
ŒÜŒn˜dÑ)Õ+r   c                 ó¼   — t        j                  |«      }t        |t         j                  «      r|dz  dz   j	                  |«      S |dz  dz   j	                  |«      S r2   r3   r8   s       r   r<   zTestLinalgBase.sample_vector¯  r=   r   c                 ól  — d}t        |«      dk7  rt        d«      ‚|dvrt        d«      ‚|t        j                  t        j                  t        j
                  t        j                  fvrt        d«      ‚|�|�t        d«      ‚|€|}|d	k  rt        d
«      ‚t        j                  j                  d«       |\  }}|dk  s|dk  rt        d«      ‚t        ||«      }	|€|	}
n=|dk  rt        d«      ‚t        |t        «      st        d«      ‚|}
||	kD  rt        d«      ‚|d	k(  s|d	k(  r@||k7  rt        d«      ‚t        ||«      }| j                  ||«      j                  ||«      }|S | j                  ||z  |«      j                  ||«      }t        j                  j!                  |«      \  }}| j                  ||z  |«      ddd…   j                  ||«      }t        j                  j!                  |«      \  }}t        j"                  |||
«      }t        j$                  ||f«      }t        j&                  t        j(                  ||«      «      }|||d   d|
 |d	   d|
 f<   t        j*                  t        j*                  ||«      |j,                  «      }t        j.                  |||¬«      }|S )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.)rh   re   ú 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:   rg   )rJ   r€   r   r‘   r�   rÄ   rÃ   ÚrandomÚseedÚminÚ
isinstancer   Úmaxr<   r?   rË   ré   ÚlinspaceÚzerosÚnonzeroÚeyer   r¡   Úarray)r/   ri   r:   rg   ÚrankÚ	conditionÚd_condr@   r9   ÚminmnÚrvÚmaxmnÚQrv   ÚUÚ_ÚVÚsvÚSÚidxs                       r   Úspecific_sample_matrixz%TestLinalgBase.specific_sample_matrix¸  s‰  € ð  ˆäˆt‹9˜Š>ÜÐ=Ó>Ð>à˜
Ñ"ÜÐ?Ó@Ð@àœŸ™¤R§Z¡Z´·±¼r¿}¹}ÐMÑMÜÐIÓJÐJàÐ 	Ð 5ÜÐNÓOÐOàÐØˆIà�qŠ=ÜÐ<Ó=Ð=ä
�	‰	�‰�qÔØ‰ˆˆ1àˆqŠ5�A˜’EÜÐJÓKÐKä�A�q“	ˆØˆ<Ø‰Bà�qŠyÜ Ð!BÓCÐCÜ˜d¤HÔ-Ü Ð!8Ó9Ð9ØˆBØ�eŠ|Ü Ð!EÓFÐFà�Š6�Q˜!’Vð ˜FÒ"Ü ØNóPð Pä˜˜1“IˆEØ×"Ñ" 5¨%Ó0×8Ñ8¸¸AÓ>ˆAð* ˆð ×$Ñ$ Q¨¡U¨EÓ2×:Ñ:¸1¸aÓ@ˆCÜ—9‘9—<‘< Ó$‰DˆAˆqà×$Ñ$ Q¨¡U¨EÓ2±4°R°4Ñ8×@Ñ@ÀÀAÓFˆCÜ—9‘9—<‘< Ó$‰DˆAˆqä—‘˜V Y°Ó3ˆBÜ—‘˜!˜Q˜Ó ˆAÜ—*‘*œRŸV™V A q›\Ó*ˆCØ*,ˆAˆc�!‰f�S�bˆk˜3˜q™6 # 2˜;Ð&Ñ'Ü—‘”r—v‘v˜a “| Q§S¡SÓ)ˆAÜ—‘˜ %¨uÔ5ˆAàˆr   c                 ó¤   — | j                  |«      5 } ||Ž  d d d «       | j                  |t        j                  «      «       y # 1 sw Y   Œ/xY wr   )r   rM   rN   r�   )r/   r^   r_   r„   Úerrrƒ   s         r   Úassert_errorzTestLinalgBase.assert_error  s@   € Ø×Ñ˜sÔ# vÙ�4‰L÷ $à�‰�cœ3˜v×/Ñ/Ó0Õ1÷ $Ð#ús   ’AÁAc                 ó`   — d}| j                  |||t        j                  j                  «       y )Nz.Last 2 dimensions of the array must be square.©rI  r   rË   ÚLinAlgError©r/   r^   r_   r„   s       r   Úassert_non_squarez TestLinalgBase.assert_non_square  s%   € Ø>ˆØ×Ñ˜%  s¬B¯I©I×,AÑ,AÕBr   c                 óR   — d|z  }| j                  |||t        j                  «       y )Nz9np.linalg.%s() only supported on float and complex arrays©rI  r
   r‡   ©r/   Únamer^   r_   r„   s        r   Úassert_wrong_dtypez!TestLinalgBase.assert_wrong_dtype  s&   € ØIÈDÑPˆØ×Ñ˜%  s¬F×,>Ñ,>Õ?r   c                 ód   — |rdnd}|›d|›d�}| j                  |||t        j                  «       y )Nú	np.linalgr   Ú.z() only supported on 2-D arraysrP  ©r/   rR  r^   r_   Ú	la_prefixÚprefixr„   s          r   Úassert_wrong_dimensionsz&TestLinalgBase.assert_wrong_dimensions  s/   € Ù )‘¨tˆÚ8>ÂÐEˆØ×Ñ˜%  s¬F×,>Ñ,>Õ?r   c                 ó`   — d}| j                  |||t        j                  j                  «       y )Nz$Array must not contain infs or NaNs.rK  rM  s       r   Úassert_no_nan_or_infz#TestLinalgBase.assert_no_nan_or_inf  s%   € Ø4ˆØ×Ñ˜%  s¬B¯I©I×,AÑ,AÕBr   c                 óx  — t        |t        «      r|D ]  }| j                  ||«       Œ yt        |t        «      s€|j                  j
                  }|j                  j                  }d}| j                  ||z  |«       d}|dk(  r| j                  ||«       y|dk(  r| j                  ||«       yt        d«      ‚y)a6  
        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.re   rh   zUnknown contigN)	r2  ÚtupleÚassert_contig_sanityr   ro   rr   Úf_contiguousÚ
assertTruer€   )r/   ra   Úexpected_contigr   Úc_contigÚf_contigr„   s          r   r_  z#TestLinalgBase.assert_contig_sanity"  s¯   € ô �cœ5Ô!ã�Ø×)Ñ)¨!¨_Õ=ñ ô ˜c¤6Ô*àŸ9™9×1Ñ1�ØŸ9™9×1Ñ1�ð O�Ø—‘ ¨8Ñ 3°SÔ9àH�Ø" cÒ)Ø—O‘O H¨cÕ2Ø$¨Ò+Ø—O‘O H¨cÕ2ä$Ð%5Ó6Ð6ð! +r   c                 ób   — d}| j                  |||t        j                  j                  ¬«       y )Nz(Matrix is singular to machine precision.©rH  rK  rM  s       r   Úassert_raise_on_singularz'TestLinalgBase.assert_raise_on_singularG  s(   € Ø8ˆØ×Ñ˜%  s´·	±	×0EÑ0EÐÕFr   c                 óp  — | j                  |j                  d   |j                  d   «       t        j                  |j                  d   |j                  ¬«      }dt        j
                  |j                  «      j                  z  }|€d|z  }|€d|z  }t        j                  j                  ||||«       y)zE
        Checks if a matrix is equal to the identity matrix.
        rŽ   éþÿÿÿrd   é   Né
   éd   )	rP   rs   r   r7  r:   ÚfinfoÚ
resolutionÚtestingÚassert_allclose)r/   ra   ÚrtolÚatolr7  rn  s         r   Úassert_is_identity_matrixz(TestLinalgBase.assert_is_identity_matrixK  s’   € ð
 	×Ñ˜Ÿ™ 2™¨¯	©	°"©Ô6ä�f‰f�S—Y‘Y˜r‘]¨#¯)©)Ô4ˆØœŸ™ #§)¡)Ó,×7Ñ7Ñ7ˆ
Øˆ<Ø˜
‘?ˆDØˆ<Ø˜Ñ#ˆDä
�
‰
×"Ñ" 3¨¨T°4Õ8r   c                 ó8   — d}| j                  |||t        «       y)z5
        For use in norm() and cond() tests.
        z Invalid norm order for matrices.N)rI  r€   rM  s       r   Úassert_invalid_norm_kindz'TestLinalgBase.assert_invalid_norm_kind[  s   € ð 1ˆØ×Ñ˜%  s¬JÕ7r   c                 ó`   — d}| j                  |||t        j                  j                  «       y )NzArrays cannot be emptyrK  rM  s       r   Úassert_raise_on_emptyz$TestLinalgBase.assert_raise_on_emptyb  s%   € Ø&ˆØ×Ñ˜%  s¬B¯I©I×,AÑ,AÕBr   )NN©T)r¿   rÀ   rÁ   rÂ   r   r�   r‘   rÃ   rÄ   r�   r-   r<   rF  r€   rI  rN  rS  rZ  r\  r_  rg  rs  ru  rw  rÇ   rÈ   s   @r   r  r  ¢  s}   ø„ ñð
 �j‰j˜"Ÿ*™* b§m¡m°R·\±\ÐB€Fô,ò
2ð <@óRðh 2<ó 2ò
Cò@ó@ò
Cò#7òJGó9ò 8öCr   r  c                   ó   — e Zd ZdZd„ Zy)ÚTestTestLinalgBasez†
    The sample matrix code TestLinalgBase.specific_sample_matrix()
    is a bit involved, this class tests it works as intended.
    c                 óž  ‡ ‡— t        d«      Šg d¢}t        |‰j                  d«      D �]ë  \  }}}|\  }}t        ||«      }‰j	                  |||«      }‰ j                  |j                  |«       ‰ j                  t        j                  j                  |«      |«       |dkD  re|dz
  }	‰j	                  ||||	¬«      }‰ j                  |j                  |«       ‰ j                  t        j                  j                  |«      |	«       dt        j                  |«      j                  z  }
‰j	                  |||«      }‰ j                  |j                  |«       t        j                  j                  t        j                  j                  |«      d|
|
¬«       |dkD  s�Œyd	}‰j	                  ||||¬
«      }‰ j                  |j                  |«       t        j                  j                  t        j                  j                  |«      d	|
|
¬«       �Œî t        fˆˆ fd„	}‰ j!                  t"        «      5 }d} |dt        j$                  df|t        ¬«       d d d «       d} |dt        j$                  df|t        ¬«       d} |dt        j$                  df|t        ¬«       d} |dt        j&                  df|t        ¬«       d} |dt        j$                  dddf|t        ¬«       d} |dt        j$                  dd df|t        ¬«       d} |dt        j$                  df|t        ¬«       d} |dt        j$                  ddf|t        ¬«       d} |dt        j$                  ddf|t        ¬«       d} |dt        j$                  dd df|t        ¬«       d } |dt        j$                  dd!f|t        ¬«       y # 1 sw Y   �ŒhxY w)"NrF  ©©é   r   ©é   rj  ©rj  r€  ©r‹   r‹   ©r   r~  ÚFCr   ©r9  rj  r#  ©rq  rr  ç      $@©r:  c                 óº   •— ‰j                  |«      5 } ‰j                  | Ž  d d d «       ‰j                  |t        j                  «      «       y # 1 sw Y   Œ/xY wr   )r   rF  rM   rN   r�   )r_   r„   rH  rƒ   Úinstr/   s       €€r   Úcheck_errorzCTestTestLinalgBase.test_specific_sample_matrix.<locals>.check_errorœ  sJ   ø€ Ø×"Ñ" 3Ô'¨6Ø+�×+Ñ+¨TÑ2÷ (à�M‰M˜#œs 6×#3Ñ#3Ó4Õ5÷ (Ð'ús   “AÁAÚblankrž   rh   rf  r$  ©r   r%  Úzr&  r'  r(  rŽ   r)  )rŸ   éýÿÿÿr*  r,  r°   r-  )r   r‹   rk  r+  g      ø?)r  r   r�   r1  rF  rP   rs   r   rË   r  rm  rn  ro  rp  r  r€   r   ÚAssertionErrorr�   Úint32)r/   Úsizesri   r:   rg   r@   r9   r<  rî   r9  rn  r:  r‹  rƒ   r„   rŠ  s   `              @r   Útest_specific_sample_matrixz.TestTestLinalgBase.test_specific_sample_matrixm  sZ  ù€ ô Ð6Ó7ˆâ:ˆô #*¨%°·±¸d×"CÑˆD�%˜à‰DˆAˆqÜ˜˜1“IˆEð ×+Ñ+¨D°%¸Ó?ˆAØ×Ñ˜QŸW™W dÔ+Ø×ÑœRŸY™Y×2Ñ2°1Ó5°uÔ=ð �qŠyØ˜q‘y�Ø×/Ñ/°°e¸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ð ×Ñœ~Ô.°&Øˆ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   È9#OÏON)r¿   rÀ   rÁ   rÂ   r“  © r   r   rz  rz  g  s   „ ñó
aIr   rz  c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚTestLinalgInvz"
    Tests for np.linalg.inv.
    c                 óD  ‡ ‡— d} t        d¬«      t        «      Šˆˆ fd„}t        ‰ j                  d«      D ]"  \  }}‰ j	                  ||f||«      } ||«       Œ$  |t        j                  d«      «       ‰ j                  ‰t        j                  d«      f«       ‰ j                  d‰t        j                  d	t
        j                  ¬
«      f«       ‰ j                  d‰t        j                  d«      f«       ‰ j                  ‰t        j                  d	«      f«       y)z$
        Test np.linalg.inv
        rk  TrŒ   c                 óh  •— t        | «      } ‰| «      }‰j                  |d«       d}	 t        j                  j	                  ||d¬«       |r't        j                  || «      }‰j                  |«       ‰j                  «       5   ‰| «       d d d «       y # t
        $ r d}Y ŒXw xY w# 1 sw Y   y xY w)Nrh   Frk  ©ÚnulpT)	rÎ   r_  r   ro  Úassert_array_almost_equal_nulpr�  r   rs  r\   )r   Úkwargsr`   ra   Úuse_reconstructionÚrecr^   r/   s         €€r   Úcheckz,TestLinalgInv.test_linalg_inv.<locals>.checkÞ  s¯   ø€ Ü$ QÓ'ˆHÙ˜“(ˆCØ×%Ñ% c¨3Ô/à!&Ðð*Ü—
‘
×9Ñ9¸#¸xØ?Að :ô Cñ "Ü—f‘f˜S !“n�Ø×.Ñ.¨sÔ3ð ×%Ñ%Õ'Ù�a”÷ (Ð'øô "ò *à%)Ò"ð*ú÷ (Ð'ús   ª"B Â	B(ÂB%Â$B%Â(B1rœ   ©r   r   rž   rÌ   ©rŸ   rŸ   rd   N)r   rÎ   r   r�   rF  r   rk   rN  ÚonesrS  r‘  rZ  rg  r5  )r/   r9   rŸ  r:   rg   r   r^   s   `     @r   Útest_linalg_invzTestLinalgInv.test_linalg_invÖ  sð   ù€ ð
 ˆØ"”˜TÔ"¤=Ó1ˆõ	ô. $ D§K¡K°Ö6‰LˆE�5Ø×+Ñ+¨Q°¨F°E¸5Ó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                 óŽ  — t        j                  g d¢g d¢g d¢g d¢gd¬«      }t        j                  |«      }t        d¬«      d	„ «       }|j	                  |d
«      }t         j
                  j                  ||«        ||d
«      }t         j
                  j                  ||«       t         j
                  j                  ||«       y )N©r#  r‹   rŸ   r~  ©éûÿÿÿr°   rŸ   r‹   ©é	   r�  r   r   ©rŸ   ri  rŸ   é   rh   rf   TrŒ   c                 óZ   — |r| dd…d d …f   } t         j                  j                  | «      S ©Nr   rŸ   rÊ   ©ÚXÚtests     r   Úainvz2TestLinalgInv.test_no_input_mutation.<locals>.ainv  ó)   € áà�a˜�cš1�f‘I�Ü—9‘9—=‘= Ó#Ð#r   F©r   r8  r{   r   r½   ro  rp  )r/   r¯  ÚX_origr±  r`   ra   s         r   Útest_no_input_mutationz$TestLinalgInv.test_no_input_mutation	  s¤   € ä�H‰H’nÚ$Ú$Ú$ð&ð .1ô2ˆô
 —‘˜“ˆä	�dÔ	ñ	$ó 
ð	$ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1 fÔ-á�1�e‹nˆÜ
�
‰
×"Ñ" 1 fÔ-ä
�
‰
×"Ñ" 8¨SÕ1r   N)r¿   rÀ   rÁ   rÂ   r   r£  rµ  r”  r   r   r–  r–  Ñ  s2   „ ñð ñ0Bó ð0Bðd ñ2ó ñ2r   r–  c                   ó,   — e Zd ZdZd„ Zd„ Zed„ «       Zy)ÚTestLinalgCholeskyz'
    Tests for np.linalg.cholesky.
    c                 ó¸  — t         j                  j                  d«       t         j                  j                  ||«      }t         j                  j                  |«      \  }}t        j                  d|dz   «      }t        j                  t        j                  |j                  t        j                  |«      «      |«      }t        j                  |||¬«      }|S )Nr   r   r.  )r   r/  r0  ÚrandrË   ré   r4   r   r¡   Údiagr8  )	r/   r@   r:   rg   rî   ÚqrA  ÚLr?  s	            r   rA   z TestLinalgCholesky.sample_matrix'  s�   € ä
�	‰	�‰�qÔÜ�I‰I�N‰N˜1˜aÓ ˆô �y‰y�|‰|˜A‹‰ˆˆ1Ü�I‰I�a˜˜Q™ÓˆÜ�F‰F”2—6‘6˜!Ÿ#™#œrŸw™w q›zÓ*¨AÓ.ˆÜ�H‰H�Q˜e¨5Ô1ˆØˆr   c                 ó`   — d}| j                  |||t        j                  j                  «       y )Nz Matrix is not positive definite.rK  rM  s       r   Úassert_not_pdz TestLinalgCholesky.assert_not_pd3  s%   € Ø0ˆØ×Ñ˜%  s¬B¯I©I×,AÑ,AÕBr   c                 óÄ  ‡ ‡— d} t        d¬«      t        «      Šˆˆ fd„}t        ‰ j                  d«      D ]   \  }}‰ j	                  |||«      } ||«       Œ"  |t        j                  d«      «       d}‰ j                  ‰t        j                  dt
        j                  ¬	«      f«       ‰ j                  |‰t        j                  d
t
        j                  ¬	«      f«       ‰ j                  |‰t        j                  dt
        j                  ¬	«      f«       ‰ j                  ‰t        j                  dt
        j                  ¬	«      j                  dd«      f«       y)z)
        Test np.linalg.cholesky
        rk  TrŒ   c                 ó  •— t        | «      } ‰| «      }d}‰j                  |d«       	 t        j                  j	                  ||d¬«       |r‚t        j                  |t        j                  |j                  «      «      }dt        j                  | j                  «      j                  z  }t        j                  j                  | |||¬«       ‰j                  «       5   ‰| «       d d d «       y # t
        $ r d}Y Œ³w xY w# 1 sw Y   y xY w)NFre   rk  r™  Trj  r†  )rÒ   r_  r   ro  r›  r�  r   Úconjr¡   rm  r:   rn  rp  r\   )r   r`   ra   r�  rž  rn  r^   r/   s         €€r   rŸ  z6TestLinalgCholesky.test_linalg_cholesky.<locals>.check?  sî   ø€ Ü& qÓ)ˆHÙ˜“(ˆCØ!&Ðà×%Ñ% c¨3Ô/ð*Ü—
‘
×9Ñ9¸#¸xØ?Að :ô Cñ "Ü—f‘f˜S¤"§'¡'¨#¯%©%£.Ó1�Ø¤§¡¨!¯'©'Ó!2×!=Ñ!=Ñ=�
Ü—
‘
×*Ñ*ØØØ#Ø#ð	 +ô ð ×%Ñ%Õ'Ù�a”÷ (Ð'øô! "ò *à%)Ò"ð*ú÷  (Ð'ús   ª"C2 Ã 	DÃ2D Ã?D ÄDr„  r   rÑ   rž   rd   r¡  r°   rŸ   N)r   rÒ   r   r�   rA   r   rk   rN  r¢  r�   rS  r‘  rZ  r¾  r?   )r/   r9   rŸ  r:   rg   r   Úrnr^   s   `      @r   Útest_linalg_choleskyz'TestLinalgCholesky.test_linalg_cholesky7  s  ù€ ð
 ˆØ"”˜TÔ"¤?Ó3ˆõ	ô< $ D§K¡K°Ö6‰LˆE�5Ø×"Ñ" 1 e¨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   N)r¿   rÀ   rÁ   rÂ   rA   r¾  r   rÃ  r”  r   r   r·  r·  "  s(   „ ñò
òCð ñ:Jó ñ:Jr   r·  c                   ó|   — e Zd ZdZd„ Zd„ Zd„ Z	 dd„Zed„ «       Z	ed„ «       Z
ed	„ «       Zed
„ «       Zed„ «       Zy)ÚTestLinalgEigenSystemsz*
    Tests for np.linalg.eig/eigvals.
    c                 ó´  — | j                  ||«      }t        j                  |«      }t        j                  t        j                  |j
                  d   |j
                  d   d«      «      }|dd  ||<   t        j                  t        j                  |j
                  d   |j
                  d   d«      «      }|d d ||<   t        j                  |||¬«      }|S )Nr   r   rŽ   r.  )r<   r   rº  r6  r7  rs   r8  )r/   r@   r:   rg   Úvr?  rE  s          r   rA   z$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˜e¨5Ô1ˆØˆr   c                 ó4   — |dz   }| j                  |||«       y )Nz+() argument must not cause a domain change.)rI  rQ  s        r   Úassert_no_domain_changez.TestLinalgEigenSystems.assert_no_domain_change…  s   € ØÐBÑBˆØ×Ñ˜%  sÕ+r   c                 ó   ‡ ‡‡‡— ˆˆˆˆ fd„}|S )Nc                  ó¸  •—  ‰j                   | Ž } ‰| Ž }| d   }‰j                  t        |«      t        |«      «       d}t        |t        «      rd}‰j                  t        |«      ‰«       n‰j                  |j
                  ‰«       ‰j                  |d«       d}t        t        |«      «      D ]+  }	 t        j                  j                  ||   ||   d¬«       Œ- dt        j                  |j                  «      j                  z  }|�r|�rÃ|\  }}	‰d   d	k(  rót        j                  t        j                   |j"                  d   |j"                  d
   d«      «      }
t        j                  t        j                   |j"                  d   |j"                  d
   d
«      «      } ‰| Ž  t        j$                  ||
   «      ||<   t        j&                  t        j(                  |«      «      |t        j*                  |j"                  d   «      <   t        j,                  ||	«      }t        j,                  |	t        j(                  |«      «      }t        j                  j/                  |j&                  |j&                  ||¬«       t        j0                  |	«      r�t        j                  j/                  |j2                  |j2                  ||¬«       nIt        j                  j/                  t        j4                  |«      t        j4                  |«      ||¬«       ‰j7                  «       5   ‰| Ž  d d d «       y # t        $ r d}Y �Œ™w xY w# 1 sw Y   y xY w)Nr   FTrh   rk  r™  rj  rŽ   Úhr   r†  )r½   rP   rJ   r2  r^  Úndimr_  rm   r   ro  r›  r�  rm  r:   rn  r6  r7  rs   rÁ  Úrealrº  Údiag_indicesr   rp  ÚiscomplexobjÚimagÚsortr\   )r_   r`   ra   r   Úres_is_tupler�  r¬   rn  rW   rÇ  ÚidxlÚidxuÚlhsÚrhsr^   Úexpected_res_lenrR  r/   s                 €€€€r   rŸ  z3TestLinalgEigenSystems._check_worker.<locals>.check‹  s¯  ø€ Ø$�u—}‘} dÐ+ˆHÙ˜�,ˆCØ�Q‘ˆAà×ÑœS ›]¬C°«HÔ5à ˆLÜ˜#œuÔ%Ø#�Ø× Ñ ¤ S£Ð+;Õ<à× Ñ  §¡Ð+;Ô<ð ×%Ñ% c¨3Ô/à!&Ðäœ3˜x›=Ö)�ð.Ü—J‘J×=Ñ=Ø˜A™ ¨¡°"ð >õ 6ð *ð$ œRŸX™X a§g¡gÓ.×9Ñ9Ñ9ˆJÚ!ÚØ‘D�A�qð ˜B‘x 3’Ü!Ÿz™z¬"¯&©&°·±¸±¸Q¿W¹WÀQ¹ZÈÓ*LÓM˜Ü!Ÿz™z¬"¯&©&°·±¸±¸Q¿W¹WÀQ¹ZÈÓ*KÓL˜Ù˜t™ô #%§'¡'¨!¨D©'Ó"2˜˜$™ô :<¿¹ÄÇÁÈÃÓ9L˜œ"Ÿ/™/¨!¯'©'°!©*Ó5Ñ6äŸ&™&  A›,�CÜŸ&™& ¤B§G¡G¨A£JÓ/�Cä—J‘J×.Ñ.ØŸ™ØŸ™Ø'Ø'ð	 /ô ô —‘ qÔ)ÜŸ
™
×2Ñ2ØŸH™HØŸH™HØ!+Ø!+ð	 3õ ô —J‘J×.Ñ.ÜŸ™ Ó)ÜŸ™ ›Ø'Ø'ð	 /ô ð ×%Ñ%Õ'Ù�t‘÷ (Ð'øôG &ò .à)-Ó&ð.ú÷F (Ð'ús   Â7(L>Ì/MÌ>MÍMÍMr”  )r/   r^   rR  rØ  Úcheck_for_domain_changerŸ  s   ````  r   Ú_check_workerz$TestLinalgEigenSystems._check_worker‰  s   û€ ÷[	ðx ˆr   Nc           	      óv  — d} t        d¬«      |«      }| j                  ||||«      }t        | j                  d«      D ]   \  }}	| j	                  |||	«      }
 ||
«       Œ" t
        j                  t
        j                  fD ]ñ  } |t        j                  d|¬«      «       | j                  |t        j                  d|¬«      f«       | j                  ||t        j                  dt
        j                  ¬«      f«       | j                  ||t        j                  d|¬«      f«       | j                  |t        j                  d	d
gt
        j                   t
        j"                  gg|¬«      f«       Œó |rÂt        j                  ddgddgg«      } ||j%                  t
        j&                  «      «        ||«      \  }}| j)                  t        j*                  |j,                  «      «       t
        j                  t
        j.                  fD ]%  }| j1                  |||j%                  |«      f«       Œ' yy)z$
        Test np.linalg.eig
        rk  TrŒ   r„  r   rd   rž   r¡  r#  ç       @r   ri  rŸ   N)r   rÚ  r   r�   rA   r   r‘   rÄ   rk   rN  r¢  rS  r‘  rZ  r\  r8  ÚinfÚnanr7   rÃ   ra  ÚanyrÑ  r�   rÉ  )r/   rR  ÚfuncrØ  rÙ  r9   r^   rŸ  r:   rg   r   Útyrî   ÚlrA  s                  r   Úchecker_for_linalg_eigz-TestLinalgEigenSystems.checker_for_linalg_eigé  sØ  € ð
 ˆØ"”˜TÔ" 4Ó(ˆØ×"Ñ" 5¨$Ð0@Ø#:ó<ˆô
 $ D§K¡K°Ö6‰LˆE�5Ø×"Ñ" 1 e¨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ð ×(Ñ(¨¨u´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ˆqØ�O‰OœBŸF™F 1§6¡6›NÔ+ô —z‘z¤2§:¡:Ó.�Ø×,Ñ,¨T°5¸1¿8¹8ÀB»<¸/ÕJñ /ð- #r   c                 ó4   — | j                  dt        dd«       y )NrÕ   rŸ   T)rã  rÖ   r•   s    r   Útest_linalg_eigz&TestLinalgEigenSystems.test_linalg_eig'  s   € à×#Ñ# E¬:°q¸$Õ?r   c                 ó4   — | j                  dt        dd«       y )NrØ   r   T)rã  rÙ   r•   s    r   Útest_linalg_eigvalsz*TestLinalgEigenSystems.test_linalg_eigvals+  s   € à×#Ñ# I¬~¸qÀ$ÕGr   c                 ó4   — | j                  dt        dd«       y )NrÜ   rŸ   F)rã  rÝ   r•   s    r   Útest_linalg_eighz'TestLinalgEigenSystems.test_linalg_eigh/  s   € à×#Ñ# F¬K¸¸EÕBr   c                 ó4   — | j                  dt        dd«       y )Nrà   r   F)rã  rá   r•   s    r   Útest_linalg_eigvalshz+TestLinalgEigenSystems.test_linalg_eigvalsh3  s   € à×#Ñ# J´ÀÀEÕJr   c           
      ó|  ‡— dD �])  }|\  }}}t        t        j                  |«      Št        d¬«      ˆfd„«       }| j	                  ||||«      }t        j
                  t        j                  fD ]»  }| j                  ‰|¬«      5  t        j                  g d¢g d¢g d¢g d	¢gd
|¬«      }t        j                  |«      }	|j                  |d«      }
t        j                  j                  ||	«        ||d«      }t        j                  j                  ||	«        ||d«       d d d «       Œ½ �Œ, y # 1 sw Y   ŒËxY w)N))rÕ   rŸ   T)rØ   r   T)rÜ   rŸ   F)rà   r   FTrŒ   c                 ó.   •— |r| dd…d d …f   }  ‰| «      S r­  r”  )r¯  r°  Úmeths     €r   rà  z;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~  rh   )rg   r:   F)Úgetattrr   rË   r   rÚ  r�   rÃ   ÚsubTestr8  r{   r½   ro  rp  )r/   Úcr@   ÚnoutÚdomain_changerà  rŸ  r:   r¯  r´  r`   ra   rî  s               @r   rµ  z-TestLinalgEigenSystems.test_no_input_mutation7  s  ø€ ô*ˆAð
 &'Ñ"ˆAˆt�]äœ2Ÿ9™9 aÓ(ˆDä˜$Ôóó  ðð ×&Ñ& t¨Q°°mÓ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D2Ä2D;r   )r¿   rÀ   rÁ   rÂ   rA   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                   ó6   — e Zd ZdZd„ Zed„ «       Zed„ «       Zy)ÚTestLinalgSvdz"
    Tests for np.linalg.svd.
    c                 ó   — |\  }}}t        t        |«      «      D ].  }| j                  ||   j                  ||   j                  «       Œ0 t	        j
                  |j                  d   |j                  d   f«      }t	        j                  ||«       t	        j                  t	        j                  ||«      |«      }	t	        j                  |j                  «      j                  }
t        j                  j                  ||	d|
z  d|
z  ¬«       y )Nr   r   rk  rl  r†  )rm   rJ   rP   rs   r   r5  Úfill_diagonalr   rm  r:   rn  ro  rp  )r/   r   ra   r`   ÚurC  Úvtr¬   Úsrž  rn  s              r   Úcheck_reconstructionz"TestLinalgSvd.check_reconstructionm  s×   € Ø‰	ˆˆ2ˆrô ”s˜8“}Ö%ˆAØ×Ñ˜S ™VŸ\™\¨8°A©;×+<Ñ+<Õ=ð &ô �H‰H�a—g‘g˜a‘j "§(¡(¨1¡+Ð.Ó/ˆÜ
×Ñ˜˜BÔä�f‰f”R—V‘V˜A˜q“\ 2Ó&ˆÜ—X‘X˜aŸg™gÓ&×1Ñ1ˆ
Ü
�
‰
×"Ñ"ØØØ�j‘Ø�zÑ!ð	 	#õ 	
r   c                 óº  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„}g d¢}d}t        |‰ j                  |d«      D ]$  \  }}}}‰ j	                  |||«      } |||¬«       Œ& d}	‰ j                  |	‰t        j                  d	t        j                  ¬
«      f«       ‰ j                  |	‰t        j                  dt        j                  ¬
«      f«       ‰ j                  ‰t        j                  ddgt        j                  t        j                  ggt        j                  ¬
«      f«       dD ]+  }
t        j                  |
«      df}‰ j!                  ‰|«       Œ- y)z$
        Test np.linalg.svd
        TrŒ   c                 ó  •— t        | fi |¤Ž} ‰| fi |¤Ž}‰j                  t        |«      t        |«      «       ‰j                  t        |«      d«       ‰j                  |d«       d}t	        t        |«      «      D ]+  }	 t
        j                  j                  ||   ||   d¬«       Œ- |r‰j                  | ||«       ‰j                  «       5   ‰| fi |¤Ž d d d «       y # t        $ r d}Y Œsw xY w# 1 sw Y   y xY w)Nr‹   rh   Frk  r™  T)ræ   rP   rJ   r_  rm   r   ro  r›  r�  rû  r\   )r   rœ  r`   ra   r�  r¬   r^   r/   s         €€r   rŸ  z,TestLinalgSvd.test_linalg_svd.<locals>.checkˆ  sû   ø€ Ü! !Ñ. vÑ.ˆHÙ˜Ñ$˜VÑ$ˆCà×ÑœS ›]¬C°«HÔ5à×ÑœS ›X qÔ)à×%Ñ% c¨3Ô/à!&Ðäœ3˜x›=Ö)�ð.Ü—J‘J×=Ñ=Ø˜A™ ¨¡°"ð >õ 6ð *ñ "Ø×)Ñ)¨!¨S°(Ô;ð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (Ð'øô &ò .à)-Ò&ð.ú÷ (Ð'ús   Â(C$Ã
C5Ã$C2Ã1C2Ã5C>)r}  )r~  rj  )rj  r~  r‚  rƒ  )TFr„  )rå   rä   r¡  rd   rk  r#  rÜ  ©©r   r   ©r   r   r   N)r   ræ   r   r�   rF  rS  r   r¢  r‘  rZ  r�   r\  r8  rÝ  rÞ  rk   rw  )r/   rŸ  r’  rå   ri   r:   Úfmatrg   r   rÂ  Úszr_   r^   s   `           @r   Útest_linalg_svdzTestLinalgSvd.test_linalg_svd�  s=  ù€ ð
 #”˜TÔ"¤:Ó.ˆõ	#ò< 9ˆð &ˆô ˜˜tŸ{™{¨M¸4Ö@ñ %ˆD�%˜˜uð ×+Ñ+¨D°%¸Ó?ˆAÙ�! 4Ö(ð 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                 óü  — t        j                  g d¢g d¢g d¢g d¢gd¬«      }t        j                  |«      }t        d¬«      d	„ «       }|j	                  |d
«      }t         j
                  j                  ||«        ||d
«      }t         j
                  j                  ||«       	 t        ||«      D ]%  \  }}t         j
                  j                  ||«       Œ' y # t        $ r | j                  |||«       Y y w xY w)Nr¥  r¦  r¨  rª  rh   rf   TrŒ   c                 óZ   — |r| dd…d d …f   } t         j                  j                  | «      S r­  rã   r®  s     r   rà  z2TestLinalgSvd.test_no_input_mutation.<locals>.funcÎ  r²  r   F)
r   r8  r{   r   r½   ro  rp  Úzipr�  rû  ©r/   r¯  r´  rà  r`   ra   Úe_aÚg_as           r   rµ  z$TestLinalgSvd.test_no_input_mutationÅ  sß   € ä�H‰H’nÚ$Ú$Ú$ð&ð .1ô2ˆô
 —‘˜“ˆä	�dÔ	ñ	$ó 
ð	$ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1 fÔ-á�1�e‹nˆÜ
�
‰
×"Ñ" 1 fÔ-ð	8Ü ¨#Ö.‘��SÜ—
‘
×*Ñ*¨3°Õ4ñ /øäò 	8Ø×%Ñ% a¨¨hÖ7ð	8ús   Â'4C ÃC;Ã:C;N)r¿   rÀ   rÁ   rÂ   rû  r   r  rµ  r”  r   r   rõ  rõ  b  s7   „ ñò
ð( ñA4ó ðA4ðF ñ8ó ñ8r   rõ  c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚTestLinalgQrz!
    Tests for np.linalg.qr.
    c                 ó¨  ‡ ‡	—  t        d¬«      t        «      Š	ˆ	ˆ fd„}g d¢}t        |‰ j                  d«      D ]!  \  }}}‰ j	                  |||«      } ||«       Œ# d}‰ j                  |‰	t        j                  dt        j                  ¬«      f«       ‰ j                  |‰	t        j                  d	t        j                  ¬«      f«       ‰ j                  ‰	t        j                  d
dgt        j                  t        j                  ggt        j                  ¬«      f«       dD ](  }‰ j                  ‰	t        j                   |«      f«       Œ* y)z#
        Test np.linalg.qr
        TrŒ   c                 óÆ  •— t        | fi |¤Ž} ‰
| fi |¤Ž}‰j                  t        |«      t        |«      «       ‰j                  t        |«      d«       ‰j                  |d«       d}t	        t        |«      «      D ]+  }	 t
        j                  j                  ||   ||   d¬«       Œ- |rô|\  }}t	        t        |«      «      D ].  }‰j                  ||   j                  ||   j                  «       Œ0 t        j                  ||«      }t        j                  | j                  «      j                  }	t
        j                  j                  | |d|	z  d|	z  ¬«       ‰j                  t        j                  t        j                   |j"                  «      |«      «       ‰j%                  «       5   ‰
| fi |¤Ž d d d «       y # t        $ r d}Y �ŒUw xY w# 1 sw Y   y xY w)	NrŸ   rh   Frk  r™  Trl  r†  )rê   rP   rJ   r_  rm   r   ro  r›  r�  rs   r   rm  r:   rn  rp  rs  Ú	conjugater¡   r\   )r   rœ  r`   ra   r�  r¬   r»  Úrrž  rn  r^   r/   s             €€r   rŸ  z*TestLinalgQr.test_linalg_qr.<locals>.checkî  sª  ø€ Ü  Ñ- fÑ-ˆHÙ˜Ñ$˜VÑ$ˆCð ×ÑœS ›]¬C°«HÔ5à×ÑœS ›X qÔ)à×%Ñ% c¨3Ô/à!&Ðäœ3˜x›=Ö)�ð.Ü—J‘J×=Ñ=Ø˜A™ ¨¡°"ð >õ 6ð *ñ  "Ø‘��1ô œs 8›}Ö-�AØ×$Ñ$ S¨¡V§\¡\°8¸A±;×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Æ2
GÇGÇGÇG r|  r„  ré   r¡  rd   rk  r#  rÜ  rþ  N)r   rê   r   r�   rF  rS  r   r¢  r‘  rZ  r�   r\  r8  rÝ  rÞ  rw  rk   )
r/   rŸ  r’  ri   r:   rg   r   rÂ  r  r^   s
   `        @r   Útest_linalg_qrz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                 ó¶  — t        j                  g d¢g d¢g d¢g d¢gd¬«      }t        j                  |«      }t        d¬«      d	„ «       }|j	                  |d
«      }t         j
                  j                  ||«        ||d
«      }t         j
                  j                  ||«       t        ||«      D ]%  \  }}t         j
                  j                  ||«       Œ' y )Nr¥  r¦  r¨  rª  rh   rf   TrŒ   c                 óZ   — |r| dd…d d …f   } t         j                  j                  | «      S r­  rè   r®  s     r   rà  z1TestLinalgQr.test_no_input_mutation.<locals>.funcI  s(   € áà�a˜�cš1�f‘I�Ü—9‘9—<‘< “?Ð"r   F)r   r8  r{   r   r½   ro  rp  r  r  s           r   rµ  z#TestLinalgQr.test_no_input_mutation@  s¹   € ä�H‰H’nÚ$Ú$Ú$ð&ð .1ô2ˆô
 —‘˜“ˆä	�dÔ	ñ	#ó 
ð	#ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1 fÔ-á�1�e‹nˆÜ
�
‰
×"Ñ" 1 fÔ-ä˜H cÖ*‰HˆC�Ü�J‰J×&Ñ& s¨CÕ0ñ +r   N)r¿   rÀ   rÁ   rÂ   r   r  rµ  r”  r   r   r  r  â  s2   „ ñð ñV?ó ðV?ðp ñ1ó ñ1r   r  c                   ó$   — e Zd ZdZdd„Zd„ Zd„ Zy)ÚTestLinalgSystemszu
    Base class for testing "system" solvers from np.linalg.
    Namely np.linalg.solve() and np.linalg.lstsq().
    c                 ód   — |rdnd}|›d|›d�}| j                  |||t        j                  «       y )NrU  r   rV  z%() only supported on 1 and 2-D arraysrP  rW  s          r   Úassert_wrong_dimensions_1Dz,TestLinalgSystems.assert_wrong_dimensions_1Da  s/   € Ù )‘¨tˆÚ>DÂdÐKˆØ×Ñ˜%  s¬F×,>Ñ,>Õ?r   c                 ó`   — d}| j                  |||t        j                  j                  «       y )Nz<Incompatible array sizes, system is not dimensionally valid.rK  rM  s       r   Úassert_dimensionally_invalidz.TestLinalgSystems.assert_dimensionally_invalidg  s%   € ØLˆØ×Ñ˜%  s¬B¯I©I×,AÑ,AÕBr   c                 óR   — d|z  }| j                  |||t        j                  «       y )NzAnp.linalg.%s() only supports inputs that have homogeneous dtypes.rP  rQ  s        r   Úassert_homogeneous_dtypesz+TestLinalgSystems.assert_homogeneous_dtypesl  s'   € ØQÐTXÑXˆØ×Ñ˜%  s¬F×,>Ñ,>Õ?r   Nrx  )r¿   rÀ   rÁ   rÂ   r  r  r  r”  r   r   r  r  Z  s   „ ñó@òCó
@r   r  c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚTestLinalgLstsqz$
    Tests for np.linalg.lstsq.
    c                 ó€  ‡ ‡‡‡—  t        d¬«      t        «      Šˆˆ fd„Šg d¢}t        ‰ j                  «      }ddg}t        |«      Šd}ˆˆˆ fd„}|D ]ž  }t	        |«      }t	        ‰«      }‰ j                  |||«      }	 ||	|«       |\  }
}t        |
|«      }|
d	k7  sŒL|d	k7  sŒR|d	z
  }‰ j                  ||||¬
«      }	 ||	|«       ‰ j                  ||||¬«      }	d|z  }||z  } ||	||¬«       Œ  ddgddgddgddgg}|D ]A  \  }	}t        j                  |	«      t        j                  |«      f}‰ j                  ‰|«       ŒC t        j                  ddgddggt        j                  ¬«      }‰||ff d}t        j                  d	dgddggt        j                  ¬«      }‰ j                  |‰||f«       ‰ j                  |‰||f«       t        j                  d	dgddggt        j                  ¬«      }‰ j                  |‰||f«       ‰ j                  |‰||f«       t        j                  d	dgt        j                  ¬«      }‰ j!                  |‰||f«       t        j                  ddgt        j"                  t        j$                  ggt        j                  ¬«      }‰ j'                  ‰||f«       ‰ j'                  ‰||f«       t        j                  ddgt        j                  ¬«      }‰||ff t        j                  d	dgddggddgddgggt        j                  ¬«      }‰ j)                  |‰||f«       t        j                  dgt        j                  ¬«      }t        j                  dgdgdggt        j                  ¬«      }‰ j+                  ‰||f«       ‰ j+                  ‰||f«       y) z&
        Test np.linalg.lstsq
        TrŒ   c           
      óœ  •— t        | |fi |¤Ž} ‰| |fi |¤Ž}‰j                  t        |«      t        |«      «       ‰j                  t        |«      d«       ‰j                  |d«       d}	 ‰j                  |d   |d   «       t	        t        |«      «      D ]+  }	 t
        j                  j                  ||   ||   d¬«       Œ- 	 |rÜ|\  }}}	}
g d¢}	 ‰j                  |	|d   «       |D ]L  }t        ||   t
        j                  «      sŒ!‰j                  ||   j                  ||   j                  «       ŒN 	 t        j                  | j                  «      j                   }	 t        j"                  | |«      }t
        j                  j%                  ||d|z  d|z  ¬	«       ‰j/                  «       5   ‰| |fi |¤Ž d d d «       y # t        $ r d}Y �Œ?w xY w# t        $ r d}Y �Œ"w xY w# t        $ r& ‰j                  t        |	|d   z
  «      dk  «       Y Œßw xY w# t        $ �r |D �]  }	 t
        j                  j%                  ||   ||   d
|z  d
|z  ¬	«       nF# t        $ r: t
        j&                  j)                  | «      }‰j+                  d|z  d|z  «       Y nw xY wt
        j&                  j-                  |t        j"                  | |d   «      z
  «      }t
        j&                  j-                  |t        j"                  | |«      z
  «      }t
        j                  j%                  ||d¬«       �Œ Y �Œ˜w xY w# 1 sw Y   y xY w)Nr°   re   FrŸ   rk  r™  T)r   r   r‹   r†  rl  r#  r   r‡  ©rq  )rñ   rP   rJ   r_  rm   r   ro  r›  r�  r2  Úndarrayrs   ra  Úabsrm  r:   rn  r   rp  rË   r  ÚassertGreaterr  r\   )rî   rï   rœ  r`   ra   r�  r¬   ÚxÚresr9  rú  Úout_array_idxrn  rž  rñ  Úres_expectedÚres_gotr^   r/   s                    €€r   rŸ  z0TestLinalgLstsq.test_linalg_lstsq.<locals>.check†  s  ø€ Ü# A qÑ3¨FÑ3ˆHÙ˜˜1Ñ' Ñ'ˆCð ×ÑœS ›]¬C°«HÔ5à×ÑœS ›X qÔ)à×%Ñ% c¨3Ô/à!&Ðð
*Ø× Ñ   Q¡¨°!©Ô5äœs 8›}Ö-�Að2ÜŸ
™
×AÑAØ ™F H¨Q¡K°bð Bõ :ñ .ñ "Ø"%‘��3˜˜aò !*�ð	Aà×$Ñ$ T¨8°A©;Ô7ã*˜Ü% h¨q¡k´2·:±:Õ>Ø ×,Ñ,¨S°©V¯\©\¸8ÀA¹;×;LÑ;LÕMñ +ô  ŸX™X a§g¡gÓ.×9Ñ9�
ð$=ô Ÿ&™&  A›,�CÜ—J‘J×.Ñ.ØØØ *™_Ø *™_ð	 /ô ðF ×%Ñ%Õ'Ù�a˜Ñ%˜fÒ%÷ (Ð'øôA *ò 2à-1Ó*ð2ûô "ò *Ø%)Ó"ð*ûô  &ò Aà—O‘O¤C¨¨x¸©{Ñ(:Ó$;¸aÑ$?Ö@ðAûô  &ó =ô +˜ð
JÜŸJ™J×6Ñ6Ø (¨¡Ø # A¡Ø%(¨:Ñ%5Ø%(¨:Ñ%5ð	 7õ øô  .ò Jä "§	¡	§¡¨qÓ 1˜AØ ×.Ñ.¨r°A©v¸¸Z¹ÖIðJúô (*§y¡y§~¡~Ø¤§¡ q¨(°1©+Ó 6Ñ6ó(8˜ä"$§)¡)§.¡.°´R·V±V¸A¸q³\Ñ1AÓ"B˜ô Ÿ
™
×2Ñ2Ø(¨'¸ð 3ö =ó+ +ð	=ú÷: (Ð'ús’   Á-/G Â(G
ÃG Ã7G. Ä.G. Å'?H  Æ6MÇ
GÇG ÇGÇG ÇG+Ç*G+Ç.,HÈHÈ L?È1/I!É L?É!A J$Ê!L?Ê#J$Ê$BL?Ì>L?ÍMr|  rh   re   r‡  c                 óâ   •— d}|D ]g  }t        ‰	«      }‰
j                  | j                  d   |f||«      } ‰| |fi |¤Ž t        ‰	«      }|d d …df   j                  |¬«      } ‰| |fi |¤Ž Œi y )N©r   é   r   rf   )ÚnextrF  rs   r{   )rî   Údtrœ  Úb_sizesÚb_sizeÚb_orderrï   rv   rŸ  Úcycle_orderr/   s           €€€r   Úinner_test_loop_fnz=TestLinalgLstsq.test_linalg_lstsq.<locals>.inner_test_loop_fnõ  s„   ø€ àˆGã!�ô ˜{Ó+�Ø×/Ñ/Ø—W‘W˜Q‘Z Ð(¨"¨gó7�á�a˜Ñ%˜fÒ%ô ˜{Ó+�Øš˜1˜‘g—l‘l¨�lÓ1�Ù�a˜Ñ' Ó'ñ "r   r   r…  rˆ  r#  ©rð   rÿ  r�  r   ©r   r   ©r   rÜ  ç      @ç      @rd   rí   rŸ   r‹   r°   rj  é   r~  r«  N)r   rñ   r   r�   r+  rF  r1  r   rk   rw  r8  r�   r‘  rS  r‘   r  rZ  rÝ  rÞ  r\  r  r  )r/   r’  Úcycle_dtÚordersÚspecific_condr1  Úa_sizer,  Úa_orderrî   r@   r9   r<  r  rð   Úapprox_half_rank_rcondÚemptiesr   r_   ÚokrÂ  ÚbadÚoneDÚbad1DÚbad2Dr^   rŸ  r0  s   `                        @@@r   Útest_linalg_lstsqz!TestLinalgLstsq.test_linalg_lstsq  s½  û€ ð
 #”˜TÔ"¤<Ó0ˆõX	&òx ;ˆô ˜Ÿ™Ó%ˆà�s�ˆä˜F“mˆð ˆö	(ó$ ˆFä�h“ˆBÜ˜;Ó'ˆGð ×+Ñ+¨F°B¸Ó@ˆAñ ˜q "Ô%à‰DˆAˆqÜ˜˜1“IˆEð �A‹v˜!˜q›&ð ˜A‘I�Ø×/Ñ/Ø˜B ¨að 0ó 1�ñ # 1 bÔ)ð ×/Ñ/Ø˜B °=ð 0ó B�ð ˜]Ñ*�Ø).°©Ð&Ù" 1 bØ)?ö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           	      ó&  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢gd¬«      }t        j                  |«      }t        j                  g d	¢«      }t        d
¬«      d„ «       } |||d«       t         j                  j                  ||«       y )N)r#  g)\�Âõ(@g®Gáz@)r#  gš™™™™™@r6  )r#  g      @gffffff@)r#  gffffffò?g�Âõ(\�@)r#  gáz®Gá@g)\�Âõ(
@)r#  g�Âõ(\�ö?gÍÌÌÌÌÌ@rh   rf   )r#  rÜ  r5  r6  ç      @g      @TrŒ   c                 ó\   — |r| dd…d d …f   } t         j                  j                  | |«      S r­  rì   ©r¯  Úyr°  s      r   Úf2z*TestLinalgLstsq.test_issue3368.<locals>.f2n  ó+   € áà�a˜�cš1�f‘I�Ü—9‘9—?‘? 1 aÓ(Ð(r   F)r   r8  r{   r   ro  rp  )r/   r¯  r´  rI  rJ  s        r   Útest_issue3368zTestLinalgLstsq.test_issue3368b  s‚   € ä�H‰HÒ&Ú&Ú&Ú&Ú&Ú&ð)ð
 14ô5ˆô —‘˜“ˆÜ�H‰HÒ-Ó.ˆä	�dÔ	ñ	)ó 
ð	)ñ 	ˆ1ˆa�ŒÜ
�
‰
×"Ñ" 1 fÕ-r   N)r¿   rÀ   rÁ   rÂ   r   rD  rL  r”  r   r   r  r  q  s2   „ ñð ñ`>ó ð`>ðD ñ.ó ñ.r   r  c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚTestLinalgSolvez$
    Tests for np.linalg.solve.
    c                 ó8  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„}g d¢}t        |‰ j                  d«      D ]|  \  }}}‰ j	                  |||«      }d}t        |d«      D ]R  \  }}	‰ j	                  |j
                  d   |f||	«      }
 |||
«       |
dd…df   j                  |	¬	«      } |||«       ŒT Œ~  ‰t        j                  d
«      t        j                  d«      «       t        j                  ddgddggt        j                  ¬«      } ‰||«       d}t        j                  ddgddggt        j                  ¬«      }‰ j                  |‰||f«       ‰ j                  |‰||f«       t        j                  ddgddggt        j                  ¬«      }‰ j                  |‰||f«       ‰ j                  |‰||f«       t        j                  ddgt        j                  ¬«      }‰ j                  |‰||f«       t        j                  ddgt        j                   t        j"                  ggt        j                  ¬«      }‰ j%                  ‰||f«       ‰ j%                  ‰||f«       t        j                  ddgt        j                  ¬«      } ‰||«       t        j                  ddgddggddgddgggt        j                  ¬«      }‰ j'                  |‰||f«       t        j                  dgt        j                  ¬«      }t        j                  dgdgdggt        j                  ¬«      }‰ j)                  ‰||f«       ‰ j)                  ‰||f«       ‰ j	                  dt        j                  dd¬«      }‰ j+                  ‰||f«       y)z&
        Test np.linalg.solve
        TrŒ   c                 óB  •— t        | |fi |¤Ž} ‰| |fi |¤Ž}‰	j                  |d«       d}	 t        j                  j	                  ||d¬«       |rŽ‰	j                  |j                  |j                  «       t        j                  | |«      }t        j                  | j                  «      j                  }t        j                  j                  ||d|z  d|z  ¬«       ‰	j                  «       5   ‰| |fi |¤Ž d d d «       y # t
        $ r d}Y ŒÁw xY w# 1 sw Y   y xY w)Nrh   Frk  r™  Trl  r†  )rõ   r_  r   ro  r›  r�  rP   rs   r   rm  r:   rn  rp  r\   )
r   r   rœ  r`   ra   r�  rž  rn  r^   r/   s
           €€r   rŸ  z0TestLinalgSolve.test_linalg_solve.<locals>.check…  s  ø€ Ü# A qÑ3¨FÑ3ˆHÙ˜˜1Ñ' Ñ'ˆ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 Ã0DÄDÄDÄD)r3  r‚  ©r~  r~  r„  r)  r   Nrf   r   r4  r#  ç        rd   rô   r   rŸ   r‹   r°   rÜ  rj  r7  r~  r«  r5  r¡  re   r…  )r   rõ   r   r�   rF  rs   r{   r   rk   r8  r�   r‘  rS  r‘   r  rZ  rÝ  rÞ  r\  r  r  rg  )r/   rŸ  r’  ri   r:   rg   rî   r-  r.  r/  rï   rv   r?  rÂ  r@  Úok_oneDrB  rC  r^   s   `                 @r   Útest_linalg_solvez!TestLinalgSolve.test_linalg_solve~  s8  ù€ ð
 #”˜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°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ô —(‘(˜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                 ój  — t        j                  g d¢g d¢g d¢g d¢gd¬«      }t        j                  |«      }t        j                  g d¢«      }t        j                  |«      }t        d¬	«      d
„ «       }|j	                  ||d«      }t         j
                  j                  ||«       t         j
                  j                  ||«        |||d«      }t         j
                  j                  ||«       t         j
                  j                  ||«       t         j
                  j                  ||«       y )N)r#  r   r   r   )rR  r   r   r   )rR  r   r   r   )r#  r   r   r   rh   rf   )r#  rÜ  r5  r°   TrŒ   c                 ó\   — |r| dd…d d …f   } t         j                  j                  | |«      S r­  ró   rH  s      r   rà  z4TestLinalgSolve.test_no_input_mutation.<locals>.funcþ  rK  r   Fr³  )r/   r¯  r´  rI  Úy_origrà  r`   ra   s           r   rµ  z&TestLinalgSolve.test_no_input_mutationó  sì   € ä�H‰H’mÚ#Ú#Ú#ð&ð .1ô2ˆô
 —‘˜“ˆÜ�H‰H’_Ó%ˆÜ—‘˜“ˆä	�dÔ	ñ	)ó 
ð	)ð —<‘<  1 eÓ,ˆÜ
�
‰
×"Ñ" 1 fÔ-Ü
�
‰
×"Ñ" 1 fÔ-á�1�a˜ÓˆÜ
�
‰
×"Ñ" 1 fÔ-Ü
�
‰
×"Ñ" 1 fÔ-ä
�
‰
×"Ñ" 8¨SÕ1r   N)r¿   rÀ   rÁ   rÂ   r   rT  rµ  r”  r   r   rN  rN  y  s2   „ ñð ñr:ó ðr:ðh ñ2ó ñ2r   rN  c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚTestLinalgPinvz#
    Tests for np.linalg.pinv.
    c                 ó"  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„}g d¢}d}t        |‰ j                  d«      D ]g  \  }}}‰ j	                  |||«      } ||«       |\  }}	|dk7  sŒ-|	dk7  sŒ3t        ||	«      }
‰ j	                  ||||¬«      }d	|z  }|
|z  } |||¬
«       Œi dD ]  } |t        j                  |«      «       Œ d}‰ j                  |‰t        j                  dt        j                  ¬«      f«       ‰ j                  |‰t        j                  dt        j                  ¬«      f«       ‰ j                  ‰t        j                  d	dgt        j                  t        j                   ggt        j                  ¬«      f«       y)z%
        Test np.linalg.pinv
        TrŒ   c                 óD  •— t        | fi |¤Ž} ‰	| fi |¤Ž}‰
j                  |d«       d}	 t        j                  j	                  ||d¬«       |rN‰
j                  |j                  |j                  «       t        j                  || «      }	 ‰
j                  |«       ‰
j+                  «       5   ‰	| fi |¤Ž d d d «       y # t
        $ r d}Y Œ€w xY w# t
        $ �r7 dt        j                  | j                  «      j                  z  } ‰	|«      }t        j                  j                  || d|z  d|z  ¬«       | j                  d	   | j                  d
   k\  r… t        d¬«      t        «      } || t        j                   | j                  d	   «      j#                  | j                  «      fi |¤Žd	   }t        j                  j                  ||d|z  d|z  ¬«       ‰
j%                  t        j&                  j)                  ||z
  «      |«       Y �Œtw xY w# 1 sw Y   y xY w)Nrh   Frk  r™  Trj  rl  r†  r   r   rŒ   )rù   r_  r   ro  r›  r�  rP   rs   r   rs  rm  r:   rn  rp  r   rñ   r7  r7   Ú
assertLessrË   r  r\   )r   rœ  r`   ra   r�  rž  rn  rí   Ú
lstsq_pinvr^   r/   s            €€r   rŸ  z.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Ò/ð !3¤¨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ÃD=HÈHÈHr|  r‡  r„  r   rˆ  r#  r2  )rÿ  r   rø   r¡  rd   rk  rÜ  N)r   rù   r   r�   rF  r1  r   rk   rS  r¢  r‘  rZ  r�   r\  r8  rÝ  rÞ  )r/   rŸ  r’  r:  ri   r:   rg   r   r@   r9   r<  rð   r=  r  rÂ  r^   s   `              @r   Útest_linalg_pinvzTestLinalgPinv.test_linalg_pinv  s„  ù€ ð
 #”˜TÔ"¤;Ó/ˆõ@	#òH ;ˆð ˆô ˜˜tŸ{™{¨DÖ1ñ ˆD�%˜ð ×+Ñ+¨D°%¸Ó?ˆAÙ�!ŒHà‰DˆAˆqØ�A‹v˜!˜q›&ä˜A˜q›	�Ø×/Ñ/°°e¸UØ:Gð 0ó I�à˜]Ñ*�Ø).°©Ð&Ù�aÐ5Ö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                 ó¬  — t        d¬«      d„ «       }t        j                  g d¢g d¢g d¢g d¢gd¬	«      }t        j                  |«      }|j	                  d
«      }|j                  |«      }t        j                  j                  ||«        ||«      }t        j                  j                  ||«       t        j                  j                  ||«       y )NTrŒ   c                 óF   — t         j                  j                  | d   «      S )Nr   r÷   )rÇ  s    r   Úsome_fnz.TestLinalgPinv.test_issue5870.<locals>.some_fnŒ  s   € ä—9‘9—>‘> ! A¡$Ó'Ð'r   r¥  r¦  r¨  rª  rh   rf   )r   r°   r°   )r   r   r8  r{   r?   r½   ro  rp  )r/   ra  Úv_dataÚv_origÚ
reshaped_vr`   ra   s          r   Útest_issue5870zTestLinalgPinv.test_issue5870‰  s±   € ô 
�dÔ	ñ	(ó 
ð	(ô —‘š>Ú)Ú)Ú)ð+ð 36ô7ˆô
 —‘˜“ˆØ—^‘^ IÓ.ˆ
à—?‘? :Ó.ˆÜ
�
‰
×"Ñ" 6¨6Ô2á�jÓ!ˆÜ
�
‰
×"Ñ" 6¨6Ô2ä
�
‰
×"Ñ" 8¨SÕ1r   N)r¿   rÀ   rÁ   rÂ   r   r^  re  r”  r   r   rY  rY    s4   „ ñð ñqAó ðqAðf ñ2ó ñ2r   rY  c                   óR   — e Zd ZdZd„ Zd„ Zd„ Zed„ «       Zed„ «       Z	ed„ «       Z
y)	ÚTestLinalgDetAndSlogdetzÄ
    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                 ó&  — t        |fi |¤Ž} ||fi |¤Ž}dt        j                  |j                  «      j                  z  }t        j
                  j                  |||¬«       | j                  «       5   ||fi |¤Ž d d d «       y # 1 sw Y   y xY w©Nrj  r  )r   r   rm  r:   rn  ro  rp  r\   )r/   r^   r   rœ  r`   ra   rn  s          r   Ú	check_detz!TestLinalgDetAndSlogdet.check_det©  s   € Ü˜aÑ* 6Ñ*ˆÙ�AÑ ˜Ñ ˆàœŸ™ !§'¡'Ó*×5Ñ5Ñ5ˆ
ô 	�
‰
×"Ñ" 3¨°zÐ"ÔBð ×!Ñ!Õ#Ù�!Ñ�vÒ÷ $×#Ñ#ús   Á4
BÂBc                 óÔ  — t        |fi |¤Ž} ||fi |¤Ž}| j                  t        |«      t        |«      «       | j                  t        |«      d«       t        d«      D ]@  }| j                  t	        j
                  ||   «      t	        j
                  ||   «      «       ŒB |j                  j                  |d   «      }t        j                  j                  ||d   d¬«       dt	        j                  |j                  «      j                  z  }t        j                  j                  |d   |d   ||¬«       | j                  «       5   ||fi |¤Ž d d d «       y # 1 sw Y   y xY w)NrŸ   r   rk  r™  rj  r   r†  )rý   rP   rJ   rm   r   rÐ  r:   Útypero  r›  rm  rn  rp  r\   )	r/   r^   r   rœ  r`   ra   r¬   Úgot_convrn  s	            r   Úcheck_slogdetz%TestLinalgDetAndSlogdet.check_slogdet¶  s5  € Ü! !Ñ. vÑ.ˆÙ�AÑ ˜Ñ ˆð 	×Ñœ˜X›¬¨C«Ô1à×Ñœ˜S› 1Ô%ô �q–ˆAØ×ÑÜ—‘  A¡Ó'Ü—‘ ¨¡Ó,õ.ð ð —7‘7—<‘<  A¡Ó'ˆÜ
�
‰
×1Ñ1Ø�h˜q‘k¨ð 	2ô 	,ð œŸ™ !§'¡'Ó*×5Ñ5Ñ5ˆ
Ü
�
‰
×"Ñ"Ø�‰F�H˜Q‘K j°zð 	#ô 	Cð ×!Ñ!Õ#Ù�!Ñ�vÒ÷ $×#Ñ#ús   Å
EÅE'c                 óÄ  — g d¢}t        || j                  d«      D ]"  \  }}}| j                  |||«      } |||«       Œ$ t        | j                  d«      D ]%  \  }}t        j                  d|¬«      } |||«       Œ'  ||t        j
                  d«      «       | j                  ||t        j                  dt        j                  ¬«      f«       | j                  ||t        j                  dt        j                  ¬«      f«       | j                  |t        j                  dd	gt        j                  t        j                  ggt        j                  ¬«      f«       y )
N)r3  )r°   r°   rQ  r„  r‚  rd   r   r¡  rk  r#  rÜ  )r   r�   rF  r   r5  rk   rS  r¢  r‘  rZ  r�   r\  r8  rÝ  rÞ  )	r/   rÂ  rŸ  r^   r’  ri   r:   rg   r   s	            r   Údo_testzTestLinalgDetAndSlogdet.do_testÙ  s+  € ò )ˆô ˜˜tŸ{™{¨DÖ1ñ ˆD�%˜ð ×+Ñ+¨D°%¸Ó?ˆAÙ�%˜�Oð 2ô $ D§K¡K°Ö6‰LˆE�5Ü—‘˜ uÔ-ˆAÙ�%˜�Oð 7ñ
 	ˆe”R—X‘X˜fÓ%Ô&ð 	×Ñ  EÜ!#§¡¨´r·x±xÔ!@Ð Bô	Dð 	×$Ñ$ R¨Ü&(§g¡g¨b¼¿
¹
Ô&CÐ%Eô	Gð 	×!Ñ! %Ü#%§8¡8¨b°"¨Z¼"¿&¹&Ä"Ç&Á&Ð9IÐ,JÜ24·*±*ô$>ð #@õ	Ar   c                 ój   —  t        d¬«      t        «      }| j                  d| j                  |«       y )NTrŒ   rÿ   )r   r   rp  rj  ©r/   r^   s     r   Útest_linalg_detz'TestLinalgDetAndSlogdet.test_linalg_detú  s'   € à"”˜TÔ"¤:Ó.ˆØ�‰�U˜DŸN™N¨EÕ2r   c                 ój   —  t        d¬«      t        «      }| j                  d| j                  |«       y )NTrŒ   rü   )r   rý   rp  rn  rr  s     r   Útest_linalg_slogdetz+TestLinalgDetAndSlogdet.test_linalg_slogdetÿ  s)   € à"”˜TÔ"¤>Ó2ˆØ�‰�Y × 2Ñ 2°EÕ:r   c                 óŽ  — t        j                  g d¢g d¢g d¢g d¢gd¬«      }t        j                  |«      }t        d¬«      d	„ «       }|j	                  |d
«      }t         j
                  j                  ||«        ||d
«      }t         j
                  j                  ||«       t         j
                  j                  ||«       y )Nr¥  r¦  r¨  rª  rh   rf   TrŒ   c                 óZ   — |r| dd…d d …f   } t         j                  j                  | «      S r­  rû   r®  s     r   rà  z<TestLinalgDetAndSlogdet.test_no_input_mutation.<locals>.func  s+   € áà�a˜�cš1�f‘I�Ü—9‘9×$Ñ$ QÓ'Ð'r   Fr³  ©r/   r¯  r´  rà  r`   ra   s         r   rµ  z.TestLinalgDetAndSlogdet.test_no_input_mutation  s¤   € ä�H‰H’nÚ$Ú$Ú$ð&ð .1ô2ˆô
 —‘˜“ˆä	�dÔ	ñ	(ó 
ð	(ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1 fÔ-á�1�e‹nˆÜ
�
‰
×"Ñ" 1 fÔ-ä
�
‰
×"Ñ" 8¨SÕ1r   N)r¿   rÀ   rÁ   rÂ   rj  rn  rp  r   rs  ru  rµ  r”  r   r   rg  rg  ¡  sU   „ ñòò!òFAðB ñ3ó ð3ð ñ;ó ð;ð ñ2ó ñ2r   rg  c                   ó    — e Zd ZdZed„ «       Zy)ÚTestLinalgNormz#
    Tests for np.linalg.norm.
    c                 óh  ‡ ‡
—  t        d¬«      t        «      Š
ˆ
ˆ fd„}g d¢}dt        j                  t        j                   dddd	d
dddg}t	        |‰ j
                  |«      D ]"  \  }}}‰ j                  ||«      } |||¬«       Œ$ t	        ‰ j
                  |«      D ]'  \  }}‰ j                  d|«      ddd…   } |||¬«       Œ) g d¢}dt        j                  t        j                   ddd	d
g}t	        |‰ j
                  d|«      D ]$  \  }}}}‰ j                  |||«      } |||¬«       Œ& dg}t	        ‰ j
                  |d«      D ]K  \  }}}‰ j                  d||«      } ||dd |¬«        ||dd…dd…f   |¬«        ||dddd…f   |¬«       ŒM t	        ‰ j
                  |d«      D ]h  \  }}}t        j                  d||¬«      }‰ j                   ‰
||«      d«       t        j                  d||¬«      }‰ j                   ‰
||«      d«       Œj d}	‰ j                  |	‰
t        j                  dt        j                  ¬«      f«       ‰ j                  |	‰
t        j                  dt        j                  ¬«      j                  d	d	d«      f«       ‰ j!                  ‰
t        j"                  ddgt        j                  t        j$                  ggt        j                  ¬«      d	f«       ‰ j'                  ‰
t        j"                  ddgdd ggt        j                  ¬«      d!f«       y)"z%
        Test np.linalg.norm
        TrŒ   c                 ór  •— t        | fi |¤Ž} ‰| fi |¤Ž}‰j                  t        j                  |«       «       dt        j                  | j
                  «      j                  z  }t        j                  j                  |||¬«       ‰j                  «       5   ‰| fi |¤Ž d d d «       y # 1 sw Y   y xY wri  )
r  ra  r   rÐ  rm  r:   rn  ro  rp  r\   ©r   rœ  r`   ra   rn  r^   r/   s        €€r   rŸ  z.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¨H¸:Ð&ÔFð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (×'Ñ'úó   Â
B-Â-B6)r   r°   r~  Nr   r   rŽ   rŸ   ri  rj  gÍÌÌÌÌÌ@g333333À)r  rk  r‹   r|  r„  )é   r*  r°   r4  r.  rR  r   r  r¡  rd   é   r#  rÜ  r5  r6  r7  )r   r  r   rÝ  r   r�   r<   rF  rk   rP   rS  r¢  r‘  r  r�   r?   r\  r8  rÞ  ru  )r/   rŸ  r’  Ú	nrm_typesri   r:   Únrm_typer   rg   rÂ  r^   s   `         @r   Útest_linalg_normz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�8à×"Ñ" 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�8˜Uà×+Ñ+¨H°e¸UÓCˆAá�!�B�Q�%˜XÕ&ñ �!’A�q‘r�E‘( Õ)ñ �!�A�q�t˜!�t�G‘* (Ö+ð 6ô  ˜Ÿ™ Y°Ö5ñ #ˆE�8˜Uä—‘˜ U°%Ô8ˆAØ×Ñ™U 1 hÓ/°Ô5Ü—‘˜ u°EÔ:ˆAØ×Ñ™U 1 hÓ/°Õ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   N)r¿   rÀ   rÁ   rÂ   r   r„  r”  r   r   rz  rz     s   „ ñð ñ`Nó ñ`Nr   rz  c                   ó    — e Zd ZdZed„ «       Zy)ÚTestLinalgCondz#
    Tests for np.linalg.cond.
    c                 óÆ  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„}dt        j                  t        j                   ddddg}d	d
g}t	        |‰ j
                  d|«      D ]$  \  }}}}‰ j                  |||«      } |||¬«       Œ& g d¢}t	        |‰ j
                  d«      D ]!  \  }}}‰ j                  |||«      } ||«       Œ# dD ](  }	‰ j                  ‰t        j                  |	«      f«       Œ* t        j                  ddgddggt        j                  ¬«      }
 ||
«        ||
d¬«       t        j                  ddgddggt        j                  ¬«      }
 ||
d¬«       t        j                  «       5  t        j                  ddgddggt        j                  ¬«      }t        j                  dt        «        ||«       ddd«       d}‰ j                  |‰t        j                   dt        j"                  ¬«      f«       ‰ j%                  |‰t        j                   dt        j                  ¬«      f«       ‰ j'                  ‰t        j                  ddgt        j                  t        j(                  ggt        j                  ¬«      f«       ‰ j+                  ‰t        j                  ddgddggt        j                  ¬«      df«       y# 1 sw Y   �ŒxY w)z%
        Test np.linalg.cond
        TrŒ   c                 ór  •— t        | fi |¤Ž} ‰| fi |¤Ž}‰j                  t        j                  |«       «       dt        j                  | j
                  «      j                  z  }t        j                  j                  |||¬«       ‰j                  «       5   ‰| fi |¤Ž d d d «       y # 1 sw Y   y xY wri  )
r  ra  r   rÐ  rm  r:   rn  ro  rp  r\   r}  s        €€r   rŸ  z.TestLinalgCond.test_linalg_cond.<locals>.check–  r~  r  Nr   rŽ   rŸ   ri  r‚  rQ  r„  )r  )r}  r  r�  rƒ  rþ  r   rd   g Èë…óÌágš™™™™™¹?Úignorer  r¡  rk  r#  rÜ  r5  r6  r7  )r   r  r   rÝ  r   r�   rF  rw  rk   r8  r�   rE   rF   rG   ÚRuntimeWarningrS  r¢  r‘  rZ  r\  rÞ  ru  )r/   rŸ  Úpsr’  ri   r:   rg   r  r   r  r#  rÂ  r^   s   `           @r   Útest_linalg_condzTestLinalgCond.test_linalg_condŽ  s~  ù€ ð #”˜TÔ"¤;Ó/ˆõ	#ð" ”B—F‘FœRŸV™V˜G Q¨¨A¨rÐ2ˆØ˜Ð ˆô ˜˜tŸ{™{¨D°"Ö5ñ "ˆD�%˜ à×+Ñ+¨D°%¸Ó?ˆAÙ�!�qŽ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 N)r¿   rÀ   rÁ   rÂ   r   rŒ  r”  r   r   r†  r†  ‰  s   „ ñð ñKNó ñKNr   r†  c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚTestLinalgMatrixRankz*
    Tests for np.linalg.matrix_rank.
    c           	      ój  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„}g d¢}t        |‰ j                  d«      D �]û  \  }}}‰ j	                  |||«      } ||«       d}t        dt        |«      dz
  «      D �]M  }‰ j	                  ||||¬«      }‰ j                   ‰|«      |«        ||«       |j                  \  }	}
d	|d
d
…d
d
…f<   t        j                  t        j                  |	|
«      «      }t        j                  |«      rNdt        j                  j                  |«      z   dz   dt        j                  j                  |«      z  z   }d|d<   n'dt        j                  j                  |«      z   }d|d<   |j                  |«      ||d   d
| |d   d
| f<   ‰ j                   ‰||«      |dz
  «        |||¬«       �ŒP d	|d
d
…d
d
…f<   ‰ j                   ‰|«      d«        ||«       t        j                  |«      rd|d<   nd|d<   ‰ j                   ‰||«      d«        |||¬«       �Œþ ‰ j                  D ]^  }t        j                   d|¬«      }‰ j                   ‰|«      d«        ||«       d|d<   ‰ j                   ‰|«      d«        ||«       Œ` dD ]0  }dD ])  }‰ j#                  ‰t        j$                  |«      |f«       Œ+ Œ2 d}‰ j'                  |‰t        j(                  dt        j*                  ¬«      f«       ‰ j-                  |‰t        j(                  dt        j.                  ¬«      j1                  ddd«      f«       ‰ j3                  ‰t        j4                  ddgt        j6                  t        j8                  ggt        j.                  ¬«      f«       y
)z,
        Test np.linalg.matrix_rank
        TrŒ   c                 óÌ   •— t        | fi |¤Ž} ‰| fi |¤Ž}t        j                  j                  ||«       ‰j	                  «       5   ‰| fi |¤Ž d d d «       y # 1 sw Y   y xY wr   )r  r   ro  rp  r\   )r   rœ  r`   ra   r^   r/   s       €€r   rŸ  z;TestLinalgMatrixRank.test_linalg_matrix_rank.<locals>.checkê  s^   ø€ Ü)¨!Ñ6¨vÑ6ˆHÙ˜Ñ$˜VÑ$ˆCô �J‰J×&Ñ& s¨HÔ5ð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (×'Ñ'ús   Á
AÁA#r|  r„  ç‚vIhÂ%<=r   r…  rR  Nr#  ù              ð?y›+¡†›„=›+¡†›„=r   g›+¡†›„=)r  )rŽ   rŽ   rj  rd   rþ  )Nr‘  r  r¡  r�  rŸ   r‹   rÜ  )r   r  r   r�   rF  rm   r1  rP   rs   r   r6  r7  rÐ  r/  r¹  r7   r5  rw  rk   rS  r¢  r‘  r  r�   r?   r\  r8  rÝ  rÞ  )r/   rŸ  r’  ri   r:   rg   r   r  r¬   r@   r9   rE  r   r,  r  rÂ  r^   s   `               @r   Útest_linalg_matrix_rankz,TestLinalgMatrixRank.test_linalg_matrix_rankâ  sV  ù€ ð #”˜TÔ"Ô#5Ó6ˆõ
	#ò ;ˆô ˜˜tŸ{™{¨D×1ñ ˆD�%˜ð ×+Ñ+¨D°%¸Ó?ˆAÙ�!ŒHð ˆCä˜1œc $›i¨!™m×,�à×/Ñ/°°e¸UÈÐ/ÓK�Ø× Ñ ¡ q£¨1Ô-Ù�a”ð —w‘w‘��1Ø�’!’Q�$‘Ü—j‘j¤§¡¨¨1£Ó.�Ü—?‘? 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˜S×!ð- -ð0 ˆAŠa’ˆd‰GØ×Ñ™U 1›X qÔ)Ù�!ŒHä�‰˜qÔ!Ø*��&’	à!��&‘	à×Ñ™U 1 c›]¨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                 óŽ  — t        j                  g d¢g d¢g d¢g d¢gd¬«      }t        j                  |«      }t        d¬«      d	„ «       }|j	                  |d
«      }t         j
                  j                  ||«        ||d
«      }t         j
                  j                  ||«       t         j
                  j                  ||«       y )Nr¥  r¦  r¨  rª  rh   rf   TrŒ   c                 óZ   — |r| dd…d d …f   } t         j                  j                  | «      S r­  r
  r®  s     r   rà  z9TestLinalgMatrixRank.test_no_input_mutation.<locals>.funcT	  s+   € áà�a˜�cš1�f‘I�Ü—9‘9×(Ñ(¨Ó+Ð+r   Fr³  rx  s         r   rµ  z+TestLinalgMatrixRank.test_no_input_mutationG	  s¦   € ô �H‰H’nÚ$Ú$Ú$ð&ð .1ô2ˆô
 —‘˜“ˆä	�dÔ	ñ	,ó 
ð	,ð —<‘<  5Ó)ˆÜ
�
‰
×"Ñ" 1 fÔ-á�1�e‹nˆÜ
�
‰
×"Ñ" 1 fÔ-ä
�
‰
×"Ñ" 8¨SÕ1r   N)r¿   rÀ   rÁ   rÂ   r   r“  rµ  r”  r   r   rŽ  rŽ  Ý  s4   „ ñð ñbAó ðbAðH ñ2ó ñ2r   rŽ  c                   ó&   — e Zd ZdZd„ Zed„ «       Zy)ÚTestLinalgMatrixPowerz+
    Tests for np.linalg.matrix_power.
    c                 óŽ   —  ||d   d«       | j                  t        j                  «      5   ||Ž  d d d «       y # 1 sw Y   y xY w)Nr   r   ©r   r
   r‡   )r/   r^   r_   s      r   Úassert_int_exponenentz+TestLinalgMatrixPower.assert_int_exponenenti	  s7   € áˆd�1‰g�qÔà×Ñœv×1Ñ1Õ2Ù�4‰L÷ 3×2Ñ2ús	   ¬;»Ac                 ó˜  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„}g d¢}ddgt        t        dd«      «      z   d	d
gz   }t	        ||‰ j
                  d«      D ]D  \  }}}}‰ j                  |||«      } |||«       t        j                  d||¬«      } |||«       ŒF d}	‰ j                  |	‰t        j                  dt        j                  ¬«      df«       ‰ j                  |	‰t        j                  dt        j                  ¬«      df«       t        j                  d«      df}
d}‰ j                  ‰|
|«       ‰ j                  |	‰t        j                  dt        j                  ¬«      df«       ‰ j                  ‰t        j                  d«      df«       ‰ j!                  ‰t        j"                  ddgddgg«      df«       y )NTrŒ   c                 óN  •— t        | |«      } ‰| |«      }‰j                  |d«       dt        j                  | j                  «      j
                  z  }t        j                  j                  ||||¬«       ‰j                  «       5   ‰| |«       d d d «       y # 1 sw Y   y xY w)Nre   r~  r†  )	r  r_  r   rm  r:   rn  ro  rp  r\   )r   Úpwrr`   ra   r$  r^   r/   s        €€r   rŸ  z=TestLinalgMatrixPower.test_linalg_matrix_power.<locals>.checkt	  s‡   ø€ Ü*¨1¨cÓ2ˆHÙ˜˜3“-ˆCð ×%Ñ% c¨3Ô/à”b—h‘h˜qŸw™wÓ'×2Ñ2Ñ2ˆCÜ�J‰J×&Ñ& s¨H¸3ÀSÐ&ÔIð ×%Ñ%Õ'Ù�a˜”÷ (×'Ñ'ús   Â
BÂB$)r3  ©rj  rj  rQ  ißÿÿÿiïÿÿÿéöÿÿÿrk  r€  é!   r„  r   r.  r  r¡  rd   r   )r‹   rj  zinput must be a square arrayç333333ó?rR  r   rŽ   )r   r  Úlistrm   r   r�   rF  r   rk   rS  r¢  r‘  rI  rZ  r�   rš  rg  r8  )r/   rŸ  r’  Úpowersri   r�  r:   rg   r   rÂ  r_   r„   r^   s   `           @r   Útest_linalg_matrix_powerz.TestLinalgMatrixPower.test_linalg_matrix_powerp	  s£  ù€ à"”˜TÔ"Ô#6Ó7ˆõ	ò )ˆØ�s�œd¤5¨¨b£>Ó2Ñ2°b¸"°XÑ=ˆô ˜˜v t§{¡{°DÖ9ñ $ˆD�#�u˜eà×+Ñ+¨D°%¸Ó?ˆAÙ�!�SŒMÜ—‘˜ u°EÔ:ˆAÙ�!�S�Mð	 :ð ˆð 	×Ñ  EÜ!#§¡¨´r·x±xÔ!@À!Ð Dô	Fð 	×Ñ  EÜ!#§¡¨´r·x±xÔ!@À!Ð Dô	Fô —‘˜“ Ð#ˆØ,ˆØ×Ñ˜%  sÔ+ð 	×$Ñ$ 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   N)r¿   rÀ   rÁ   rÂ   rš  r   r¤  r”  r   r   r—  r—  d	  s"   „ ñòð ñ2Pó ñ2Pr   r—  c                   ó4   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )Ú	TestTracez
    Tests for np.trace.
    c                 ó–   •— t         t        | �  «         t        d¬«      t        «      | _         t        d¬«      t        «      | _        y )NTrŒ   )r,   r¦  r-   r   r  Úcfunc_w_offsetr  Úcfunc_no_offsetr.   s    €r   r-   zTestTrace.setUp«	  s9   ø€ ÜŒi˜Ñ$Ô&à0œc¨4Ô0´Ó>ˆÔØ1œs¨DÔ1Ô2HÓIˆÕr   c                 óŽ   —  ||«       | j                  t        j                  «      5   ||fi |¤Ž d d d «       y # 1 sw Y   y xY wr   r™  )r/   r^   r   rœ  s       r   Úassert_int_offsetzTestTrace.assert_int_offset±	  s6   € áˆaŒà×Ñœv×1Ñ1Õ2Ù�!Ñ�vÒ÷ 3×2Ñ2ús	   ¨
;»Ac                 ó¾  ‡ — ˆ fd„}g d¢}g d¢t        t        dd«      «      z   g d¢z   }t        ||‰ j                  d«      D ]a  \  }}}}‰ j	                  |||«      } |||¬«       |d	k(  r ||«       t        j                  d
||¬«      } |||¬«       |d	k(  sŒZ ||«       Œc d}	‰ j                  |	‰ j                  t        j                  dt
        j                  ¬«      dfd«       ‰ j                  |	‰ j                  t        j                  dt
        j                  ¬«      fd«       ‰ j                  ‰ j                  t        j                  d«      d¬«       y )Nc                 ó|  •— d|v rt        | fi |¤Ž}‰j                  }nt        | fi |¤Ž}‰j                  } || fi |¤Ž}dt	        j
                  | j                  «      j                  z  }t        j                  j                  ||||¬«       ‰j                  «       5   || fi |¤Ž d d d «       y # 1 sw Y   y xY w)Nr  rj  r†  )r  r¨  r  r©  r   rm  r:   rn  ro  rp  r\   )r   rœ  r`   r^   ra   r$  r/   s         €r   rŸ  z#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¨H¸3ÀSÐ&ÔIð ×%Ñ%Õ'Ù�aÑ"˜6Ò"÷ (×'Ñ'ús   Â
B2Â2B;r|  )ióÿÿÿiôÿÿÿiõÿÿÿrŸ  rk  )r€  r�  r*  r„  )r  r   r   r.  r  rd   r   Fr¡  r¡  )r¢  rm   r   r�   rF  r   rk   rZ  r¨  r¢  r�   r©  r«  )
r/   rŸ  r’  Úoffsetsri   r  r:   rg   r   rÂ  s
   `         r   Ú
test_tracezTestTrace.test_trace¸	  sA  ø€ ô	#ò& ;ˆò "¤D¬¨s°B«Ó$8Ñ8º<ÑGˆô ˜˜w¨¯©°TÖ:ñ 'ˆD�&˜% à×+Ñ+¨D°%¸Ó?ˆAÙ�!˜FÕ#Ø˜Š{Ù�a”Ü—‘˜ u°EÔ:ˆAÙ�!˜FÕ#Ø˜‹{Ù�a•ð ;ð ˆð 	×$Ñ$ R¨×)<Ñ)<Ü&(§g¡g¨b¼¿
¹
Ô&CÀQÐ%GÈô	Pà×$Ñ$ R¨×)=Ñ)=Ü&(§g¡g¨b¼¿
¹
Ô&CÐ%EÀuô	Nð 	×ÑØ×Ñ¤§¡Øó"Ø #ð 	õ 	%r   c                 ó6  — t        dd¬«      d„ «       }t        j                  dt        j                  ¬«      } ||«       | j	                  t
        «      5 } |d«       ddd«       t        j                  «      }| j                  d|«       y# 1 sw Y   Œ1xY w)	z
Issue 2314z(optional(float64[:,:]),)TrŒ   c                 ó,   — t        j                  | «      S r   r  rÍ   s    r   Útestedz5TestTrace.test_trace_w_optional_input.<locals>.testedì	  s   € ä—8‘8˜A“;Ðr   rž  rd   Nz(expected array(float64, 2d, A), got None)	r   r   r¢  r�   r   Ú	TypeErrorrN   r�   rP   )r/   r²  r   rƒ   Úerrmsgs        r   Útest_trace_w_optional_inputz%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È   s   @r   r¦  r¦  ¦	  s   ø„ ñôJòò0%ödMr   r¦  c                   óZ   — e Zd Z eg d¢«      Z eg d¢«      Zg d¢Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy	)
Ú
TestBasics)rh   re   re   rh   )re   rh   re   rh   )r}  r‚  rƒ  )r~  r�  )r‹   r5  rF  c           	      ó@  — | j                  ||t        j                  dgggt        j                  ¬«      t        j                  d«      fd«       | j                  ||t        j                  d«      t        j                  dgggt        j                  ¬«      fd«       y )Nr   rd   F)r  r   r8  r�   r¢  )r/   rÂ  r^   s      r   Ú_assert_wrong_dimzTestBasics._assert_wrong_dim
  sv   € à×'Ñ'Ø�œŸ™ A 3 % ´·
±
Ô;¼R¿W¹WÀQ»ZÐHÈ%ô	Qà×'Ñ'Ø�œŸ™ ›
¤B§H¡H°¨s¨e¨W¼B¿J¹JÔ$GÐHÈ%õ	Qr   c                 óÄ   — t        |t        «      s|S t        |«      dk(  r| j                  |d   |«      S | j                  |d   |d   z  |«      j	                  ||¬«      S )Nr   r   rf   )r2  r^  rJ   r<   r?   )r/   ri   r:   rg   s       r   Ú
_gen_inputzTestBasics._gen_input

  sm   € Ü˜$¤Ô&ØˆKä�4‹y˜AŠ~Ø×)Ñ)¨$¨q©'°5Ó9Ð9à×)Ñ)Ø˜‘G˜d 1™gÑ%Øóç"™7Ø ð #ó 'ð'r   c                 ó
  — | j                  ||t        | j                  «      «      }| j                  ||t        | j                  «      «      }t	        j
                  |«      r|dz   }t	        j
                  |«      r|dz   }||fS )Nr’  )r»  r+  Úorder1Úorder2r   rÐ  )r/   Úsize1Úsize2r:   r   r   s         r   Ú
_get_inputzTestBasics._get_input
  sk   € Ø�O‰O˜E 5¬$¨t¯{©{Ó*;Ó<ˆØ�O‰O˜E 5¬$¨t¯{©{Ó*;Ó<ˆä�?‰?˜1ÔØ�B‘ˆAÜ�?‰?˜1ÔØ�B‘ˆAØ�1ˆvˆr   c                 ó(  ‡ ‡	—  t        d¬«      t        «      Š	ˆ	ˆ fd„}t        ‰ j                  «      }t	        ‰ j
                  ‰ j
                  «      D ]ª  \  }}t        |«      }‰ j                  |||«      \  }} |||«       t        j                  t        j                  |«      j                  t        j                  |«      j                  ft        j                  |«      j                  ¬«      } ||||¬«       Œ¬ ‰ j                  d‰	«       y )NTrŒ   c                 ó   •— t        | |«      } ‰| |«      }dt        j                  t        j                  | «      j                  «      j
                  z  }t        j                  j                  ||||¬«       d|v rS ‰| |fi |¤Ž}t        j                  j                  ||||¬«       t        j                  j                  |d   |||¬«       ‰j                  «       5   ‰| |fi |¤Ž d d d «       y # 1 sw Y   y xY w)Nrj  r†  r!   )	r  r   rm  Úasarrayr:   rn  ro  rp  r\   ©r   r   rœ  r`   ra   r$  r^   r/   s         €€r   rŸ  z$TestBasics.test_outer.<locals>.check#
  så   ø€ ô $ A qÓ)ˆHÙ˜˜1“+ˆCà”b—h‘hœrŸz™z¨!›}×2Ñ2Ó3×>Ñ>Ñ>ˆCÜ�J‰J×&Ñ& s¨H¸3ÀSÐ&ÔIð ˜‰Ù˜A˜qÑ+ FÑ+�Ü—
‘
×*Ñ*¨3°¸sØ03ð +ô 5ä—
‘
×*Ñ*¨6°%©=¸(Ø03¸#ð +ô ?ð ×%Ñ%Õ'Ù�a˜Ñ%˜fÒ%÷ (×'Ñ'ús   Ã C4Ã4C=rd   r    r  )r   r  r   r�   r   r’  r+  rÁ  r   rk   rÄ  ri   r:   r¹  )
r/   rŸ  Údtsr¿  rÀ  r:   r   r   rñ  r^   s
   `        @r   Ú
test_outerzTestBasics.test_outer 
  sÎ   ù€ Ø"”˜TÔ"¤<Ó0ˆõ	&ô* �D—K‘KÓ ˆÜ# D§J¡J°·
±
Ö;‰LˆE�5Ü˜“IˆEØ—_‘_ U¨E°5Ó9‰FˆQ�Ù�!�QŒKÜ—‘œ"Ÿ*™* Q›-×,Ñ,¬b¯j©j¸«m×.@Ñ.@ÐAÜ"$§*¡*¨Q£-×"5Ñ"5ô7ˆAá�!�Q˜AÖð <ð 	×Ñ˜w¨Õ.r   c                 óÀ  ‡ ‡	—  t        d¬«      t        «      Š	ˆ	ˆ fd„}t        ‰ j                  ‰ j                  ‰ j                  «      D ]%  \  }}}‰ j                  |||«      \  }} |||«       Œ' ‰ j                  d‰	«       t        j                  d«      d d d…   t        j                  d«      d d d…   f}d}‰ j                  ‰	||t        j                  ¬«       y )	NTrŒ   c                 óP  •— t        | |«      } ‰| |«      }dt        j                  t        j                  | «      j                  «      j
                  z  }t        j                  j                  ||||¬«       ‰j                  «       5   ‰| |«       d d d «       y # 1 sw Y   y xY w)Nrj  r†  )	r  r   rm  rÄ  r:   rn  ro  rp  r\   rÅ  s         €€r   rŸ  z#TestBasics.test_kron.<locals>.checkF
  s   ø€ ä" 1 aÓ(ˆHÙ˜˜1“+ˆCà”b—h‘hœrŸz™z¨!›}×2Ñ2Ó3×>Ñ>Ñ>ˆCÜ�J‰J×&Ñ& s¨H¸3ÀSÐ&ÔIð ×%Ñ%Õ'Ù�a˜”÷ (×'Ñ'ús   Â	
BÂB%r  rk  rŸ   zonly supports 'C' or 'F' layoutrf  )r   r  r   r’  r�   rÁ  r¹  r   rk   rI  r
   r‡   )
r/   rŸ  r¿  rÀ  r:   r   r   r_   r„   r^   s
   `        @r   Ú	test_kronzTestBasics.test_kronC
  sÂ   ù€ Ø"”˜TÔ"¤;Ó/ˆõ
	ô ˜Ÿ
™
 D§J¡J°·±Ö<ñ  ˆE�5˜%à—_‘_ U¨E°5Ó9‰FˆQ�Ù�!�Q�Kð =ð 	×Ñ˜v uÔ-ä—‘˜“™S˜q˜SÑ!¤2§8¡8¨B£<±°!°Ñ#4Ð5ˆØ/ˆØ×Ñ˜%  s´×0BÑ0BÐÕCr   N)r¿   rÀ   rÁ   r   r½  r¾  r’  r¹  r»  rÁ  rÇ  rÊ  r”  r   r   r·  r·  ú	  s;   „ áÒ'Ó(€FÙÒ'Ó(€Fò ?€EòQò
'òò!/óFDr   r·  c                   ó   — e Zd Zd„ Zy)ÚTestHelpersc                 ó  ‡ ‡— ddl mŠ ˆ fd„}t        ˆfd„«       }ddg}t        j                  g}ddg} ||t        j
                  |||«       t        ˆfd	„«       }d
dg}t        j                  g}ddg}d„ } ||||||«       y )Nr   )Ú_copy_to_fortran_orderc                 óX  •— t        |||«      D ]™  \  }}}t        j                  t        j                  |«      «      j	                  ||¬«      } | |«      }	‰
j                   ||«      |	«       ‰
j                  |j                  j                  |	j                  j                  «       Œ› y )Nrf   )	r   r   r4   Úprodr?   r]   ÚassertNotEqualÚctypesÚdata)ÚudtÚexpectfnÚshapesr�   r9  rs   r:   rg   r   r  r/   s             €r   rŸ  z5TestHelpers.test_copy_to_fortran_order.<locals>.checkb
  s�   ø€ Ü'.¨v°v¸vÖ'FÑ#��u˜eÜ—I‘IœbŸg™g e›nÓ-×5Ñ5°eÀ5Ð5ÓI�á˜“F�à×'Ñ'©°«°QÔ7à×#Ñ# A§H¡H§M¡M°1·8±8·=±=ÕAñ (Gr   c                 ó   •—  ‰| «      S r   r”  )r   rÎ  s    €r   Údirect_callz;TestHelpers.test_copy_to_fortran_order.<locals>.direct_calll
  s   ø€ á)¨!Ó,Ð,r   )r‹   r°   )r‹   rŸ   rj  re   rh   c                 ó*   •— | d d d…   d   } ‰|«      S ©NrŸ   r   r”  )r   ÚslicedrÎ  s     €r   Úslice_to_anyz<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Ÿ   rj  c                 óB   — | d d d…   d   }t        j                  |«      S rÚ  )r   Úasfortranarray)r   rÛ  s     r   Úexpected_slice_to_anyzETestHelpers.test_copy_to_fortran_order.<locals>.expected_slice_to_any€
  s$   € à‘s˜�s‘V˜A‘YˆFÜ×$Ñ$ VÓ,Ð,r   )Únumba.np.linalgrÎ  r   r   ÚintprÞ  )	r/   rŸ  rØ  rÖ  r�   r9  rÜ  rß  rÎ  s	   `       @r   Útest_copy_to_fortran_orderz&TestHelpers.test_copy_to_fortran_order_
  s¢   ù€ Ý:ô	Bô 
ó	-ó 
ð	-ð ˜)Ð$ˆÜ—'‘'�ˆØ�s�ˆÙˆkœ2×,Ñ,¨f°f¸fÔEô 
ó	2ó 
ð	2ð
 ˜\Ð*ˆÜ—'‘'�ˆØ�s�ˆò	-ñ
 	ˆlÐ1°6¸6À6ÕJr   N)r¿   rÀ   rÁ   râ  r”  r   r   rÌ  rÌ  ^
  s   „ ó&Kr   rÌ  Ú__main__r�  )rŽ   )gVçž¯Ò<r   r4  )JrÅ   r*   Ú	itertoolsr   r   ÚsysrE   Ú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  r  r  r  r  rz  r–  r·  rÅ  rõ  r  r  r  rN  rY  rg  rz  r†  rŽ  r—  r¦  r·  rÌ  r¿   Úmainr”  r   r   Ú<module>rî     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ÒØ€H‡M�M…Oð r   