§
    2@Äj*� ã                   óÈ  — 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 d dlmZmZmZmZmZmZmZ d dl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*dNd„Z+d„ Z,dOd„Z-d„ Z.dPd„Z/d„ Z0d„ Z1dQd„Z2dQd „Z3dQd!„Z4d"„ Z5dRd#„Z6d$„ Z7dQd%„Z8d&„ Z9 G d'„ d(ee¦  «        Z: G d)„ d*e¦  «        Z; G d+„ d,e:¦  «        Z< G d-„ d.e:¦  «        Z= G d/„ d0e:¦  «        Z> G d1„ d2e:¦  «        Z? G d3„ d4e:¦  «        Z@ G d5„ d6e:¦  «        ZA G d7„ d8eA¦  «        ZB G d9„ d:eA¦  «        ZC G d;„ d<e:¦  «        ZD G d=„ d>e:¦  «        ZE G d?„ d@eA¦  «        ZF G dA„ dBe:¦  «        ZG G dC„ dDeA¦  «        ZH G dE„ dFe:¦  «        ZI G dG„ dHe:¦  «        ZJ G dI„ dJeA¦  «        ZK G dK„ dLe¦  «        ZLeMdMk    r e jN        ¦   «          dS dS )Sé    N)ÚproductÚcycle)ÚNumberÚIntegral)ÚjitÚnjitÚtypeof)Úerrors)Únumpy_version)ÚTestCaseÚtagÚneeds_lapackÚ
needs_blasÚ
_is_armv7lÚEnableNRTStatsMixinÚavailable_memory_bytes)Ú_LAPACK_ILP64é   )Úmatmul_usecasec                 ó,   — t          j        | |¦  «        S ©N©ÚnpÚdot©ÚaÚbs     úHC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_linalg.pyÚdot2r      s   € ÝŒ6�!�Q‰<Œ<Ðó    c                 ó0   — t          j        | ||¬¦  «        S ©N©Úoutr   ©r   r   r$   s      r   Údot3r&      s   € ÝŒ6�!�Q˜CÐ Ñ Ô Ð r    c                 ó,   — t          j        | |¦  «        S r   )r   Úvdotr   s     r   r(   r(      ó   € ÝŒ7�1�a‰=Œ=Ðr    c                   ó|  ‡ — 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 ed„ ¦   «         Z!ˆ xZ"S )ÚTestProductz!
    Tests for dot products.
    c                 ó|   •— t          j        ¦   «          t          t          | ¦  «                             ¦   «          d S r   )ÚgcÚcollectÚsuperr+   ÚsetUp©ÚselfÚ	__class__s    €r   r0   zTestProduct.setUp)   s0   ø€ å
Œ
‰ŒˆÝ�k˜4Ñ Ô ×&Ò&Ñ(Ô(Ð(Ð(Ð(r    c                 óÊ   — t          j        |¦  «        }t          |t           j        ¦  «        r|dz  dz                        |¦  «        S |dz  dz
                       |¦  «        S ©Ny      ð?      à¿y               @g      à?r   ©r   ÚarangeÚ
issubclassÚcomplexfloatingÚastype©r2   ÚnÚdtypeÚbases       r   Úsample_vectorzTestProduct.sample_vector.   ó`   € õ Œy˜‰|Œ|ˆÝ�e�RÔ/Ñ0Ô0ð 	2Ø˜HÑ%¨Ñ*×2Ò2°5Ñ9Ô9Ð9à˜3‘J ‘N×*Ò*¨5Ñ1Ô1Ð1r    c                 ó^   — |                       ||z  |¦  «                             ||f¦  «        S r   )r?   Úreshape)r2   Úmr<   r=   s       r   Úsample_matrixzTestProduct.sample_matrix7   s.   € Ø×!Ò! ! a¡%¨Ñ/Ô/×7Ò7¸¸A¸Ñ?Ô?Ð?r    c              #   óT  K  — t          j        d¬¦  «        5 }t          j        dt          j        ¦  «         dV — ddd¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         |                      |d         j        t          j        ¦  «         |  	                    dt          |d         j        ¦  «        ¦  «         |                      |d         j        |j        j        ¦  «         |                      |d         j        |j        j        dz   ¦  «         dS )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)r2   ÚpyfuncÚws      r   Úcheck_contiguity_warningz$TestProduct.check_contiguity_warning:   s8  è è € õ
 Ô$¨DÐ1Ñ1Ô1ð 	°QÝÔ! (­FÔ,JÑKÔKÐKØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×Ò¥ A¡¤¨Ñ*Ô*Ð*Ø�Š�a˜”d”m¥VÔ%CÑDÔDÐDØ�ŠÐ3µS¸¸1¼¼Ñ5FÔ5FÑGÔGÐGØ×Ò˜˜1œœ¨¬Ô(CÑDÔDÐDà×Ò˜˜1œœ f¤oÔ&DÀqÑ&HÑIÔIÐIÐIÐIs   ˜$AÁAÁAc                 ó¨   — |                       ¦   «         5   ||Ž } ||Ž }|                      ||d¬¦  «         ~~d d d ¦  «         d S # 1 swxY w Y   d S )NT©Úignore_sign_on_zero)ÚassertNoNRTLeakÚassertPreciseEqual)r2   rZ   ÚcfuncÚargsÚexpectedÚgots         r   Ú
check_funczTestProduct.check_funcI   s®   € Ø×!Ò!Ñ#Ô#ð 	ð 	Ø�v˜t�}ˆHØ�%˜�,ˆCØ×#Ò# C¨ÀtÐ#ÑLÔLÐLØ�Xð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   •%AÁAÁAc                 ó  — |j         dz   |j        z  dz   }|j         |j        z  }t          j        |t          j        ¬¦  «        }t          |j        dz   ¦  «        D ]6}||||z   …                              |j        ¬¦  «        }|j        j	        r nŒ7t          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_contiguousrB   Úshape)r2   Úarrrm   ÚdatasizeÚtmpÚiÚnews          r   Ú_aligned_copyzTestProduct._aligned_copyQ   s  € ð ”˜1‘ ¤Ñ,¨qÑ0ˆØ”8˜cœlÑ*ˆÝŒh�t¥2¤8Ð,Ñ,Ô,ˆÝ�s”| aÑ'Ñ(Ô(ð 	>ð 	>ˆAØ�a˜!˜h™,Ð&Ô'×,Ò,°3´9Ð,Ñ=Ô=ˆCØŒyÔ ð Ø�ðõ Ð<Ñ=Ô=Ð=ØŒ9Ô!ð 	8Ý”*˜S #¤)°3Ð7Ñ7Ô7ˆCˆCå”*˜S #¤)°3Ð7Ñ7Ô7ˆCØ�Q�Q�Q”ˆˆAˆAˆA‰ØŒyÔ Ð Ð Ð Øˆ
r    c                 ód  — t           r| j        nt          j        }|                      ¦   «         5   ||¦  «        } ||¦  «        }|                       ||d|iŽ|¦  «         |                       ||d|iŽ|¦  «         |                      ||d¬¦  «         ~~d d d ¦  «         d S # 1 swxY w Y   d S )Nr$   Tr^   )r   r}   r   Úcopyr`   rO   ra   )r2   rZ   rb   rc   r$   Úcopierrd   re   s           r   Úcheck_func_outzTestProduct.check_func_outf   s  € Ý'1Ð>�Ô#Ð#µr´wˆØ×!Ò!Ñ#Ô#ð 	ð 	Ø�v˜c‘{”{ˆHØ�&˜‘+”+ˆCØ�MŠM˜&˜& $Ð5¨HÐ5Ð5°xÑ@Ô@Ð@Ø�MŠM˜%˜% Ð/¨3Ð/Ð/°Ñ5Ô5Ð5Ø×#Ò# C¨ÀtÐ#ÑLÔLÐLØ�Xð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¯A)B%Â%B)Â,B)Fc                 óÐ   — |                       t          ¦  «        5 } ||Ž  d d d ¦  «         n# 1 swxY w Y   |rdnd}|                      |t          |j        ¦  «        ¦  «         d S )Nzincompatible output array sizezincompatible array sizes)ÚassertRaisesÚ
ValueErrorrQ   rR   Ú	exception)r2   rb   rc   Úis_outÚraisesÚmsgs         r   Úassert_mismatching_sizesz$TestProduct.assert_mismatching_sizesp   s®   € Ø×Ò�zÑ*Ô*ð 	¨fØˆE�4ˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à39ð *Ð/Ð/Ø)ð 	à�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s   ›-­1´1únp.dot()c                 óÔ   — |                       t          j        ¦  «        5 } ||Ž  d d d ¦  «         n# 1 swxY w Y   |                      |›d�t	          |j        ¦  «        ¦  «         d S )Nz' arguments must all have the same dtype)rƒ   r
   ÚTypingErrorrQ   rR   r…   )r2   rb   rc   Ú	func_namer‡   s        r   Úassert_mismatching_dtypesz%TestProduct.assert_mismatching_dtypesw   s°   € Ø×Ò�vÔ1Ñ2Ô2ð 	°fØˆE�4ˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠØ"˜˜ð%å˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-ð 	-ð 	-s    2²6¹6c           
      óš  — d} t          d¬¦  «        |¦  «        }| j        D ]r}|                      ||¦  «        }|                      ||¦  «        }|                      ||||f¦  «         |                      |||d d d…         |d d d…         f¦  «         Œs|                      |dz
  t          j        ¦  «        }|                      |t          j        ¦  «        }|                      |||f¦  «         |                      |t          j        ¦  «        }|                      |t          j        ¦  «        }|                      |||f|¬¦  «         d S )Né   T©Únopythonéÿÿÿÿr   )r�   )	r   Údtypesr?   rf   r   Úfloat64r‰   Úfloat32rŽ   )r2   rZ   r�   r<   rb   r=   r   r   s           r   Úcheck_dot_vvzTestProduct.check_dot_vv~   sI  € ØˆØ"•˜TÐ"Ñ"Ô" 6Ñ*Ô*ˆØ”[ð 	?ð 	?ˆEØ×"Ò" 1 eÑ,Ô,ˆAØ×"Ò" 1 eÑ,Ô,ˆAØ�OŠO˜F E¨A¨q¨6Ñ2Ô2Ð2à�OŠO˜F E¨A¨d¨d°¨d¬G°Q°t°t¸°t´WÐ+=Ñ>Ô>Ð>Ð>ð ×Ò˜q 1™u¥b¤jÑ1Ô1ˆØ×Ò˜q¥"¤*Ñ-Ô-ˆØ×%Ò% e¨a°¨VÑ4Ô4Ð4à×Ò˜q¥"¤*Ñ-Ô-ˆØ×Ò˜q¥"¤*Ñ-Ô-ˆØ×&Ò& u¨q°!¨fÀ	Ð&ÑJÔJÐJÐJÐJr    c                 ó<   — |                       t          d¦  «         dS )z/
        Test vector * vector np.dot()
        rŠ   N)r—   r   ©r2   s    r   Útest_dot_vvzTestProduct.test_dot_vv‘   s    € ð
 	×Ò�$ 
Ñ+Ô+Ð+Ð+Ð+r    c                 ó<   — |                       t          d¦  «         dS )z 
        Test np.vdot()
        z	np.vdot()N)r—   r(   r™   s    r   Ú	test_vdotzTestProduct.test_vdot˜   s    € ð
 	×Ò�$ Ñ,Ô,Ð,Ð,Ð,r    c                 ó„  ‡ — ˆ fd„} t          d¬¦  «        |¦  «        }|� t          d¬¦  «        |¦  «        }dD ]¶\  }} |||¦  «        D ]<\  }	}
‰                      |||	|
f¦  «         ‰                      |||
|	j        f¦  «         Œ=|�f |||¦  «        D ]Y\  }	}
t          j        ||	j        ¬¦  «        }‰                      |||	|
f|¦  «         ‰                      |||
|	j        f|¦  «         ŒZŒ·d\  }}‰                      ||dz
  t          j        ¦  «        }	‰  	                    |t          j        ¦  «        }
‰  
                    ||	|
f¦  «         ‰  
                    ||
|	j        f¦  «         |�ôt          j        |t          j        ¦  «        }‰  
                    ||	|
|f¦  «         ‰  
                    ||
|	j        |f¦  «         ‰                      ||t          j        ¦  «        }	‰  	                    |t          j        ¦  «        }
t          j        |dz
  t          j        ¦  «        }‰  
                    ||	|
|fd¬¦  «         ‰  
                    ||
|	j        |fd¬¦  «         ‰                      ||t          j        ¦  «        }	‰  	                    |t          j        ¦  «        }
‰                      ||	|
f|¦  «         |�|‰                      ||t          j        ¦  «        }	‰  	                    |t          j        ¦  «        }
t          j        |t          j        ¦  «        }‰                      ||	|
|f|¦  «         d S d S )	Nc              3   óv  •K  — dD ]]}‰                      | |t          j        ¦  «                             |¬¦  «        }‰                     |t          j        ¦  «        }||fV — Œ^‰j        D ]5}‰                      | ||¦  «        }‰                     ||¦  «        }||fV — Œ6|d d d…         |d d d…         fV — d S ©NÚCFrj   r“   )rD   r   r•   r   r?   r”   )rC   r<   rk   r   r   r=   r2   s         €r   Úsamplesz)TestProduct.check_dot_vm.<locals>.samples¡   sÝ   øè è € Øð ð �Ø×&Ò& q¨!­R¬ZÑ8Ô8×=Ò=ÀEÐ=ÑJÔJ�Ø×&Ò& q­"¬*Ñ5Ô5�Ø˜�d�
�
�
�
Øœð ð �Ø×&Ò& q¨!¨UÑ3Ô3�Ø×&Ò& q¨%Ñ0Ô0�Ø˜�d�
�
�
�
à�D�D�b�D”'˜1˜T˜T˜r˜Tœ7Ð"Ð"Ð"Ð"Ð"Ð"r    Tr‘   )©é   r�   )r�   r   )r   r�   rh   r¢   r   ©r†   )r   rf   ÚTr   ro   r=   r�   rD   r•   r?   r‰   r–   rŽ   )r2   Úpyfunc2Úpyfunc3r�   r¡   Úcfunc2Úcfunc3rC   r<   r   r   r$   s   `           r   Úcheck_dot_vmzTestProduct.check_dot_vmŸ   sX  ø€ ð
	#ð 
	#ð 
	#ð 
	#ð 
	#ð $•˜dÐ#Ñ#Ô# GÑ,Ô,ˆØÐØ'•S $Ð'Ñ'Ô'¨Ñ0Ô0ˆFðð 	Hð 	H‰DˆAˆqð  ˜  1™œð ;ð ;‘��1Ø—’ ¨°!°Q°Ñ8Ô8Ð8Ø—’ ¨°!°Q´S°Ñ:Ô:Ð:Ð:ØÐ"Ø#˜G A q™MœMð Hð H‘D�A�qÝœ( 1¨A¬GÐ4Ñ4Ô4�CØ×'Ò'¨°¸!¸Q¸ÀÑEÔEÐEØ×'Ò'¨°¸!¸Q¼S¸À3ÑGÔGÐGÐGøð ‰ˆˆ1Ø×Ò˜q ! a¡%­¬Ñ4Ô4ˆØ×Ò˜q¥"¤*Ñ-Ô-ˆØ×%Ò% f¨q°!¨fÑ5Ô5Ð5Ø×%Ò% f¨q°!´#¨hÑ7Ô7Ð7ØÐÝ”(˜1�bœjÑ)Ô)ˆCØ×)Ò)¨&°1°a¸°+Ñ>Ô>Ð>Ø×)Ò)¨&°1°a´c¸3°-Ñ@Ô@Ð@Ø×"Ò" 1 a­¬Ñ4Ô4ˆAØ×"Ò" 1¥b¤jÑ1Ô1ˆAÝ”(˜1˜q™5¥"¤*Ñ-Ô-ˆCØ×)Ò)¨&°1°a¸°+ÀdÐ)ÑKÔKÐKØ×)Ò)¨&°1°a´c¸3°-ÈÐ)ÑMÔMÐMà×Ò˜q !¥R¤ZÑ0Ô0ˆØ×Ò˜q¥"¤*Ñ-Ô-ˆØ×&Ò& v°°1¨v°yÑAÔAÐAØÐØ×"Ò" 1 a­¬Ñ4Ô4ˆAØ×"Ò" 1¥b¤jÑ1Ô1ˆAÝ”(˜1�bœjÑ)Ô)ˆCØ×*Ò*¨6°A°q¸#°;À	ÑJÔJÐJÐJÐJð	 Ðr    c                 óH   — |                       t          t          d¦  «         dS )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Ñ1Ô1Ð1Ð1Ð1r    c                 ó<  ‡ — ˆ fd„} t          d¬¦  «        |¦  «        }|� t          d¬¦  «        |¦  «        }dD ]â\  }}}	 ||||	¦  «        D ]A\  }
}‰                      |||
|f¦  «         ‰                      |||j        |
j        f¦  «         ŒB|�‹ ||||	¦  «        D ]}\  }
}t          j        ||f|
j        ¬¦  «        }‰                      |||
|f|¦  «         t          j        ||f|
j        ¬¦  «        }‰                      |||j        |
j        f|¦  «         Œ~Œãd\  }}}	‰                      ||	dz
  t          j        ¦  «        }
‰                      |	|t          j        ¦  «        }‰  	                    ||
|f¦  «         |�»t          j        ||ft          j        ¦  «        }‰  	                    ||
||f¦  «         ‰                      ||	t          j        ¦  «        }
‰                      |	|t          j        ¦  «        }t          j        ||dz
  ft          j        ¦  «        }‰  	                    ||
||fd¬¦  «         ‰                      ||	t          j
        ¦  «        }
‰                      |	|t          j        ¦  «        }‰                      ||
|f|¦  «         |�‰                      ||	t          j        ¦  «        }
‰                      |	|t          j        ¦  «        }t          j        ||ft          j
        ¦  «        }‰                      ||
||f|¦  «         d S d S )	Nc              3   óÄ  •K  — t          dd¦  «        D ]u\  }}‰                     | |t          j        ¦  «                             |¬¦  «        }‰                     ||t          j        ¦  «                             |¬¦  «        }||fV — Œv‰j        D ]6}‰                     | ||¦  «        }‰                     |||¦  «        }||fV — Œ7|d d d…         |d d d…         fV — d S rŸ   )r   rD   r   r•   r   r”   )	rC   r<   ÚkÚorder_aÚorder_br   r   r=   r2   s	           €r   r¡   z)TestProduct.check_dot_mm.<locals>.samplesà   s  øè è € Ý$+¨D°$Ñ$7Ô$7ð ð Ñ �˜Ø×&Ò& q¨!­R¬ZÑ8Ô8×=Ò=ÀGÐ=ÑLÔL�Ø×&Ò& q¨!­R¬ZÑ8Ô8×=Ò=ÀGÐ=ÑLÔL�Ø˜�d�
�
�
�
Øœð ð �Ø×&Ò& q¨!¨UÑ3Ô3�Ø×&Ò& q¨!¨UÑ3Ô3�Ø˜�d�
�
�
�
à�D�D�b�D”'˜1˜T˜T˜r˜Tœ7Ð"Ð"Ð"Ð"Ð"Ð"r    Tr‘   )©r£   r�   é   )r   r�   r´   )r   r   r´   )r   r�   r£   )r�   r   r£   )r   r   r�   )r�   r£   r   rh   r³   r   r¤   )r   rf   r¥   r   ro   r=   r�   rD   r•   r‰   r–   rŽ   )r2   r¦   r§   r�   r¡   r¨   r©   rC   r<   r°   r   r   r$   s   `            r   Úcheck_dot_mmzTestProduct.check_dot_mmÞ   s=  ø€ ð
	#ð 
	#ð 
	#ð 
	#ð 
	#ð $•˜dÐ#Ñ#Ô# GÑ,Ô,ˆØÐØ'•S $Ð'Ñ'Ô'¨Ñ0Ô0ˆFðð 	Jð 	J‰GˆAˆq�!ð  ˜  1 aÑ(Ô(ð =ð =‘��1Ø—’ ¨°!°Q°Ñ8Ô8Ð8Ø—’ ¨°!´#°q´s°Ñ<Ô<Ð<Ð<ØÐ"Ø#˜G A q¨!Ñ,Ô,ð Jð J‘D�A�qÝœ( A q 6°´Ð9Ñ9Ô9�CØ×'Ò'¨°¸!¸Q¸ÀÑEÔEÐEÝœ( A q 6°´Ð9Ñ9Ô9�CØ×'Ò'¨°¸!¼#¸q¼s¸ÀSÑIÔIÐIÐIøð ‰ˆˆ1ˆaØ×Ò˜q ! a¡%­¬Ñ4Ô4ˆØ×Ò˜q !¥R¤ZÑ0Ô0ˆØ×%Ò% f¨q°!¨fÑ5Ô5Ð5ØÐÝ”(˜A˜q˜6¥2¤:Ñ.Ô.ˆCØ×)Ò)¨&°1°a¸°+Ñ>Ô>Ð>Ø×"Ò" 1 a­¬Ñ4Ô4ˆAØ×"Ò" 1 a­¬Ñ4Ô4ˆAÝ”(˜A˜q 1™u˜:¥r¤zÑ2Ô2ˆCØ×)Ò)¨&°1°a¸°+ÀdÐ)ÑKÔKÐKà×Ò˜q !¥R¤ZÑ0Ô0ˆØ×Ò˜q !¥R¤ZÑ0Ô0ˆØ×&Ò& v°°1¨v°yÑAÔAÐAØÐØ×"Ò" 1 a­¬Ñ4Ô4ˆAØ×"Ò" 1 a­¬Ñ4Ô4ˆAÝ”(˜A˜q˜6¥2¤:Ñ.Ô.ˆCØ×*Ò*¨6°A°q¸#°;À	ÑJÔJÐJÐJÐJð	 Ðr    c                 óH   — |                       t          t          d¦  «         dS )z/
        Test matrix * matrix np.dot()
        rŠ   N)rµ   r   r&   r™   s    r   Útest_dot_mmzTestProduct.test_dot_mm  r­   r    c                 ó<   — |                       t          d¦  «         dS )z&
        Test vector @ vector
        ú'@'N)r—   r   r™   s    r   Útest_matmul_vvzTestProduct.test_matmul_vv#  s    € ð
 	×Ò�.¨%Ñ0Ô0Ð0Ð0Ð0r    c                 ó>   — |                       t          dd¦  «         dS )z:
        Test vector @ matrix and matrix @ vector
        Nr¹   )rª   r   r™   s    r   Útest_matmul_vmzTestProduct.test_matmul_vm*  ó"   € ð
 	×Ò�.¨$°Ñ6Ô6Ð6Ð6Ð6r    c                 ó>   — |                       t          dd¦  «         dS )z&
        Test matrix @ matrix
        Nr¹   )rµ   r   r™   s    r   Útest_matmul_mmzTestProduct.test_matmul_mm1  r½   r    c                 ó€  — d\  }}}t           j        }|                      |||¦  «        d d d…         }|                      |||¦  «        d d d…         }t          j        ||f|¦  «        } t	          d¬¦  «        t
          ¦  «        }|                      |j        ¦  «        5   |||¦  «         d d d ¦  «         n# 1 swxY w Y    t	          d¬¦  «        t          ¦  «        }|                      |j        ¦  «        5   ||||¦  «         d d d ¦  «         n# 1 swxY w Y   |  	                    ||¦  «        d d d…         }|  	                    ||¦  «        d d d…         } t	          d¬¦  «        t          ¦  «        }|                      |j        ¦  «        5   |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr³   r“   Tr‘   )r   r•   rD   ro   r   r   r\   Úpy_funcr&   r?   r(   )	r2   rC   r°   r<   r=   r   r   r$   rb   s	            r   Útest_contiguity_warningsz$TestProduct.test_contiguity_warnings8  s  € à‰ˆˆ1ˆaÝ”
ˆØ×Ò˜q ! UÑ+Ô+¨D¨D¨b¨DÔ1ˆØ×Ò˜q ! UÑ+Ô+¨D¨D¨b¨DÔ1ˆÝŒh˜˜1�v˜uÑ%Ô%ˆà"•˜TÐ"Ñ"Ô"¥4Ñ(Ô(ˆØ×*Ò*¨5¬=Ñ9Ô9ð 	ð 	ØˆE�!�Q‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à"•˜TÐ"Ñ"Ô"¥4Ñ(Ô(ˆØ×*Ò*¨5¬=Ñ9Ô9ð 	ð 	ØˆE�!�Q˜ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×Ò˜q %Ñ(Ô(¨¨¨2¨Ô.ˆØ×Ò˜q %Ñ(Ô(¨¨¨2¨Ô.ˆà"•˜TÐ"Ñ"Ô"¥4Ñ(Ô(ˆØ×*Ò*¨5¬=Ñ9Ô9ð 	ð 	ØˆE�!�Q‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   Â"B;Â;B?ÃB?Ã>DÄDÄDÆF3Æ3F7Æ:F7c                 ó°  — d„ }d\  }}t           j        }|                      |||¦  «        }|                      ||¦  «        } t	          d¬¦  «        |¦  «        }t          j        d¬¦  «        5 }t          j        dt          j	        ¦  «          |||¦  «         d d d ¦  «         n# 1 swxY w Y   |  
                    t          |¦  «        d¦  «         d S )Nc                 ó@   — t          j        | |d d …d f         ¦  «        S r   r   )r   Úxs     r   Údot_with_newaxiszMTestProduct.test_no_contiguity_warning_with_newaxis.<locals>.dot_with_newaxisS  s    € Ý”6˜!˜Q˜q˜q˜q $˜wœZÑ(Ô(Ð(r    ©é   rÈ   Tr‘   rF   rH   r   )r   r•   rD   r?   r   rI   rJ   rK   r
   rL   rT   rN   )	r2   rÆ   rC   r<   r=   r   rÅ   rb   r[   s	            r   Ú'test_no_contiguity_warning_with_newaxisz3TestProduct.test_no_contiguity_warning_with_newaxisN  s  € ð
	)ð 	)ð 	)ð ‰ˆˆ1Ý”
ˆØ×Ò˜q ! UÑ+Ô+ˆØ×Ò˜q %Ñ(Ô(ˆà"•˜TÐ"Ñ"Ô"Ð#3Ñ4Ô4ˆÝÔ$¨DÐ1Ñ1Ô1ð 	°QÝÔ! (­FÔ,JÑKÔKÐKØˆE�!�Q‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#s   Á0,B(Â(B,Â/B,)F)rŠ   )#Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r•   r–   Ú
complex128Ú	complex64r”   r0   r?   rD   Ú
contextlibÚcontextmanagerr\   rf   r}   r�   r‰   rŽ   r—   r   rš   rœ   rª   r¬   rµ   r·   rº   r¼   r¿   rÂ   rÉ   Ú__classcell__©r3   s   @r   r+   r+   "   s  ø€ € € € € ðð ð Œj˜"œ* b¤m°R´\ÐB€Fð)ð )ð )ð )ð )ð
2ð 2ð 2ð@ð @ð @ð ÔðJð Jñ ÔðJðð ð ðð ð ð*ð ð ð2ð 2ð 2ð 2ð-ð -ð -ð -ðKð Kð Kð& ð,ð ,ñ „Zð,ð ð-ð -ñ „Zð-ð6Kð 6Kð 6Kðp ð2ð 2ñ „Zð2ð<Kð <Kð <Kð| ð2ð 2ñ „Zð2ð ð1ð 1ñ „Zð1ð ð7ð 7ñ „Zð7ð ð7ð 7ñ „Zð7ð ðð ñ „Zðð* ð$ð $ñ „Zð$ð $ð $ð $ð $r    r+   c                 ó@   — t           j                             | ¦  «        S r   ©r   ÚlinalgÚinv©r   s    r   Úinvert_matrixrÙ   d  ó   € ÝŒ9�=Š=˜ÑÔÐr    c                 ó@   — t           j                             | ¦  «        S r   )r   rÖ   ÚcholeskyrØ   s    r   Úcholesky_matrixrÝ   h  ó   € ÝŒ9×Ò˜aÑ Ô Ð r    c                 ó@   — t           j                             | ¦  «        S r   )r   rÖ   ÚeigrØ   s    r   Ú
eig_matrixrá   l  rÚ   r    c                 ó@   — t           j                             | ¦  «        S r   )r   rÖ   ÚeigvalsrØ   s    r   Úeigvals_matrixrä   p  ó   € ÝŒ9×Ò˜QÑÔÐr    c                 ó@   — t           j                             | ¦  «        S r   )r   rÖ   ÚeighrØ   s    r   Úeigh_matrixrè   t  ó   € ÝŒ9�>Š>˜!ÑÔÐr    c                 ó@   — t           j                             | ¦  «        S r   )r   rÖ   ÚeigvalshrØ   s    r   Úeigvalsh_matrixrì   x  rÞ   r    c                 óB   — t           j                             | |¦  «        S r   ©r   rÖ   Úsvd)r   Úfull_matricess     r   Ú
svd_matrixrñ   |  s   € ÝŒ9�=Š=˜˜MÑ*Ô*Ð*r    c                 ó@   — t           j                             | ¦  «        S r   ©r   rÖ   ÚqrrØ   s    r   Ú	qr_matrixrõ   €  s   € ÝŒ9�<Š<˜‰?Œ?Ðr    r“   c                 óD   — t           j                             | ||¦  «        S r   ©r   rÖ   Úlstsq)ÚAÚBÚrconds      r   Úlstsq_systemrü   „  s   € ÝŒ9�?Š?˜1˜a Ñ'Ô'Ð'r    c                 óB   — t           j                             | |¦  «        S r   ©r   rÖ   Úsolve)rù   rú   s     r   Úsolve_systemr   ˆ  s   € ÝŒ9�?Š?˜1˜aÑ Ô Ð r    çVçž¯Ò<c                 ó@   — t           j                             | ¦  «        S r   ©r   rÖ   Úpinv)rù   rû   s     r   Úpinv_matrixr  Œ  ré   r    c                 ó@   — t           j                             | ¦  «        S r   ©r   rÖ   ÚslogdetrØ   s    r   Úslogdet_matrixr	  �  rå   r    c                 ó@   — t           j                             | ¦  «        S r   )r   rÖ   ÚdetrØ   s    r   Ú
det_matrixr  ”  rÚ   r    c                 óB   — t           j                             | |¦  «        S r   ©r   rÖ   Únorm)r   Úords     r   Únorm_matrixr  ˜  s   € ÝŒ9�>Š>˜!˜SÑ!Ô!Ð!r    c                 óB   — t           j                             | |¦  «        S r   )r   rÖ   Úcond)r   Úps     r   Úcond_matrixr  œ  s   € ÝŒ9�>Š>˜!˜QÑÔÐr    c                 óB   — t           j                             | |¦  «        S r   ©r   rÖ   Úmatrix_rank)r   Útols     r   Úmatrix_rank_matrixr     s   € ÝŒ9× Ò   CÑ(Ô(Ð(r    c                 óB   — t           j                             | |¦  «        S r   )r   rÖ   Úmatrix_power)r   r<   s     r   Úmatrix_power_matrixr  ¤  s   € ÝŒ9×!Ò! ! QÑ'Ô'Ð'r    c                 ó,   — t          j        | |¦  «        S r   ©r   Útrace)r   Úoffsets     r   Útrace_matrixr"  ¨  s   € ÝŒ8�A�vÑÔÐr    c                 ó*   — t          j        | ¦  «        S r   r  rØ   s    r   Útrace_matrix_no_offsetr$  ¬  s   € ÝŒ8�A‰;Œ;Ðr    c                 ó0   — t          j        | ||¬¦  «        S r"   )r   Úouterr%   s      r   Úouter_matrixr'  °  s   € ÝŒ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                 ó|   •— t          j        ¦   «          t          t          | ¦  «                             ¦   «          d S r   )r-   r.   r/   r,  r0   r1   s    €r   r0   zTestLinalgBase.setUpÀ  s0   ø€ å
Œ
‰ŒˆÝ�n˜dÑ#Ô#×)Ò)Ñ+Ô+Ð+Ð+Ð+r    c                 óÊ   — t          j        |¦  «        }t          |t           j        ¦  «        r|dz  dz                        |¦  «        S |dz  dz                        |¦  «        S r5   r6   r;   s       r   r?   zTestLinalgBase.sample_vectorÅ  r@   r    Nc                 ó  — d}t          |¦  «        dk    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                             d¦  «         |\  }}|dk     s|dk     rt          d¦  «        ‚t          ||¦  «        }	|€|	}
nP|dk    rt          d¦  «        ‚t          |t          ¦  «        st          d¦  «        ‚|}
||	k    rt          d¦  «        ‚|d	k    s|d	k    rQ||k    rt          d¦  «        ‚t          ||¦  «        }|                      ||¦  «                             ||¦  «        }�na|                      ||z  |¦  «                             ||¦  «        }t          j                             |¦  «        \  }}|                      ||z  |¦  «        ddd…                              ||¦  «        }t          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.)rl   ri   ú 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=   rk   )rN   r„   r   r–   r•   rÏ   rÎ   ÚrandomÚseedÚminÚ
isinstancer   Úmaxr?   rB   rÖ   rô   ÚlinspaceÚzerosÚnonzeroÚeyer   r¥   Úarray)r2   rm   r=   rk   ÚrankÚ	conditionÚd_condrC   r<   ÚminmnÚrvÚmaxmnÚQrz   ÚUÚ_ÚVÚsvÚSÚidxs                       r   Úspecific_sample_matrixz%TestLinalgBase.specific_sample_matrixÎ  sê  € ð  ˆåˆt‰9Œ9˜Š>ˆ>ÝÐ=Ñ>Ô>Ð>à˜
Ð"Ð"ÝÐ?Ñ@Ô@Ð@à�œ¥R¤Zµ´½r¼}ÐMÐMÐMÝÐIÑJÔJÐJàÐ 	Ð 5ÝÐNÑOÔOÐOàÐØˆIà�qŠ=ˆ=ÝÐ<Ñ=Ô=Ð=å
Œ	�Š�qÑÔÐØ‰ˆˆ1àˆqŠ5ˆ5�A˜’E�EÝÐJÑKÔKÐKå�A�q‘	”	ˆØˆ<ØˆBˆBà�qŠyˆyÝ Ð!BÑCÔCÐCÝ˜d¥HÑ-Ô-ð :Ý Ð!8Ñ9Ô9Ð9ØˆBØ�eŠ|ˆ|Ý Ð!EÑFÔFÐFà�Š6ˆ6�Q˜!’V�Vð ˜FÒ"Ð"Ý ØNñPô Pð På˜˜1‘I”IˆEØ×"Ò" 5¨%Ñ0Ô0×8Ò8¸¸AÑ>Ô>ˆA‰Að ×$Ò$ Q¨¡U¨EÑ2Ô2×:Ò:¸1¸aÑ@Ô@ˆCÝ”9—<’< Ñ$Ô$‰DˆAˆqà×$Ò$ Q¨¡U¨EÑ2Ô2°4°4°R°4Ô8×@Ò@ÀÀAÑFÔFˆCÝ”9—<’< Ñ$Ô$‰DˆAˆqå”˜V Y°Ñ3Ô3ˆBÝ”˜!˜Q˜Ñ Ô ˆAÝ”*�RœV A q™\œ\Ñ*Ô*ˆCØ*,ˆAˆc�!Œf�S�b�SŒk˜3˜qœ6 # 2 #œ;Ð&Ñ'Ý”•r”v˜a ‘|”| Q¤SÑ)Ô)ˆAÝ”˜ %¨uÐ5Ñ5Ô5ˆAàˆr    c                 óº   — |                       |¦  «        5 } ||Ž  d d d ¦  «         n# 1 swxY w Y   |                      |t          |j        ¦  «        ¦  «         d S r   )rƒ   rQ   rR   r…   )r2   rb   rc   rˆ   Úerrr‡   s         r   Úassert_errorzTestLinalgBase.assert_error"  s˜   € Ø×Ò˜sÑ#Ô#ð 	 vØˆE�4ˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s   –(¨,¯,c                 óX   — d}|                       |||t          j        j        ¦  «         d S )Nz.Last 2 dimensions of the array must be square.©rV  r   rÖ   ÚLinAlgError©r2   rb   rc   rˆ   s       r   Úassert_non_squarez TestLinalgBase.assert_non_square'  s,   € Ø>ˆØ×Ò˜%  s­B¬IÔ,AÑBÔBÐBÐBÐBr    c                 óT   — d|z  }|                       |||t          j        ¦  «         d S )Nz9np.linalg.%s() only supported on float and complex arrays©rV  r
   rŒ   ©r2   Únamerb   rc   rˆ   s        r   Úassert_wrong_dtypez!TestLinalgBase.assert_wrong_dtype+  s/   € ØIÈDÑPˆØ×Ò˜%  s­FÔ,>Ñ?Ô?Ð?Ð?Ð?r    Tc                 óf   — |rdnd}|›d|›d�}|                       |||t          j        ¦  «         d S )Nú	np.linalgr   ú.z() only supported on 2-D arraysr]  ©r2   r_  rb   rc   Ú	la_prefixÚprefixrˆ   s          r   Úassert_wrong_dimensionsz&TestLinalgBase.assert_wrong_dimensions/  sE   € Ø )Ð3��¨tˆØ8>¸¸ÀÀÀÐEˆØ×Ò˜%  s­FÔ,>Ñ?Ô?Ð?Ð?Ð?r    c                 óX   — d}|                       |||t          j        j        ¦  «         d S )Nz$Array must not contain infs or NaNs.rX  rZ  s       r   Úassert_no_nan_or_infz#TestLinalgBase.assert_no_nan_or_inf4  s,   € Ø4ˆØ×Ò˜%  s­B¬IÔ,AÑBÔBÐBÐBÐBr    c                 ó”  — t          |t          ¦  «        r|D ]}|                      ||¦  «         ŒdS t          |t          ¦  «        s€|j        j        }|j        j        }d}|                      ||z  |¦  «         d}|dk    r|                      ||¦  «         dS |dk    r|                      ||¦  «         dS t          d¦  «        ‚dS )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.ri   rl   zUnknown contigN)	r?  ÚtupleÚassert_contig_sanityr   rs   rv   Úf_contiguousÚ
assertTruer„   )r2   re   Úexpected_contigr   Úc_contigÚf_contigrˆ   s          r   rl  z#TestLinalgBase.assert_contig_sanity8  sù   € õ �c�5Ñ!Ô!ð 	7àð >ð >�Ø×)Ò)¨!¨_Ñ=Ô=Ð=Ð=ð>ð >õ ˜c¥6Ñ*Ô*ð 7àœ9Ô1�Øœ9Ô1�ð O�Ø—’ ¨8Ñ 3°SÑ9Ô9Ð9àH�Ø" cÒ)Ð)Ø—O’O H¨cÑ2Ô2Ð2Ð2Ð2Ø$¨Ò+Ð+Ø—O’O H¨cÑ2Ô2Ð2Ð2Ð2å$Ð%5Ñ6Ô6Ð6ð!7ð 7r    c                 óZ   — d}|                       |||t          j        j        ¬¦  «         d S )Nz(Matrix is singular to machine precision.©rU  rX  rZ  s       r   Úassert_raise_on_singularz'TestLinalgBase.assert_raise_on_singular]  s/   € Ø8ˆØ×Ò˜%  sµ´	Ô0EÐÑFÔFÐFÐFÐFr    c                 óL  — |                       |j        d         |j        d         ¦  «         t          j        |j        d         |j        ¬¦  «        }dt          j        |j        ¦  «        j        z  }|€d|z  }|€d|z  }t          j                             ||||¦  «         dS )zE
        Checks if a matrix is equal to the identity matrix.
        r“   éþÿÿÿrh   rÈ   Né
   éd   )	rT   rw   r   rD  r=   ÚfinfoÚ
resolutionÚtestingÚassert_allclose)r2   re   ÚrtolÚatolrD  rz  s         r   Úassert_is_identity_matrixz(TestLinalgBase.assert_is_identity_matrixa  sš   € ð
 	×Ò˜œ 2œ¨¬	°"¬Ñ6Ô6Ð6åŒf�S”Y˜r”]¨#¬)Ð4Ñ4Ô4ˆØ�œ #¤)Ñ,Ô,Ô7Ñ7ˆ
Øˆ<Ø˜
‘?ˆDØˆ<Ø˜Ñ#ˆDå
Œ
×"Ò" 3¨¨T°4Ñ8Ô8Ð8Ð8Ð8r    c                 óD   — d}|                       |||t          ¦  «         dS )z5
        For use in norm() and cond() tests.
        z Invalid norm order for matrices.N)rV  r„   rZ  s       r   Úassert_invalid_norm_kindz'TestLinalgBase.assert_invalid_norm_kindq  s)   € ð 1ˆØ×Ò˜%  s­JÑ7Ô7Ð7Ð7Ð7r    c                 óX   — d}|                       |||t          j        j        ¦  «         d S )NzArrays cannot be emptyrX  rZ  s       r   Úassert_raise_on_emptyz$TestLinalgBase.assert_raise_on_emptyx  s,   € Ø&ˆØ×Ò˜%  s­B¬IÔ,AÑBÔBÐBÐBÐBr    )NN©T)rÊ   rË   rÌ   rÍ   r   r•   r–   rÎ   rÏ   r”   r0   r?   rS  r„   rV  r[  r`  rg  ri  rl  rt  r  r�  rƒ  rÒ   rÓ   s   @r   r,  r,  ¸  sJ  ø€ € € € € ðð ð
 Œj˜"œ* b¤m°R´\ÐB€Fð,ð ,ð ,ð ,ð ,ð
2ð 2ð 2ð <@ðRð Rð Rð Rðh 2<ð 2ð 2ð 2ð 2ð
Cð Cð Cð@ð @ð @ð@ð @ð @ð @ð
Cð Cð Cð#7ð #7ð #7ðJGð Gð Gð9ð 9ð 9ð 9ð 8ð 8ð 8ðCð Cð Cð Cð Cð Cð Cr    r,  c                   ó   — e Zd ZdZd„ ZdS )Ú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        |¦  «         ‰                      t          j         	                    |¦  «        |¦  «         |dk    rl|dz
  }	‰                     ||||	¬¦  «        }‰                      |j        |¦  «         ‰                      t          j         	                    |¦  «        |	¦  «         dt          j
        |¦  «        j        z  }
‰                     |||¦  «        }‰                      |j        |¦  «         t          j                             t          j                             |¦  «        d|
|
¬¦  «         |dk    rvd	}‰                     ||||¬
¦  «        }‰                      |j        |¦  «         t          j                             t          j                             |¦  «        d	|
|
¬¦  «         �Œÿt          fˆˆ fd„	}‰                      t"          ¦  «        5 }d} |dt          j        df|t          ¬¦  «         d d d ¦  «         n# 1 swxY w Y   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          ¬¦  «         d S )"NrS  ©©é   r   ©é   rÈ   ©rÈ   rŒ  ©r�   r�   ©r   rŠ  ÚFCr   ©rF  rÈ   r0  ©r}  r~  ç      $@©rG  c                 óÆ   •— ‰                      |¦  «        5 } ‰j        | Ž  d d d ¦  «         n# 1 swxY w Y   ‰                     |t          |j        ¦  «        ¦  «         d S r   )rƒ   rS  rQ   rR   r…   )rc   rˆ   rU  r‡   Úinstr2   s       €€r   Úcheck_errorzCTestTestLinalgBase.test_specific_sample_matrix.<locals>.check_error²  sž   ø€ Ø×"Ò" 3Ñ'Ô'ð 3¨6Ø+�Ô+¨TÐ2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3à�MŠM˜#�s 6Ô#3Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5s   —.®2µ2Úblankr¢   rl   rs  r1  ©r   r2  Úzr3  r4  r5  r“   r6  )r£   éýÿÿÿr7  r9  r´   r:  )r   r�   rw  r8  g      ø?)r,  r   r”   r>  rS  rT   rw   r   rÖ   r  ry  rz  r{  r|  r  r„   rƒ   ÚAssertionErrorr•   Úint32)r2   Úsizesrm   r=   rk   rC   r<   rI  rù   rF  rz  rG  r—  r‡   rˆ   r–  s   `              @r   Útest_specific_sample_matrixz.TestTestLinalgBase.test_specific_sample_matrixƒ  s‡  øø€ õ Ð6Ñ7Ô7ˆà:Ð:Ð:ˆõ #*¨%°´¸dÑ"CÔ"Cð $	<ñ $	<ÑˆD�%˜à‰DˆAˆqÝ˜˜1‘I”IˆEð ×+Ò+¨D°%¸Ñ?Ô?ˆAØ×Ò˜QœW dÑ+Ô+Ð+Ø×Ò�RœY×2Ò2°1Ñ5Ô5°uÑ=Ô=Ð=ð �qŠyˆyØ˜q‘y�Ø×/Ò/°°e¸UÈÐ/ÑNÔN�Ø× Ò  ¤¨$Ñ/Ô/Ð/Ø× Ò ¥¤×!6Ò!6°qÑ!9Ô!9¸4Ñ@Ô@Ð@à�RœX e™_œ_Ô7Ñ7ˆJð ×+Ò+¨D°%¸Ñ?Ô?ˆAØ×Ò˜QœW dÑ+Ô+Ð+ÝŒJ×&Ò&¥r¤y§~¢~°aÑ'8Ô'8Ø')Ø,6Ø,6ð 'ñ 8ô 8ð 8ð �qŠyˆyØ�	Ø×/Ò/Ø˜% °)ð 0ñ =ô =�à× Ò  ¤¨$Ñ/Ô/Ð/Ý”
×*Ò*­2¬9¯>ª>¸!Ñ+<Ô+<Ø+.Ø0:Ø0:ð +ñ <ô <ð <ùõ (2ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð ×Ò�~Ñ.Ô.ð 	H°&ØˆCØˆK˜¥¤¨SÐ1°3½JÐGÑGÔGÐGð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð /ˆØˆ�T�2œ: sÐ+¨SµjÐAÑAÔAÐAð 1ˆØˆ�V�RœZ¨Ð-¨s½
ÐCÑCÔCÐCð ;ˆØˆ�V�RœX sÐ+¨SµjÐAÑAÔAÐAð @ˆØˆ�V�RœZ¨¨a°Ð3°S½jÐIÑIÔIÐIð .ˆØˆ�V�RœZ¨¨d°BÐ7¸Å*ÐMÑMÔMÐMð <ˆØˆ�W�bœj¨#Ð.°½ÐDÑDÔDÐDð 0ˆØˆ�V�RœZ¨¨bÐ1°3½JÐGÑGÔGÐGð 3ˆØˆ�V�RœZ¨¨aÐ0°#½:ÐFÑFÔFÐFð IˆØˆ�V�RœZ¨¨d°BÐ7¸Å*ÐMÑMÔMÐMð &ˆØˆ�V�RœZ¨¨cÐ2°C½ZÐHÑHÔHÐHÐHÐHs   É#JÊJÊJN)rÊ   rË   rÌ   rÍ   rŸ  © r    r   r†  r†  }  s7   € € € € € ðð ð
aIð aIð aIð aIð aIr    r†  c                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestLinalgInvz"
    Tests for np.linalg.inv.
    c                 ór  ‡ ‡— d} t          d¬¦  «        t          ¦  «        Šˆˆ fd„}t          ‰ j        d¦  «        D ])\  }}‰                      ||f||¦  «        } ||¦  «         Œ* |t          j        d¦  «        ¦  «         ‰                      ‰t          j        d¦  «        f¦  «         ‰  	                    d‰t          j        d	t
          j
        ¬
¦  «        f¦  «         ‰                      d‰t          j        d¦  «        f¦  «         ‰                      ‰t          j        d	¦  «        f¦  «         dS )z$
        Test np.linalg.inv
        rw  Tr‘   c                 ó   •— t          | ¦  «        } ‰| ¦  «        }‰                     |d¦  «         d}	 t          j                             ||d¬¦  «         n# t
          $ r d}Y nw xY w|r*t          j        || ¦  «        }‰                     |¦  «         ‰                     ¦   «         5   ‰| ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrl   Frw  ©ÚnulpT)	rÙ   rl  r   r{  Úassert_array_almost_equal_nulprœ  r   r  r`   )r   Úkwargsrd   re   Úuse_reconstructionÚrecrb   r2   s         €€r   Úcheckz,TestLinalgInv.test_linalg_inv.<locals>.checkô  sF  ø€ Ý$ QÑ'Ô'ˆHØ�%˜‘(”(ˆCØ×%Ò% c¨3Ñ/Ô/Ð/à!&Ðð*Ý”
×9Ò9¸#¸xØ?Að :ñ Cô Cð Cð Cøå!ð *ð *ð *à%)Ð"Ð"Ð"ð*øøøð "ð 4Ý”f˜S !‘n”n�Ø×.Ò.¨sÑ3Ô3Ð3ð ×%Ò%Ñ'Ô'ð ð Ø��a‘”�ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s#   µ"A ÁA'Á&A'Â*CÃCÃ
Cr    ©r   r   r¢   r×   ©r£   r£   rh   N)r   rÙ   r   r”   rS  r   ro   r[  Úonesr`  r�  rg  rt  rB  )r2   r<   r«  r=   rk   r   rb   s   `     @r   Útest_linalg_invzTestLinalgInv.test_linalg_invì  sT  øø€ ð
 ˆØ"•˜TÐ"Ñ"Ô"¥=Ñ1Ô1ˆð	ð 	ð 	ð 	ð 	ð 	õ. $ D¤K°Ñ6Ô6ð 	ð 	‰LˆE�5Ø×+Ò+¨Q°¨F°E¸5ÑAÔAˆAØˆE�!‰HŒHˆHˆHð 	ˆ�bŒh�vÑÔÑÔÐð 	×Ò˜u¥r¤w¨v¡¤Ð&8Ñ9Ô9Ð9ð 	×Ò  uÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×$Ò$ U¨EµB´G¸B±K´K°>ÑBÔBÐBð 	×%Ò% e­b¬h°vÑ.>Ô.>Ð-@ÑAÔAÐAÐAÐAr    c                 ó¨  — t          j        g d¢g d¢g d¢g d¢gd¬¦  «        }t          j        |¦  «        }t          d¬¦  «        d	„ ¦   «         }|                     |d
¦  «        }t           j                             ||¦  «          ||d
¦  «        }t           j                             ||¦  «         t           j                             ||¦  «         d S )N©r0  r�   r£   rŠ  ©éûÿÿÿr´   r£   r�   ©é	   r›  r   r   ©r£   rv  r£   é   rl   rj   Tr‘   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S ©Nr   r£   rÕ   ©ÚXÚtests     r   Úainvz2TestLinalgInv.test_no_input_mutation.<locals>.ainv(  ó3   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9—=’= Ñ#Ô#Ð#r    F©r   rE  r   r   rÁ   r{  r|  )r2   r»  ÚX_origr½  rd   re   s         r   Útest_no_input_mutationz$TestLinalgInv.test_no_input_mutation  sã   € åŒH�n�n�nØ$�n�nØ$�n�nØ$�n�nð&ð .1ð2ñ 2ô 2ˆõ
 ”˜‘”ˆå	�dÐ	Ñ	Ô	ð	$ð 	$ñ 
Ô	ð	$ð —<’<  5Ñ)Ô)ˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-àˆd�1�e‰nŒnˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-å
Œ
×"Ò" 8¨SÑ1Ô1Ð1Ð1Ð1r    N)rÊ   rË   rÌ   rÍ   r   r¯  rÁ  r   r    r   r¢  r¢  ç  sX   € € € € € ðð ð ð0Bð 0Bñ „\ð0Bðd ð2ð 2ñ „\ð2ð 2ð 2r    r¢  c                   ó4   — e Zd ZdZd„ Zd„ Zed„ ¦   «         ZdS )ÚTestLinalgCholeskyz'
    Tests for np.linalg.cholesky.
    c                 ó¤  — t           j                             d¦  «         t           j                             ||¦  «        }t           j                             |¦  «        \  }}t          j        d|dz   ¦  «        }t          j        t          j        |j        t          j	        |¦  «        ¦  «        |¦  «        }t          j
        |||¬¦  «        }|S )Nr   r   r;  )r   r<  r=  ÚrandrÖ   rô   r7   r   r¥   ÚdiagrE  )	r2   rC   r=   rk   rù   ÚqrN  ÚLrL  s	            r   rD   z TestLinalgCholesky.sample_matrix=  s™   € å
Œ	�Š�qÑÔÐÝŒI�NŠN˜1˜aÑ Ô ˆõ Œy�|Š|˜A‰Œ‰ˆˆ1ÝŒI�a˜˜Q™ÑÔˆÝŒF•2”6˜!œ#�rœw q™zœzÑ*Ô*¨AÑ.Ô.ˆÝŒH�Q˜e¨5Ð1Ñ1Ô1ˆØˆr    c                 óX   — d}|                       |||t          j        j        ¦  «         d S )Nz Matrix is not positive definite.rX  rZ  s       r   Úassert_not_pdz TestLinalgCholesky.assert_not_pdI  s,   € Ø0ˆØ×Ò˜%  s­B¬IÔ,AÑBÔBÐBÐBÐBr    c                 óâ  ‡ ‡— d} t          d¬¦  «        t          ¦  «        Šˆˆ fd„}t          ‰ j        d¦  «        D ]'\  }}‰                      |||¦  «        } ||¦  «         Œ( |t          j        d¦  «        ¦  «         d}‰                      ‰t          j        dt
          j	        ¬	¦  «        f¦  «         ‰  
                    |‰t          j        d
t
          j        ¬	¦  «        f¦  «         ‰                      |‰t          j        dt
          j	        ¬	¦  «        f¦  «         ‰                      ‰t          j        dt
          j	        ¬	¦  «                             dd¦  «        f¦  «         dS )z)
        Test np.linalg.cholesky
        rw  Tr‘   c                 ó,  •— t          | ¦  «        } ‰| ¦  «        }d}‰                     |d¦  «         	 t          j                             ||d¬¦  «         n# t
          $ r d}Y nw xY w|rpt          j        |t          j        |j        ¦  «        ¦  «        }dt          j	        | j
        ¦  «        j        z  }t          j                             | |||¬¦  «         ‰                     ¦   «         5   ‰| ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NFri   rw  r¥  TrÈ   r’  )rÝ   rl  r   r{  r§  rœ  r   Úconjr¥   ry  r=   rz  r|  r`   )r   rd   re   r©  rª  rz  rb   r2   s         €€r   r«  z6TestLinalgCholesky.test_linalg_cholesky.<locals>.checkU  s‚  ø€ Ý& qÑ)Ô)ˆHØ�%˜‘(”(ˆCØ!&Ðà×%Ò% c¨3Ñ/Ô/Ð/ð*Ý”
×9Ò9¸#¸xØ?Að :ñ Cô Cð Cð Cøå!ð *ð *ð *à%)Ð"Ð"Ð"ð*øøøð
 "ð Ý”f˜S¥"¤'¨#¬%¡.¤.Ñ1Ô1�Ø¥¤¨!¬'Ñ!2Ô!2Ô!=Ñ=�
Ý”
×*Ò*ØØØ#Ø#ð	 +ñ ô ð ð ×%Ò%Ñ'Ô'ð ð Ø��a‘”�ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s#   µ"A ÁA'Á&A'Ã0D	Ä	DÄDr�  r¬  rÜ   r¢   rh   r­  r´   r£   N)r   rÝ   r   r”   rD   r   ro   r[  r®  r•   r`  r�  rg  rÊ  rB   )r2   r<   r«  r=   rk   r   Úrnrb   s   `      @r   Útest_linalg_choleskyz'TestLinalgCholesky.test_linalg_choleskyM  s—  øø€ ð
 ˆØ"•˜TÐ"Ñ"Ô"¥?Ñ3Ô3ˆð	ð 	ð 	ð 	ð 	ð 	õ< $ D¤K°Ñ6Ô6ð 	ð 	‰LˆE�5Ø×"Ò" 1 e¨UÑ3Ô3ˆAØˆE�!‰HŒHˆHˆHð 	ˆ�bŒh�vÑÔÑÔÐàˆà×Ò˜u¥r¤w¨v½R¼ZÐ'HÑ'HÔ'HÐ&JÑKÔKÐKð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×$Ò$ R¨Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÐ%Eñ	Gô 	Gð 	Gð 	×Ò˜5ÝœG A­R¬ZÐ8Ñ8Ô8×@Ò@ÀÀAÑFÔFÐHñ	Jô 	Jð 	Jð 	Jð 	Jr    N)rÊ   rË   rÌ   rÍ   rD   rÊ  r   rÏ  r   r    r   rÃ  rÃ  8  s_   € € € € € ðð ð
ð 
ð 
ðCð Cð Cð ð:Jð :Jñ „\ð:Jð :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dS )ÚTestLinalgEigenSystemsz*
    Tests for np.linalg.eig/eigvals.
    c                 ó´  — |                       ||¦  «        }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Æ  rC  rD  rw   rE  )r2   rC   r=   rk   ÚvrL  rR  s          r   rD   z$TestLinalgEigenSystems.sample_matrix�  s³   € à×Ò˜q %Ñ(Ô(ˆÝŒG�A‰JŒJˆÝŒj�œ ¤¨¤
¨A¬G°A¬J¸Ñ:Ô:Ñ;Ô;ˆØ�1�2�2”ˆˆ#‰ÝŒj�œ ¤¨¤
¨A¬G°A¬J¸Ñ;Ô;Ñ<Ô<ˆØ�3�B�3”ˆˆ#‰ÝŒH�Q˜e¨5Ð1Ñ1Ô1ˆØˆr    c                 ó>   — |dz   }|                       |||¦  «         d S )Nz+() argument must not cause a domain change.)rV  r^  s        r   Úassert_no_domain_changez.TestLinalgEigenSystems.assert_no_domain_change›  s+   € ØÐBÑBˆØ×Ò˜%  sÑ+Ô+Ð+Ð+Ð+r    c                 ó   ‡ ‡‡‡— ˆˆˆˆ fd„}|S )Nc                  ó¶  •—  ‰j         | Ž } ‰| Ž }| d         }‰                     t          |¦  «        t          |¦  «        ¦  «         d}t          |t          ¦  «        r&d}‰                     t          |¦  «        ‰¦  «         n‰                     |j        ‰¦  «         ‰                     |d¦  «         d}t          t          |¦  «        ¦  «        D ]C}	 t          j	         
                    ||         ||         d¬¦  «         Œ2# t          $ r d}Y Œ@w xY w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        ||¬¦  «         t          j        |	¦  «        r-t          j	                             |j        |j        ||¬¦  «         nGt          j	                             t          j        |¦  «        t          j        |¦  «        ||¬¦  «         ‰                     ¦   «         5   ‰| Ž  d d d ¦  «         d S # 1 swxY w Y   d S )Nr   FTrl   rw  r¥  rÈ   r“   Úhr   r’  )rÁ   rT   rN   r?  rk  Úndimrl  rq   r   r{  r§  rœ  ry  r=   rz  rC  rD  rw   rÍ  ÚrealrÆ  Údiag_indicesr   r|  ÚiscomplexobjÚimagÚsortr`   )rc   rd   re   r   Úres_is_tupler©  r°   rz  r[   rÓ  ÚidxlÚidxuÚlhsÚrhsrb   Úexpected_res_lenr_  r2   s                 €€€€r   r«  z3TestLinalgEigenSystems._check_worker.<locals>.check¡  sz  ø€ Ø$�u”} dÐ+ˆHØ�%˜�,ˆCØ�Q”ˆAà×Ò�S ™]œ]­C°©H¬HÑ5Ô5Ð5à ˆLÝ˜#�uÑ%Ô%ð =Ø#�Ø× Ò ¥ S¡¤Ð+;Ñ<Ô<Ð<Ð<à× Ò  ¤Ð+;Ñ<Ô<Ð<ð ×%Ò% c¨3Ñ/Ô/Ð/à!&Ðå�3˜x™=œ=Ñ)Ô)ð .ð .�ð.Ý”J×=Ò=Ø˜Aœ ¨¤°"ð >ñ 6ô 6ð 6ð 6øå%ð .ð .ð .à)-Ð&Ð&Ð&ð.øøøð �RœX a¤gÑ.Ô.Ô9Ñ9ˆJØ!ñ 1Øñ 0Ø‘D�A�qð ˜B”x 3’�Ý!œz­"¬&°´¸´¸Q¼WÀQ¼ZÈÑ*LÔ*LÑMÔM˜Ý!œz­"¬&°´¸´¸Q¼WÀQ¼ZÈÑ*KÔ*KÑLÔL˜Ø˜˜t˜˜õ #%¤'¨!¨D¬'Ñ"2Ô"2˜˜$™õ :<¼ÅÄÈÁÄÑ9LÔ9L˜�"œ/¨!¬'°!¬*Ñ5Ô5Ñ6åœ&  A™,œ,�CÝœ& ¥B¤G¨A¡J¤JÑ/Ô/�Cå”J×.Ò.ØœØœØ'Ø'ð	 /ñ ô ð õ ” qÑ)Ô)ð Ýœ
×2Ò2ØœHØœHØ!+Ø!+ð	 3ñ ô ð øõ ”J×.Ò.Ýœ Ñ)Ô)Ýœ ™œØ'Ø'ð	 /ñ ô ð ð ×%Ò%Ñ'Ô'ð ð Ø��t��ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   Ã.DÄDÄDÌ;MÍMÍMr   )r2   rb   r_  rä  Úcheck_for_domain_changer«  s   ````  r   Ú_check_workerz$TestLinalgEigenSystems._check_workerŸ  s>   øøøø€ ð[	ð [	ð [	ð [	ð [	ð [	ð [	ð [	ðx ˆr    Nc           
      ó`  — d} t          d¬¦  «        |¦  «        }|                      ||||¦  «        }t          | j        d¦  «        D ]'\  }}	|                      |||	¦  «        }
 ||
¦  «         Œ(t
          j        t
          j        fD ]ó} |t          j        d|¬¦  «        ¦  «         |  	                    |t          j
        d|¬¦  «        f¦  «         |                      ||t          j
        dt
          j        ¬¦  «        f¦  «         |                      ||t          j
        d|¬¦  «        f¦  «         |                      |t          j        d	d
gt
          j        t
          j        gg|¬¦  «        f¦  «         Œô|�r,t          j        ddgddgg¦  «        } ||                     t
          j        ¦  «        ¦  «          ||¦  «        \  }}|                      t          j        |j        ¦  «        ¦  «         t
          j        t
          j        fD �]˜}t0          dk     r,|                      |||                     |¦  «        f¦  «         Œ: ||                     |¦  «        ¦  «         t          j        d	d
gd
d	gg|¬¦  «        t          j        d	dgd	d	gg|¬¦  «        t          j        g d¢g d¢g d¢g d¢g|¬¦  «        fD ]ä} ||¦  «          ||¦  «        } ||¦  «        }|dk    rmt5          d¦  «        D ]\}t
          j                             t          j        ||         j        ¦  «        t          j        ||         j        ¦  «        ¦  «         Œ]Œ–t
          j                             t          j        |j        ¦  «        t          j        |j        ¦  «        ¦  «         Œå�Œ˜dS dS )z$
        Test np.linalg.eig
        rw  Tr‘   r�  r¬  rh   r¢   r­  r0  ç       @r   rv  r£   )r£   rÈ   ç      ð¿)r0  rè  ç        rê  )rè  r0  rê  rê  )rê  rê  r0  ré  )rê  rê  r0  r0  N)r   ræ  r   r”   rD   r   r–   rÏ   ro   r[  r®  r`  r�  rg  ri  rE  ÚinfÚnanr:   rÎ   rn  ÚanyrÝ  r•   r   rÕ  rq   r{  Úassert_array_equalÚsignbit)r2   r_  Úfuncrä  rå  r<   rb   r«  r=   rk   r   Útyrù   ÚlrN  Úazrd   re   r°   s                      r   Úchecker_for_linalg_eigz-TestLinalgEigenSystems.checker_for_linalg_eigÿ  s  € ð
 ˆØ"•˜TÐ"Ñ"Ô" 4Ñ(Ô(ˆØ×"Ò" 5¨$Ð0@Ø#:ñ<ô <ˆõ
 $ D¤K°Ñ6Ô6ð 	ð 	‰LˆE�5Ø×"Ò" 1 e¨UÑ3Ô3ˆAØˆE�!‰HŒHˆHˆHõ ”:�rœ|Ð,ð 	=ð 	=ˆBð ˆE•"”(˜6¨Ð,Ñ,Ô,Ñ-Ô-Ð-ð ×"Ò" 5­2¬7°6ÀÐ+DÑ+DÔ+DÐ*FÑGÔGÐGð ×#Ò# D¨%Ý%'¤W¨V½2¼8Ð%DÑ%DÔ%DÐ$FñHô Hð Hð ×(Ò(¨¨uµr´w¸rÈÐ7LÑ7LÔ7LÐ6NÑOÔOÐOð ×%Ò% eÝ')¤x°"°b°½b¼fÅbÄfÐ=MÐ0NØ68ð(:ñ (:ô (:ð '<ñ=ô =ð =ð =ð #ñ 7	;õ ”˜1˜b˜' A q 6Ð*Ñ+Ô+ˆAØˆE�!—(’(�2œ=Ñ)Ô)Ñ*Ô*Ð*à�4˜‘7”7‰DˆAˆqØ�OŠO�BœF 1¤6™NœNÑ+Ô+Ð+õ ”z¥2¤:Ð.ð !;ñ !;�Ý  6Ò)Ð)ð ×0Ò0°°u¸q¿xºxÈ¹|¼|¸oÑNÔNÐNÐNð
 �E˜!Ÿ(š( 2™,œ,Ñ'Ô'Ð'õ œ 2 r (¨R°¨HÐ!5¸RÐ@Ñ@Ô@Ýœ 2 s )¨b°"¨XÐ!6¸bÐAÑAÔAÝœÐ"2Ð"2Ð"2Ø"2Ð"2Ð"2Ø"3Ð"3Ð"3Ø"2Ð"2Ð"2ð"4ð <>ð?ñ ?ô ?ðð ;ð ;˜ð ˜˜b™	œ	˜	Ø#' 4¨¡8¤8˜Ø#˜e B™iœi˜Ø+¨qÒ0Ð0Ý%*¨1¡X¤Xð Bð B Ý "¤
× =Ò =Ý$&¤J¨s°1¬v¬{Ñ$;Ô$;Ý$&¤J¨x¸¬{Ô/?Ñ$@Ô$@ñ!Bô !Bð !Bð !BðBõ
 œJ×9Ò9Ý "¤
¨3¬8Ñ 4Ô 4Ý "¤
¨8¬=Ñ 9Ô 9ñ;ô ;ð ;ð ;ñ#;ðI7	;ð 7	;ð,!;ð !;r    c                 ó@   — |                       dt          dd¦  «         d S )Nrà   r£   T)rô  rá   r™   s    r   Útest_linalg_eigz&TestLinalgEigenSystems.test_linalg_eig]  s"   € à×#Ò# E­:°q¸$Ñ?Ô?Ð?Ð?Ð?r    c                 ó@   — |                       dt          dd¦  «         d S )Nrã   r   T)rô  rä   r™   s    r   Útest_linalg_eigvalsz*TestLinalgEigenSystems.test_linalg_eigvalsa  s"   € à×#Ò# I­~¸qÀ$ÑGÔGÐGÐGÐGr    c                 ó@   — |                       dt          dd¦  «         d S )Nrç   r£   F)rô  rè   r™   s    r   Útest_linalg_eighz'TestLinalgEigenSystems.test_linalg_eighe  s"   € à×#Ò# F­K¸¸EÑBÔBÐBÐBÐBr    c                 ó@   — |                       dt          dd¦  «         d S )Nrë   r   F)rô  rì   r™   s    r   Útest_linalg_eigvalshz+TestLinalgEigenSystems.test_linalg_eigvalshi  s"   € à×#Ò# JµÀÀEÑJÔJÐJÐJÐJr    c           
      óš  ‡— dD �]E}|\  }}}t          t          j        |¦  «        Št          d¬¦  «        ˆfd„¦   «         }|                      ||||¦  «        }t          j        t          j        fD ]Ö}|                      ‰|¬¦  «        5  t          j        g d¢g d¢g d¢g d	¢gd
|¬¦  «        }t          j	        |¦  «        }	| 
                    |d¦  «        }
t          j                             ||	¦  «          ||d¦  «        }t          j                             ||	¦  «          ||d¦  «         d d d ¦  «         n# 1 swxY w Y   Œ×�ŒGd S )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>.funcz  s-   ø€ àð "à˜!˜A˜#˜q˜q˜q˜&œ	�AØ�t˜A‘w”w�r    )rÿ  r=   )r“  r   r   r   )r   rµ  r   r   )r   r   r·  r   )r   r   r   rŠ  rl   )rk   r=   F)Úgetattrr   rÖ   r   ræ  r•   rÎ   ÚsubTestrE  r   rÁ   r{  r|  )r2   ÚcrC   ÚnoutÚdomain_changerð  r«  r=   r»  rÀ  rd   re   rÿ  s               @r   rÁ  z-TestLinalgEigenSystems.test_no_input_mutationm  s¿  ø€ ð*ð $	$ñ $	$ˆAð
 &'Ñ"ˆAˆt�]å�2œ9 aÑ(Ô(ˆDå˜$ÐÑÔðð ð ð ñ  Ôðð ×&Ò& t¨Q°°mÑDÔDˆEåœ*¥b¤mÐ4ð $ð $�Ø—\’\ t°5�\Ñ9Ô9ð $ð $õ œ . . .Ø ,  Ø ,  Ø ,  ð""ð *-°Eð	;ñ ;ô ;�Aõ  œW Q™ZœZ�Fà#Ÿ|š|¨A¨uÑ5Ô5�HÝ”J×.Ò.¨q°&Ñ9Ô9Ð9à˜$˜q %™.œ.�CÝ”J×.Ò.¨q°&Ñ9Ô9Ð9à�E˜!˜U‘O”O�Oð#$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $øñ$ð%$	$ð $	$s   ÂB&D=Ä=EÅEr   )rÊ   rË   rÌ   rÍ   rD   rÕ  ræ  rô  r   rö  rø  rú  rü  rÁ  r   r    r   rÑ  rÑ  ‹  s  € € € € € ðð ð	ð 	ð 	ð,ð ,ð ,ð^ð ^ð ^ðB IMð\;ð \;ð \;ð \;ð| ð@ð @ñ „\ð@ð ðHð Hñ „\ðHð ðCð Cñ „\ðCð ðKð Kñ „\ðKð ð'$ð '$ñ „\ð'$ð '$ð '$r    rÑ  c                   óD   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestLinalgSvdz"
    Tests for np.linalg.svd.
    c                 ó  — |\  }}}t          t          |¦  «        ¦  «        D ].}|                      ||         j        ||         j        ¦  «         Œ/t	          j        |j        d         |j        d         f¦  «        }t	          j        ||¦  «         t	          j        t	          j        ||¦  «        |¦  «        }	t	          j        |j	        ¦  «        j
        }
t          j                             ||	d|
z  d|
z  ¬¦  «         d S )Nr   r   rw  rx  r’  )rq   rN   rT   rw   r   rB  Úfill_diagonalr   ry  r=   rz  r{  r|  )r2   r   re   rd   ÚurP  Úvtr°   Úsrª  rz  s              r   Úcheck_reconstructionz"TestLinalgSvd.check_reconstruction£  sô   € Ø‰	ˆˆ2ˆrõ •s˜8‘}”}Ñ%Ô%ð 	>ð 	>ˆAØ×Ò˜S œVœ\¨8°A¬;Ô+<Ñ=Ô=Ð=Ð=õ ŒH�a”g˜a”j "¤(¨1¤+Ð.Ñ/Ô/ˆÝ
Ô˜˜BÑÔÐåŒf•R”V˜A˜q‘\”\ 2Ñ&Ô&ˆÝ”X˜aœgÑ&Ô&Ô1ˆ
Ý
Œ
×"Ò"ØØØ�j‘Ø�zÑ!ð	 	#ñ 	
ô 	
ð 	
ð 	
ð 	
r    c                 óÀ  ‡ ‡—  t          d¬¦  «        t          ¦  «        Šˆˆ fd„}g d¢}d}t          |‰ j        |d¦  «        D ]+\  }}}}‰                      |||¦  «        } |||¬¦  «         Œ,d}	‰                      |	‰t          j        d	t          j        ¬
¦  «        f¦  «         ‰  	                    |	‰t          j        dt          j
        ¬
¦  «        f¦  «         ‰                      ‰t          j        ddgt          j        t          j        ggt          j
        ¬
¦  «        f¦  «         dD ].}
t          j        |
¦  «        df}‰                      ‰|¦  «         Œ/dS )z$
        Test np.linalg.svd
        Tr‘   c                 óh  •— t          | fi |¤Ž} ‰| fi |¤Ž}‰                     t          |¦  «        t          |¦  «        ¦  «         ‰                     t          |¦  «        d¦  «         ‰                     |d¦  «         d}t	          t          |¦  «        ¦  «        D ]C}	 t
          j                             ||         ||         d¬¦  «         Œ2# t          $ r d}Y Œ@w xY w|r‰ 	                    | ||¦  «         ‰ 
                    ¦   «         5   ‰| fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nr�   rl   Frw  r¥  T)rñ   rT   rN   rl  rq   r   r{  r§  rœ  r  r`   )r   r¨  rd   re   r©  r°   rb   r2   s         €€r   r«  z,TestLinalgSvd.test_linalg_svd.<locals>.check¾  s·  ø€ Ý! !Ð.Ð. vÐ.Ð.ˆHØ�%˜Ð$Ð$˜VÐ$Ð$ˆCà×Ò�S ™]œ]­C°©H¬HÑ5Ô5Ð5à×Ò�S ™XœX qÑ)Ô)Ð)à×%Ò% c¨3Ñ/Ô/Ð/à!&Ðå�3˜x™=œ=Ñ)Ô)ð .ð .�ð.Ý”J×=Ò=Ø˜Aœ ¨¤°"ð >ñ 6ô 6ð 6ð 6øå%ð .ð .ð .à)-Ð&Ð&Ð&ð.øøøð "ð <Ø×)Ò)¨!¨S°(Ñ;Ô;Ð;ð ×%Ò%Ñ'Ô'ð #ð #Ø��aÐ"Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s$   Â".CÃC ÃC Ä
D'Ä'D+Ä.D+)r‰  )rŠ  rÈ   )rÈ   rŠ  rŽ  r�  )TFr�  )rð   rï   r­  rh   rw  r0  rè  ©©r   r   ©r   r   r¬  N)r   rñ   r   r”   rS  r`  r   r®  r�  rg  r•   ri  rE  rë  rì  ro   rƒ  )r2   r«  rž  rð   rm   r=   Úfmatrk   r   rÎ  Úszrc   rb   s   `           @r   Útest_linalg_svdzTestLinalgSvd.test_linalg_svd·  sº  øø€ ð
 #•˜TÐ"Ñ"Ô"¥:Ñ.Ô.ˆð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð< 9Ð8Ð8ˆð &ˆõ ˜˜tœ{¨M¸4Ñ@Ô@ð	)ð 	)Ñ$ˆD�%˜˜uð ×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�! 4Ð(Ñ(Ô(Ð(Ð(àˆð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×$Ò$ R¨Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÐ%Eñ	Gô 	Gð 	Gð 	×!Ò! %Ý#%¤8¨b°"¨Z½"¼&Å"Ä&Ð9IÐ,JÝ24´*ð$>ñ $>ô $>ð #@ñ	Aô 	Að 	Að +ð 	4ð 	4ˆBÝ”H˜R‘L”L $Ð'ˆDØ×&Ò& u¨dÑ3Ô3Ð3Ð3ð	4ð 	4r    c                 ó&  — t          j        g d¢g d¢g d¢g d¢gd¬¦  «        }t          j        |¦  «        }t          d¬¦  «        d	„ ¦   «         }|                     |d
¦  «        }t           j                             ||¦  «          ||d
¦  «        }t           j                             ||¦  «         	 t          ||¦  «        D ]%\  }}t           j                             ||¦  «         Œ&d S # t          $ r |  	                    |||¦  «         Y d S w xY w)Nr±  r²  r´  r¶  rl   rj   Tr‘   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S r¹  rî   rº  s     r   rð  z2TestLinalgSvd.test_no_input_mutation.<locals>.func  r¾  r    F)
r   rE  r   r   rÁ   r{  r|  Úziprœ  r  ©r2   r»  rÀ  rð  rd   re   Úe_aÚg_as           r   rÁ  z$TestLinalgSvd.test_no_input_mutationû  sH  € åŒH�n�n�nØ$�n�nØ$�n�nØ$�n�nð&ð .1ð2ñ 2ô 2ˆõ
 ”˜‘”ˆå	�dÐ	Ñ	Ô	ð	$ð 	$ñ 
Ô	ð	$ð —<’<  5Ñ)Ô)ˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-àˆd�1�e‰nŒnˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-ð	8Ý ¨#Ñ.Ô.ð 5ð 5‘��SÝ”
×*Ò*¨3°Ñ4Ô4Ð4Ð4ð5ð 5øåð 	8ð 	8ð 	8Ø×%Ò% a¨¨hÑ7Ô7Ð7Ð7Ð7Ð7ð	8øøøs   Â36C+ Ã+!DÄDN)rÊ   rË   rÌ   rÍ   r  r   r  rÁ  r   r    r   r  r  ˜  sg   € € € € € ðð ð
ð 
ð 
ð( ðA4ð A4ñ „\ðA4ðF ð8ð 8ñ „\ð8ð 8ð 8r    r  c                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestLinalgQrz!
    Tests for np.linalg.qr.
    c                 ó®  ‡ ‡	—  t          d¬¦  «        t          ¦  «        Š	ˆ	ˆ fd„}g d¢}t          |‰ j        d¦  «        D ](\  }}}‰                      |||¦  «        } ||¦  «         Œ)d}‰                      |‰	t          j        dt          j        ¬¦  «        f¦  «         ‰  	                    |‰	t          j        d	t          j
        ¬¦  «        f¦  «         ‰                      ‰	t          j        d
dgt          j        t          j        ggt          j
        ¬¦  «        f¦  «         dD ]+}‰                      ‰	t          j        |¦  «        f¦  «         Œ,dS )z#
        Test np.linalg.qr
        Tr‘   c                 ó  •— t          | fi |¤Ž} ‰
| fi |¤Ž}‰                     t          |¦  «        t          |¦  «        ¦  «         ‰                     t          |¦  «        d¦  «         ‰                     |d¦  «         d}t	          t          |¦  «        ¦  «        D ]C}	 t
          j                             ||         ||         d¬¦  «         Œ2# t          $ r d}Y Œ@w xY w|rë|\  }}t	          t          |¦  «        ¦  «        D ].}‰                     ||         j	        ||         j	        ¦  «         Œ/t          j
        ||¦  «        }t          j        | j        ¦  «        j        }	t
          j                             | |d|	z  d|	z  ¬¦  «         ‰                     t          j
        t          j        |j        ¦  «        |¦  «        ¦  «         ‰                     ¦   «         5   ‰
| fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )	Nr£   rl   Frw  r¥  Trx  r’  )rõ   rT   rN   rl  rq   r   r{  r§  rœ  rw   r   ry  r=   rz  r|  r  Ú	conjugater¥   r`   )r   r¨  rd   re   r©  r°   rÇ  Úrrª  rz  rb   r2   s             €€r   r«  z*TestLinalgQr.test_linalg_qr.<locals>.check$  sy  ø€ Ý  Ð-Ð- fÐ-Ð-ˆHØ�%˜Ð$Ð$˜VÐ$Ð$ˆCð ×Ò�S ™]œ]­C°©H¬HÑ5Ô5Ð5à×Ò�S ™XœX qÑ)Ô)Ð)à×%Ò% c¨3Ñ/Ô/Ð/à!&Ðå�3˜x™=œ=Ñ)Ô)ð .ð .�ð.Ý”J×=Ò=Ø˜Aœ ¨¤°"ð >ñ 6ô 6ð 6ð 6øå%ð .ð .ð .à)-Ð&Ð&Ð&ð.øøøð "ð MØ‘��1õ �s 8™}œ}Ñ-Ô-ð Fð F�AØ×$Ò$ S¨¤V¤\°8¸A´;Ô3DÑEÔEÐEÐEõ ”f˜Q ‘l”l�ÝœX a¤gÑ.Ô.Ô9�
Ý”
×*Ò*ØØØ˜j™Ø˜zÑ)ð	 +ñ ô ð ð ×.Ò.­r¬vµb´lÀ1Ä3Ñ6GÔ6GÈÑ/KÔ/KÑLÔLÐLð ×%Ò%Ñ'Ô'ð #ð #Ø��aÐ"Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s$   Â".CÃC ÃC Ç$
G;Ç;G?ÈG?rˆ  r�  rô   r­  rh   rw  r0  rè  r  N)r   rõ   r   r”   rS  r`  r   r®  r�  rg  r•   ri  rE  rë  rì  rƒ  ro   )
r2   r«  rž  rm   r=   rk   r   rÎ  r  rb   s
   `        @r   Útest_linalg_qrzTestLinalgQr.test_linalg_qr  s�  øø€ ð
 #•˜TÐ"Ñ"Ô"¥9Ñ-Ô-ˆð3	#ð 3	#ð 3	#ð 3	#ð 3	#ð 3	#ðn ;Ð:Ð:ˆõ ˜˜tœ{¨DÑ1Ô1ð	ð 	ÑˆD�%˜à×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!‰HŒHˆHˆHàˆð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×$Ò$ R¨Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÐ%Eñ	Gô 	Gð 	Gð 	×!Ò! %Ý#%¤8¨b°"¨Z½"¼&Å"Ä&Ð9IÐ,JÝ24´*ð$>ñ $>ô $>ð #@ñ	Aô 	Að 	Að
 +ð 	?ð 	?ˆBØ×&Ò& u­r¬x¸©|¬|¨oÑ>Ô>Ð>Ð>ð	?ð 	?r    c                 óÔ  — t          j        g d¢g d¢g d¢g d¢gd¬¦  «        }t          j        |¦  «        }t          d¬¦  «        d	„ ¦   «         }|                     |d
¦  «        }t           j                             ||¦  «          ||d
¦  «        }t           j                             ||¦  «         t          ||¦  «        D ]%\  }}t           j                             ||¦  «         Œ&d S )Nr±  r²  r´  r¶  rl   rj   Tr‘   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S r¹  ró   rº  s     r   rð  z1TestLinalgQr.test_no_input_mutation.<locals>.func  s1   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9—<’< ‘?”?Ð"r    F)r   rE  r   r   rÁ   r{  r|  r  r  s           r   rÁ  z#TestLinalgQr.test_no_input_mutationv  s  € åŒH�n�n�nØ$�n�nØ$�n�nØ$�n�nð&ð .1ð2ñ 2ô 2ˆõ
 ”˜‘”ˆå	�dÐ	Ñ	Ô	ð	#ð 	#ñ 
Ô	ð	#ð —<’<  5Ñ)Ô)ˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-àˆd�1�e‰nŒnˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-å˜H cÑ*Ô*ð 	1ð 	1‰HˆC�ÝŒJ×&Ò& s¨CÑ0Ô0Ð0Ð0ð	1ð 	1r    N)rÊ   rË   rÌ   rÍ   r   r!  rÁ  r   r    r   r  r    sX   € € € € € ðð ð ðV?ð V?ñ „\ðV?ðp ð1ð 1ñ „\ð1ð 1ð 1r    r  c                   ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )ÚTestLinalgSystemszu
    Base class for testing "system" solvers from np.linalg.
    Namely np.linalg.solve() and np.linalg.lstsq().
    Tc                 óf   — |rdnd}|›d|›d�}|                       |||t          j        ¦  «         d S )Nrb  r   rc  z%() only supported on 1 and 2-D arraysr]  rd  s          r   Úassert_wrong_dimensions_1Dz,TestLinalgSystems.assert_wrong_dimensions_1D—  sE   € Ø )Ð3��¨tˆØ>D¸f¸fÀdÀdÀdÐKˆØ×Ò˜%  s­FÔ,>Ñ?Ô?Ð?Ð?Ð?r    c                 óX   — d}|                       |||t          j        j        ¦  «         d S )Nz<Incompatible array sizes, system is not dimensionally valid.rX  rZ  s       r   Úassert_dimensionally_invalidz.TestLinalgSystems.assert_dimensionally_invalid�  s,   € ØLˆØ×Ò˜%  s­B¬IÔ,AÑBÔBÐBÐBÐBr    c                 óT   — d|z  }|                       |||t          j        ¦  «         d S )NzAnp.linalg.%s() only supports inputs that have homogeneous dtypes.r]  r^  s        r   Úassert_homogeneous_dtypesz+TestLinalgSystems.assert_homogeneous_dtypes¢  s0   € ØQÐTXÑXˆØ×Ò˜%  s­FÔ,>Ñ?Ô?Ð?Ð?Ð?r    Nr„  )rÊ   rË   rÌ   rÍ   r'  r)  r+  r   r    r   r%  r%  �  s\   € € € € € ðð ð@ð @ð @ð @ðCð Cð Cð
@ð @ð @ð @ð @r    r%  c                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )Ú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	          ‰¦  «        }‰                      |||¦  «        }	 ||	|¦  «         |\  }
}t          |
|¦  «        }|
d	k    ra|d	k    r[|d	z
  }‰                      ||||¬
¦  «        }	 ||	|¦  «         ‰                      ||||¬¦  «        }	d|z  }||z  } ||	||¬¦  «         ŒÀddgddgddgddgg}|D ]C\  }	}t          j        |	¦  «        t          j        |¦  «        f}‰  	                    ‰|¦  «         ŒDt          j
        ddgddggt          j        ¬¦  «        }‰||ff d}t          j
        d	dgddggt          j        ¬¦  «        }‰                      |‰||f¦  «         ‰                      |‰||f¦  «         t          j
        d	dgddggt          j        ¬¦  «        }‰                      |‰||f¦  «         ‰                      |‰||f¦  «         t          j
        d	dgt          j        ¬¦  «        }‰                      |‰||f¦  «         t          j
        ddgt          j        t          j        ggt          j        ¬¦  «        }‰                      ‰||f¦  «         ‰                      ‰||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        ¬¦  «        }‰                      |‰||f¦  «         t          j
        dgt          j        ¬¦  «        }t          j
        dgdgdggt          j        ¬¦  «        }‰                      ‰||f¦  «         ‰                      ‰||f¦  «         dS ) z&
        Test np.linalg.lstsq
        Tr‘   c           
      ó6  •— t          | |fi |¤Ž} ‰| |fi |¤Ž}‰                     t          |¦  «        t          |¦  «        ¦  «         ‰                     t          |¦  «        d¦  «         ‰                     |d¦  «         d}	 ‰                     |d         |d         ¦  «         t	          t          |¦  «        ¦  «        D ]C}	 t
          j                             ||         ||         d¬¦  «         Œ2# t          $ r d}Y Œ@w xY wn# t          $ r d}Y nw xY w|�rD|\  }}}	}
g d¢}	 ‰                     |	|d         ¦  «         |D ]N}t          ||         t
          j
        ¦  «        r,‰                     ||         j        ||         j        ¦  «         ŒOn?# t          $ r2 ‰                     t          |	|d         z
  ¦  «        dk     ¦  «         Y nw xY wt          j        | j        ¦  «        j        }	 t          j        | |¦  «        }t
          j                             ||d|z  d|z  ¬	¦  «         �n,# t          $ �r |D �]}	 t
          j                             ||         ||         d
|z  d
|z  ¬	¦  «         nK# t          $ r> t
          j                             | ¦  «        }‰                     d|z  d|z  ¦  «         Y nw xY wt
          j                             |t          j        | |d         ¦  «        z
  ¦  «        }t
          j                             |t          j        | |¦  «        z
  ¦  «        }t
          j                             ||d¬¦  «         �ŒY nw xY w‰                     ¦   «         5   ‰| |fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nr´   ri   Fr£   rw  r¥  T)r   r   r�   r’  rx  r0  r   r“  ©r}  )rü   rT   rN   rl  rq   r   r{  r§  rœ  r?  Úndarrayrw   rn  Úabsry  r=   rz  r   r|  rÖ   r  ÚassertGreaterr  r`   )rù   rú   r¨  rd   re   r©  r°   rÅ   ÚresrF  r  Úout_array_idxrz  rª  r  Úres_expectedÚres_gotrb   r2   s                    €€r   r«  z0TestLinalgLstsq.test_linalg_lstsq.<locals>.check¼  sŽ  ø€ Ý# A qÐ3Ð3¨FÐ3Ð3ˆHØ�%˜˜1Ð'Ð' Ð'Ð'ˆCð ×Ò�S ™]œ]­C°©H¬HÑ5Ô5Ð5à×Ò�S ™XœX qÑ)Ô)Ð)à×%Ò% c¨3Ñ/Ô/Ð/à!&Ðð
*Ø× Ò   Q¤¨°!¬Ñ5Ô5Ð5å�s 8™}œ}Ñ-Ô-ð 2ð 2�Að2Ýœ
×AÒAØ œF H¨Q¤K°bð Bñ :ô :ð :ð :øå)ð 2ð 2ð 2à-1Ð*Ð*Ð*ð2øøøð	2øõ "ð *ð *ð *Ø%)Ð"Ð"Ð"ð*øøøð "ñ 7=Ø"%‘��3˜˜að !* 	 	�ð	Aà×$Ò$ T¨8°A¬;Ñ7Ô7Ð7à*ð Nð N˜Ý% h¨q¤kµ2´:Ñ>Ô>ð NØ ×,Ò,¨S°¬V¬\¸8ÀA¼;Ô;LÑMÔMÐMøðNøõ &ð Að Að Aà—O’O¥C¨¨x¸¬{Ñ(:Ñ$;Ô$;¸aÒ$?Ñ@Ô@Ð@Ð@Ð@ðAøøøõ
  œX a¤gÑ.Ô.Ô9�
ð$=õ œ&  A™,œ,�CÝ”J×.Ò.ØØØ *™_Ø *™_ð	 /ñ ô ð ñ øõ &ð =ñ =ð =ð +ð =ñ =˜ð
JÝœJ×6Ò6Ø (¨¤Ø # A¤Ø%(¨:Ñ%5Ø%(¨:Ñ%5ð	 7ñ ô ð ð øõ  .ð Jð Jð Jå "¤	§¢¨qÑ 1Ô 1˜AØ ×.Ò.¨r°A©v¸¸Z¹ÑIÔIÐIÐIÐIðJøøøõ (*¤y§~¢~Ø¥¤ q¨(°1¬+Ñ 6Ô 6Ñ6ñ(8ô (8˜å"$¤)§.¢.°µR´V¸A¸q±\´\Ñ1AÑ"BÔ"B˜õ œ
×2Ò2Ø(¨'¸ð 3ñ =ô =ð =ñ =ð+=ð =ð	=øøøð: ×%Ò%Ñ'Ô'ð &ð &Ø��a˜Ð%Ð%˜fÐ%Ð%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s”   ÂA D	 Ã.C6Ã5D	 Ã6DÄD	 ÄDÄD	 Ä	DÄDÄ*A-F Æ9GÇGÇ6>H6 È6MÉ5I=É<MÉ=AKËMËKËBMÍMÍ6NÎNÎNrˆ  rl   ri   r“  c                 ó  •— d}|D ]x}t          ‰	¦  «        }‰
                     | j        d         |f||¦  «        } ‰| |fi |¤Ž t          ‰	¦  «        }|d d …df                              |¬¦  «        } ‰| |fi |¤Ž Œyd S )N©r   é   r   rj   )ÚnextrS  rw   r   )rù   Údtr¨  Úb_sizesÚb_sizeÚb_orderrú   rz   r«  Úcycle_orderr2   s           €€€r   Úinner_test_loop_fnz=TestLinalgLstsq.test_linalg_lstsq.<locals>.inner_test_loop_fn+  s¼   ø€ àˆGà!ð (ð (�õ ˜{Ñ+Ô+�Ø×/Ò/Ø”W˜Q”Z Ð(¨"¨gñ7ô 7�à��a˜Ð%Ð%˜fÐ%Ð%Ð%õ ˜{Ñ+Ô+�Ø˜˜˜˜1˜”g—l’l¨�lÑ1Ô1�Ø��a˜Ð'Ð' Ð'Ð'Ð'Ð'ð(ð (r    r   r‘  r”  r0  ©rû   r  r™  r  ©r   r   ©r   rè  ç      @ç      @rh   rø   r£   r�   r´   rÈ   é   rŠ  r·  N)r   rü   r   r”   r;  rS  r>  r   ro   rƒ  rE  r•   r�  r`  r–   r+  rg  rë  rì  ri  r'  r)  )r2   rž  Úcycle_dtÚordersÚspecific_condrA  Úa_sizer<  Úa_orderrù   rC   r<   rI  r   rû   Úapprox_half_rank_rcondÚemptiesr   rc   ÚokrÎ  ÚbadÚoneDÚbad1DÚbad2Drb   r«  r@  s   `                        @@@r   Útest_linalg_lstsqz!TestLinalgLstsq.test_linalg_lstsqµ  s·  øøøø€ ð
 #•˜TÐ"Ñ"Ô"¥<Ñ0Ô0ˆðX	&ð X	&ð X	&ð X	&ð X	&ð X	&ðx ;Ð:Ð:ˆõ ˜œÑ%Ô%ˆà�s�ˆå˜F‘m”mˆð ˆð	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð$ ð #	Að #	AˆFå�h‘”ˆBÝ˜;Ñ'Ô'ˆGð ×+Ò+¨F°B¸Ñ@Ô@ˆAð Ð˜q "Ñ%Ô%Ð%à‰DˆAˆqÝ˜˜1‘I”IˆEð �AŠvˆv˜!˜qš&˜&ð ˜A‘I�Ø×/Ò/Ø˜B ¨að 0ñ 1ô 1�ð #Ð" 1 bÑ)Ô)Ð)ð ×/Ò/Ø˜B °=ð 0ñ Bô B�ð ˜]Ñ*�Ø).°©Ð&Ø"Ð" 1 bØ)?ðAñ Aô Að Aøð
 
�ˆØ	�ˆØ	�ˆØ	�Ðð	
ˆð ð 	4ð 	4‰DˆAˆqÝ”H˜Q‘K”K¥¤¨!¡¤Ð-ˆDØ×&Ò& u¨dÑ3Ô3Ð3Ð3õ ŒX˜˜B�x " b Ð*µ"´*Ð=Ñ=Ô=ˆð 	��Bˆxˆˆð ˆõ Œh˜˜A˜  A Ð'­r¬xÐ8Ñ8Ô8ˆØ×Ò  E¨B°¨9Ñ5Ô5Ð5Ø×Ò  E¨C°¨9Ñ5Ô5Ð5õ Œh˜˜A˜  A Ð'­r¬zÐ:Ñ:Ô:ˆØ×&Ò& r¨5°2°s°)Ñ<Ô<Ð<Ø×&Ò& r¨5°3¸°)Ñ<Ô<Ð<õ Œh˜˜1�v¥R¤ZÐ0Ñ0Ô0ˆØ×$Ò$ R¨°°b°	Ñ:Ô:Ð:õ Œh˜˜R˜
¥R¤V­R¬VÐ$4Ð5½R¼ZÐHÑHÔHˆØ×!Ò! %¨"¨c¨Ñ3Ô3Ð3Ø×!Ò! %¨#¨r¨Ñ3Ô3Ð3õ Œx˜˜R˜­¬
Ð3Ñ3Ô3ˆØ��DˆzÐÐÝŒh˜!˜Q˜ ! Q Ð(¨A¨q¨6°A°q°6Ð*:Ð;Å2Ä:ÐNÑNÔNˆØ×'Ò'¨¨E°B¸°9Ñ=Ô=Ð=õ ”˜"˜¥R¤ZÐ0Ñ0Ô0ˆÝ”˜2˜$   r dÐ+µ2´:Ð>Ñ>Ô>ˆØ×)Ò)¨%°"°e°Ñ=Ô=Ð=Ø×)Ò)¨%°"°e°Ñ=Ô=Ð=Ð=Ð=r    c           	      ó6  — 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                             ||¦  «         d S )N)r0  g)\�Âõ(@g®Gáz@)r0  gš™™™™™@rF  )r0  g      @gffffff@)r0  gffffffò?g�Âõ(\�@)r0  gáz®Gá@g)\�Âõ(
@)r0  g�Âõ(\�ö?gÍÌÌÌÌÌ@rl   rj   )r0  rè  rE  rF  ç      @g      @Tr‘   c                 ób   — |r| dd…d d …f         } t           j                             | |¦  «        S r¹  r÷   ©r»  Úyr¼  s      r   Úf2z*TestLinalgLstsq.test_issue3368.<locals>.f2¤  ó5   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9—?’? 1 aÑ(Ô(Ð(r    F)r   rE  r   r   r{  r|  )r2   r»  rÀ  rY  rZ  s        r   Útest_issue3368zTestLinalgLstsq.test_issue3368˜  sÓ   € åŒHÐ&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&ð)ð
 14ð5ñ 5ô 5ˆõ ”˜‘”ˆÝŒHÐ-Ð-Ð-Ñ.Ô.ˆå	�dÐ	Ñ	Ô	ð	)ð 	)ñ 
Ô	ð	)ð 	ˆˆ1ˆa�‰ŒˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-Ð-Ð-r    N)rÊ   rË   rÌ   rÍ   r   rT  r\  r   r    r   r-  r-  §  sX   € € € € € ðð ð ð`>ð `>ñ „\ð`>ðD ð.ð .ñ „\ð.ð .ð .r    r-  c                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestLinalgSolvez$
    Tests for np.linalg.solve.
    c                 ój  ‡ ‡—  t          d¬¦  «        t          ¦  «        Šˆˆ fd„}g d¢}t          |‰ j        d¦  «        D ]‘\  }}}‰                      |||¦  «        }d}t          |d¦  «        D ]a\  }}	‰                      |j        d         |f||	¦  «        }
 |||
¦  «         |
dd…df                              |	¬	¦  «        } |||¦  «         ŒbŒ’ ‰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        ¬¦  «        }‰                      |‰||f¦  «         ‰                      |‰||f¦  «         t          j	        ddgddggt          j        ¬¦  «        }‰                      |‰||f¦  «         ‰                      |‰||f¦  «         t          j	        ddgt          j
        ¬¦  «        }‰                      |‰||f¦  «         t          j	        ddgt          j        t          j        ggt          j
        ¬¦  «        }‰                      ‰||f¦  «         ‰                      ‰||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
        ¬¦  «        }‰                      |‰||f¦  «         t          j	        dgt          j
        ¬¦  «        }t          j	        dgdgdggt          j
        ¬¦  «        }‰                      ‰||f¦  «         ‰                      ‰||f¦  «         ‰                      dt          j
        dd¬¦  «        }‰                      ‰||f¦  «         dS )z&
        Test np.linalg.solve
        Tr‘   c                 ó>  •— t          | |fi |¤Ž} ‰| |fi |¤Ž}‰	                     |d¦  «         d}	 t          j                             ||d¬¦  «         n# t
          $ r d}Y nw xY w|r|‰	                     |j        |j        ¦  «         t          j        | |¦  «        }t          j	        | j
        ¦  «        j        }t          j                             ||d|z  d|z  ¬¦  «         ‰	                     ¦   «         5   ‰| |fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nrl   Frw  r¥  Trx  r’  )r   rl  r   r{  r§  rœ  rT   rw   r   ry  r=   rz  r|  r`   )
r   r   r¨  rd   re   r©  rª  rz  rb   r2   s
           €€r   r«  z0TestLinalgSolve.test_linalg_solve.<locals>.check»  s·  ø€ Ý# A qÐ3Ð3¨FÐ3Ð3ˆHØ�%˜˜1Ð'Ð' Ð'Ð'ˆCð ×%Ò% c¨3Ñ/Ô/Ð/à!&Ðð*Ý”
×9Ò9Ø˜¨ð :ñ ,ô ,ð ,ð ,øå!ð *ð *ð *à%)Ð"Ð"Ð"ð*øøøð "ð à× Ò  ¤¨H¬NÑ;Ô;Ð;õ ”f˜Q ‘n”n�ÝœX a¤gÑ.Ô.Ô9�
Ý”
×*Ò*ØØØ˜j™Ø˜zÑ)ð	 +ñ ô ð ð ×%Ò%Ñ'Ô'ð &ð &Ø��a˜Ð%Ð%˜fÐ%Ð%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s#   ³"A ÁA%Á$A%Ã:DÄDÄD)rC  rŽ  ©rŠ  rŠ  r�  r9  r   Nrj   r¬  rD  r0  rê  rh   rÿ   r   r£   r�   r´   rè  rÈ   rG  rŠ  r·  rE  r­  ri   r‘  )r   r   r   r”   rS  rw   r   r   ro   rE  r•   r�  r`  r–   r+  rg  rë  rì  ri  r'  r)  rt  )r2   r«  rž  rm   r=   rk   rù   r=  r>  r?  rú   rz   rO  rÎ  rP  Úok_oneDrR  rS  rb   s   `                 @r   Útest_linalg_solvez!TestLinalgSolve.test_linalg_solve´  sû  øø€ ð
 #•˜TÐ"Ñ"Ô"¥<Ñ0Ô0ˆð(	&ð (	&ð (	&ð (	&ð (	&ð (	&ðV )Ð(Ð(ˆõ ˜˜tœ{¨DÑ1Ô1ð	ð 	ÑˆD�%˜à×+Ò+¨D°%¸Ñ?Ô?ˆAàˆGå#*¨7°DÑ#9Ô#9ð ð ‘�˜à×/Ò/Ø”W˜Q”Z Ð(¨%°ñ:ô :�à��a˜‘”�ð ˜˜˜˜1˜”g—l’l¨�lÑ1Ô1�Ø��a˜‘”��ðð 	ˆ�bŒh�vÑÔ¥¤¨¡¤Ñ/Ô/Ð/õ ŒX˜˜B�x " b Ð*µ"´*Ð=Ñ=Ô=ˆð 	ˆˆb�"‰Œˆð ˆõ Œh˜˜A˜  A Ð'­r¬xÐ8Ñ8Ô8ˆØ×Ò  E¨B°¨9Ñ5Ô5Ð5Ø×Ò  E¨C°¨9Ñ5Ô5Ð5õ Œh˜˜A˜  A Ð'­r¬zÐ:Ñ:Ô:ˆØ×&Ò& r¨5°2°s°)Ñ<Ô<Ð<Ø×&Ò& r¨5°3¸°)Ñ<Ô<Ð<õ Œh˜˜1�v¥R¤ZÐ0Ñ0Ô0ˆØ×$Ò$ R¨°°b°	Ñ:Ô:Ð:õ Œh˜˜R˜
¥R¤V­R¬VÐ$4Ð5½R¼ZÐHÑHÔHˆØ×!Ò! %¨"¨c¨Ñ3Ô3Ð3Ø×!Ò! %¨#¨r¨Ñ3Ô3Ð3õ ”(˜B ˜8­2¬:Ð6Ñ6Ô6ˆØˆˆb�'ÑÔÐÝŒh˜!˜Q˜ ! Q Ð(¨A¨q¨6°A°q°6Ð*:Ð;Å2Ä:ÐNÑNÔNˆØ×'Ò'¨¨E°B¸°9Ñ=Ô=Ð=õ ”˜"˜¥R¤ZÐ0Ñ0Ô0ˆÝ”˜2˜$   r dÐ+µ2´:Ð>Ñ>Ô>ˆØ×)Ò)¨%°"°e°Ñ=Ô=Ð=Ø×)Ò)¨%°"°e°Ñ=Ô=Ð=ð ×+Ò+¨FµB´JÀÈ!Ð+ÑLÔLˆØ×%Ò% e¨e°R¨[Ñ9Ô9Ð9Ð9Ð9r    c                 ó€  — t          j        g d¢g d¢g d¢g d¢gd¬¦  «        }t          j        |¦  «        }t          j        g d¢¦  «        }t          j        |¦  «        }t          d¬	¦  «        d
„ ¦   «         }|                     ||d¦  «        }t           j                             ||¦  «         t           j                             ||¦  «          |||d¦  «        }t           j                             ||¦  «         t           j                             ||¦  «         t           j                             ||¦  «         d S )N)r0  r   r   r   )rê  r   r   r   )rê  r   r   r   )r0  r   r   r   rl   rj   )r0  rè  rE  r´   Tr‘   c                 ób   — |r| dd…d d …f         } t           j                             | |¦  «        S r¹  rþ   rX  s      r   rð  z4TestLinalgSolve.test_no_input_mutation.<locals>.func4  r[  r    Fr¿  )r2   r»  rÀ  rY  Úy_origrð  rd   re   s           r   rÁ  z&TestLinalgSolve.test_no_input_mutation)  s9  € åŒH�m�m�mØ#�m�mØ#�m�mØ#�m�mð&ð .1ð2ñ 2ô 2ˆõ
 ”˜‘”ˆÝŒH�_�_�_Ñ%Ô%ˆÝ”˜‘”ˆå	�dÐ	Ñ	Ô	ð	)ð 	)ñ 
Ô	ð	)ð —<’<  1 eÑ,Ô,ˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-Ý
Œ
×"Ò" 1 fÑ-Ô-Ð-àˆd�1�a˜ÑÔˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-Ý
Œ
×"Ò" 1 fÑ-Ô-Ð-å
Œ
×"Ò" 8¨SÑ1Ô1Ð1Ð1Ð1r    N)rÊ   rË   rÌ   rÍ   r   rc  rÁ  r   r    r   r^  r^  ¯  sX   € € € € € ðð ð ðr:ð r:ñ „\ðr:ðh ð2ð 2ñ „\ð2ð 2ð 2r    r^  c                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestLinalgPinvz#
    Tests for np.linalg.pinv.
    c                 ó<  ‡ ‡—  t          d¬¦  «        t          ¦  «        Šˆˆ fd„}g d¢}d}t          |‰ j        d¦  «        D ]y\  }}}‰                      |||¦  «        } ||¦  «         |\  }}	|dk    rF|	dk    r@t          ||	¦  «        }
‰                      ||||¬¦  «        }d	|z  }|
|z  } |||¬
¦  «         ŒzdD ]} |t          j        |¦  «        ¦  «         Œ d}‰                      |‰t          j	        dt          j
        ¬¦  «        f¦  «         ‰                      |‰t          j	        dt          j        ¬¦  «        f¦  «         ‰                      ‰t          j        d	dgt          j        t          j        ggt          j        ¬¦  «        f¦  «         dS )z%
        Test np.linalg.pinv
        Tr‘   c                 ód  •— t          | fi |¤Ž} ‰	| fi |¤Ž}‰
                     |d¦  «         d}	 t          j                             ||d¬¦  «         n# t
          $ r d}Y nw xY w|�r‘‰
                     |j        |j        ¦  «         t          j        || ¦  «        }	 ‰
 	                    |¦  «         �nD# t
          $ �r6 dt          j
        | j        ¦  «        j        z  } ‰	|¦  «        }t          j                             || d|z  d|z  ¬¦  «         | j        d	         | j        d
         k    rŒ t          d¬¦  «        t          ¦  «        } || t          j        | j        d	         ¦  «                             | j        ¦  «        fi |¤Žd	         }t          j                             ||d|z  d|z  ¬¦  «         ‰
                     t          j                             ||z
  ¦  «        |¦  «         Y nw xY w‰
                     ¦   «         5   ‰	| fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nrl   Frw  r¥  TrÈ   rx  r’  r   r   r‘   )r  rl  r   r{  r§  rœ  rT   rw   r   r  ry  r=   rz  r|  r   rü   rD  r:   Ú
assertLessrÖ   r  r`   )r   r¨  rd   re   r©  rª  rz  rø   Ú
lstsq_pinvrb   r2   s            €€r   r«  z.TestLinalgPinv.test_linalg_pinv.<locals>.checkR  só  ø€ Ý" 1Ð/Ð/¨Ð/Ð/ˆHØ�%˜Ð$Ð$˜VÐ$Ð$ˆCð ×%Ò% c¨3Ñ/Ô/Ð/à!&Ðð*Ý”
×9Ò9Ø˜¨ð :ñ ,ô ,ð ,ð ,øå!ð *ð *ð *à%)Ð"Ð"Ð"ð*øøøð "ñ %Pð × Ò  ¤¨H¬NÑ;Ô;Ð;õ
 ”f˜S !‘n”n�ðPØ×2Ò2°3Ñ7Ô7Ð7Ñ7øÝ%ð Pñ Pð Pà!"¥R¤X¨a¬gÑ%6Ô%6Ô%AÑ!A�JØ˜% ™*œ*�CÝ”J×.Ò.ØØØ *™_Ø  :Ñ-ð	 /ñ ô ð ð ”w˜q”z Q¤W¨Q¤ZÒ/Ð/ð !3¥¨TÐ 2Ñ 2Ô 2µ<Ñ @Ô @˜Ø%* UØ�rœvØ !¤¨¤
ñ ,ô  ,ß,2ªFØ !¤ñ-)ô -)ð&4ð &4ð -3ð&4ð &4ð 56ô&7˜
õ œ
×2Ò2ØØ&Ø!# j¡Ø!$ zÑ!1ð	 3ñ ô ð ð —O’O¥B¤I§N¢N°3¸±>Ñ$BÔ$BÀJÑOÔOÐOÐOÐOð5Pøøøð: ×%Ò%Ñ'Ô'ð #ð #Ø��aÐ"Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s6   ±"A ÁA#Á"A#ÂB6 Â6D>G7Ç6G7È
H%È%H)È,H)rˆ  r“  r�  r   r”  r0  rB  )r  r  r  r­  rh   rw  rè  N)r   r  r   r”   rS  r>  r   ro   r`  r®  r�  rg  r•   ri  rE  rë  rì  )r2   r«  rž  rJ  rm   r=   rk   r   rC   r<   rI  rû   rM  r  rÎ  rb   s   `              @r   Útest_linalg_pinvzTestLinalgPinv.test_linalg_pinvK  s  øø€ ð
 #•˜TÐ"Ñ"Ô"¥;Ñ/Ô/ˆð@	#ð @	#ð @	#ð @	#ð @	#ð @	#ðH ;Ð:Ð:ˆð ˆõ ˜˜tœ{¨DÑ1Ô1ð	7ð 	7ÑˆD�%˜ð ×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!‰HŒHˆHà‰DˆAˆqØ�AŠvˆv˜!˜qš&˜&å˜A˜q™	œ	�Ø×/Ò/°°e¸UØ:Gð 0ñ Iô I�à˜]Ñ*�Ø).°©Ð&Ø��aÐ5Ð6Ñ6Ô6Ð6øð #ð 	 ð 	 ˆBØˆE•"”(˜2‘,”,ÑÔÐÐàˆð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×$Ò$ R¨Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÐ%Eñ	Gô 	Gð 	Gð 	×!Ò! %Ý#%¤8¨b°"¨Z½"¼&Å"Ä&Ð9IÐ,JÝ24´*ð$>ñ $>ô $>ð #@ñ	Aô 	Að 	Að 	Að 	Ar    c                 óÎ  — t          d¬¦  «        d„ ¦   «         }t          j        g d¢g d¢g d¢g d¢gd¬	¦  «        }t          j        |¦  «        }|                     d
¦  «        }|                     |¦  «        }t          j                             ||¦  «          ||¦  «        }t          j                             ||¦  «         t          j                             ||¦  «         d S )NTr‘   c                 óL   — t           j                             | d         ¦  «        S )Nr   r  )rÓ  s    r   Úsome_fnz.TestLinalgPinv.test_issue5870.<locals>.some_fnÂ  s   € å”9—>’> ! A¤$Ñ'Ô'Ð'r    r±  r²  r´  r¶  rl   rj   )r   r´   r´   )r   r   rE  r   rB   rÁ   r{  r|  )r2   rp  Úv_dataÚv_origÚ
reshaped_vrd   re   s          r   Útest_issue5870zTestLinalgPinv.test_issue5870¿  sô   € õ 
�dÐ	Ñ	Ô	ð	(ð 	(ñ 
Ô	ð	(õ ”˜>˜>˜>Ø)˜>˜>Ø)˜>˜>Ø)˜>˜>ð+ð 36ð7ñ 7ô 7ˆõ
 ”˜‘”ˆØ—^’^ IÑ.Ô.ˆ
à—?’? :Ñ.Ô.ˆÝ
Œ
×"Ò" 6¨6Ñ2Ô2Ð2àˆg�jÑ!Ô!ˆÝ
Œ
×"Ò" 6¨6Ñ2Ô2Ð2å
Œ
×"Ò" 8¨SÑ1Ô1Ð1Ð1Ð1r    N)rÊ   rË   rÌ   rÍ   r   rm  rt  r   r    r   rh  rh  F  s[   € € € € € ðð ð ðqAð qAñ „\ðqAðf ð2ð 2ñ „\ð2ð 2ð 2r    rh  c                   óf   — e Zd ZdZd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
dS )	Ú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                             |||¬¦  «         |                      ¦   «         5   ||fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S ©NrÈ   r0  )r  r   ry  r=   rz  r{  r|  r`   )r2   rb   r   r¨  rd   re   rz  s          r   Ú	check_detz!TestLinalgDetAndSlogdet.check_detß  sö   € Ý˜aÐ*Ð* 6Ð*Ð*ˆØˆe�AÐ Ð ˜Ð Ð ˆà�œ !¤'Ñ*Ô*Ô5Ñ5ˆ
õ 	Œ
×"Ò" 3¨°zÐ"ÑBÔBÐBð ×!Ò!Ñ#Ô#ð 	ð 	ØˆE�!ÐÐ�vÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á.
BÂB	ÂB	c                 ó$  — t          |fi |¤Ž} ||fi |¤Ž}|                      t          |¦  «        t          |¦  «        ¦  «         |                      t          |¦  «        d¦  «         t          d¦  «        D ]H}|                      t	          j        ||         ¦  «        t	          j        ||         ¦  «        ¦  «         ŒI|j                             |d         ¦  «        }t          j         	                    ||d         d¬¦  «         dt	          j
        |j        ¦  «        j        z  }t          j                             |d         |d         ||¬¦  «         |                      ¦   «         5   ||fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nr£   r   rw  r¥  rÈ   r   r’  )r	  rT   rN   rq   r   rÜ  r=   Útyper{  r§  ry  rz  r|  r`   )	r2   rb   r   r¨  rd   re   r°   Úgot_convrz  s	            r   Úcheck_slogdetz%TestLinalgDetAndSlogdet.check_slogdetì  så  € Ý! !Ð.Ð. vÐ.Ð.ˆØˆe�AÐ Ð ˜Ð Ð ˆð 	×Ò�˜X™œ­¨C©¬Ñ1Ô1Ð1à×Ò�˜S™œ 1Ñ%Ô%Ð%õ �q‘”ð 	.ð 	.ˆAØ×ÒÝ”  A¤Ñ'Ô'Ý” ¨¤Ñ,Ô,ñ.ô .ð .ð .ð ”7—<’<  A¤Ñ'Ô'ˆÝ
Œ
×1Ò1Ø�h˜q”k¨ð 	2ñ 	,ô 	,ð 	,ð �œ !¤'Ñ*Ô*Ô5Ñ5ˆ
Ý
Œ
×"Ò"Ø�ŒF�H˜Q”K j°zð 	#ñ 	Cô 	Cð 	Cð ×!Ò!Ñ#Ô#ð 	ð 	ØˆE�!ÐÐ�vÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Å.
FÆF	ÆF	c                 óº  — g d¢}t          || j        d¦  «        D ])\  }}}|                      |||¦  «        } |||¦  «         Œ*t          | j        d¦  «        D ]'\  }}t          j        d|¬¦  «        } |||¦  «         Œ( ||t          j        d¦  «        ¦  «         |                      ||t          j        dt          j        ¬¦  «        f¦  «         |  	                    ||t          j        dt          j
        ¬¦  «        f¦  «         |                      |t          j        dd	gt          j        t          j        ggt          j
        ¬¦  «        f¦  «         d S )
N)rC  )r´   r´   ra  r�  rŽ  rh   r¬  r­  rw  r0  rè  )r   r”   rS  r   rB  ro   r`  r®  r�  rg  r•   ri  rE  rë  rì  )	r2   rÎ  r«  rb   rž  rm   r=   rk   r   s	            r   Údo_testzTestLinalgDetAndSlogdet.do_test  s‘  € ð )Ð(Ð(ˆõ ˜˜tœ{¨DÑ1Ô1ð	ð 	ÑˆD�%˜ð ×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�%˜‰OŒOˆOˆOõ $ D¤K°Ñ6Ô6ð 	ð 	‰LˆE�5Ý”˜ uÐ-Ñ-Ô-ˆAØˆE�%˜‰OŒOˆOˆOð 	ˆˆe•R”X˜fÑ%Ô%Ñ&Ô&Ð&ð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×$Ò$ R¨Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÐ%Eñ	Gô 	Gð 	Gð 	×!Ò! %Ý#%¤8¨b°"¨Z½"¼&Å"Ä&Ð9IÐ,JÝ24´*ð$>ñ $>ô $>ð #@ñ	Aô 	Að 	Að 	Að 	Ar    c                 óz   —  t          d¬¦  «        t          ¦  «        }|                      d| j        |¦  «         d S )NTr‘   r  )r   r  r  ry  ©r2   rb   s     r   Útest_linalg_detz'TestLinalgDetAndSlogdet.test_linalg_det0  s:   € à"•˜TÐ"Ñ"Ô"¥:Ñ.Ô.ˆØ�Š�U˜DœN¨EÑ2Ô2Ð2Ð2Ð2r    c                 óz   —  t          d¬¦  «        t          ¦  «        }|                      d| j        |¦  «         d S )NTr‘   r  )r   r	  r  r}  r�  s     r   Útest_linalg_slogdetz+TestLinalgDetAndSlogdet.test_linalg_slogdet5  s;   € à"•˜TÐ"Ñ"Ô"¥>Ñ2Ô2ˆØ�Š�Y Ô 2°EÑ:Ô:Ð:Ð:Ð:r    c                 ó¨  — t          j        g d¢g d¢g d¢g d¢gd¬¦  «        }t          j        |¦  «        }t          d¬¦  «        d	„ ¦   «         }|                     |d
¦  «        }t           j                             ||¦  «          ||d
¦  «        }t           j                             ||¦  «         t           j                             ||¦  «         d S )Nr±  r²  r´  r¶  rl   rj   Tr‘   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S r¹  r  rº  s     r   rð  z<TestLinalgDetAndSlogdet.test_no_input_mutation.<locals>.funcC  s5   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9×$Ò$ QÑ'Ô'Ð'r    Fr¿  ©r2   r»  rÀ  rð  rd   re   s         r   rÁ  z.TestLinalgDetAndSlogdet.test_no_input_mutation:  sã   € åŒH�n�n�nØ$�n�nØ$�n�nØ$�n�nð&ð .1ð2ñ 2ô 2ˆõ
 ”˜‘”ˆå	�dÐ	Ñ	Ô	ð	(ð 	(ñ 
Ô	ð	(ð —<’<  5Ñ)Ô)ˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-àˆd�1�e‰nŒnˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-å
Œ
×"Ò" 8¨SÑ1Ô1Ð1Ð1Ð1r    N)rÊ   rË   rÌ   rÍ   ry  r}  r  r   r‚  r„  rÁ  r   r    r   rv  rv  ×  s¡   € € € € € ðð ðð ð ð!ð !ð !ðFAð Að AðB ð3ð 3ñ „\ð3ð ð;ð ;ñ „\ð;ð ð2ð 2ñ „\ð2ð 2ð 2r    rv  c                   ó’   — e Zd ZdZed„ ¦   «         ZdZe ej        e	 p e
¦   «         pdek     d¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestLinalgNormz#
    Tests for np.linalg.norm.
    c                 ó¤  ‡ ‡
—  t          d¬¦  «        t          ¦  «        Š
ˆ
ˆ fd„}g d¢}dt          j        t          j         dddd	d
dddg}t	          |‰ j        |¦  «        D ])\  }}}‰                      ||¦  «        } |||¬¦  «         Œ*t	          ‰ j        |¦  «        D ]1\  }}‰                      d|¦  «        ddd…         } |||¬¦  «         Œ2g d¢}dt          j        t          j         ddd	d
g}t	          |‰ j        d|¦  «        D ]+\  }}}}‰                      |||¦  «        } |||¬¦  «         Œ,dg}t	          ‰ j        |d¦  «        D ]c\  }}}‰                      d||¦  «        } ||dd…         |¬¦  «          ||dd…dd…f         |¬¦  «          ||dddd…f         |¬¦  «         Œdt	          ‰ j        |d¦  «        D ]t\  }}}t          j        d||¬¦  «        }‰  	                     ‰
||¦  «        d¦  «         t          j        d||¬¦  «        }‰  	                     ‰
||¦  «        d¦  «         Œud}	‰  
                    |	‰
t          j        dt          j        ¬¦  «        f¦  «         ‰                      |	‰
t          j        dt          j        ¬¦  «                             d	d	d¦  «        f¦  «         ‰                      ‰
t          j        ddgt          j        t          j        ggt          j        ¬¦  «        d	f¦  «         ‰                      ‰
t          j        ddgdd ggt          j        ¬¦  «        d!f¦  «         dS )"z%
        Test np.linalg.norm
        Tr‘   c                 óv  •— t          | fi |¤Ž} ‰| fi |¤Ž}‰                     t          j        |¦  «         ¦  «         dt          j        | j        ¦  «        j        z  }t          j                             |||¬¦  «         ‰ 	                    ¦   «         5   ‰| fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S rx  )
r  rn  r   rÜ  ry  r=   rz  r{  r|  r`   ©r   r¨  rd   re   rz  rb   r2   s        €€r   r«  z.TestLinalgNorm.test_linalg_norm.<locals>.checkb  ó  ø€ Ý" 1Ð/Ð/¨Ð/Ð/ˆHØ�%˜Ð$Ð$˜VÐ$Ð$ˆCð �OŠO¥¤°Ñ 4Ô 4Ð4Ñ5Ô5Ð5à�RœX a¤gÑ.Ô.Ô9Ñ9ˆJõ ŒJ×&Ò& s¨H¸:Ð&ÑFÔFÐFð ×%Ò%Ñ'Ô'ð #ð #Ø��aÐ"Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #ó   Â
B.Â.B2Â5B2)r   r´   rŠ  Nr   r   r“   r£   rv  rÈ   gÍÌÌÌÌÌ@g333333À)r  rw  r�   rˆ  r�  )é   r:  r´   rD  r;  rê  r¬  r  r­  rh   é   r0  rè  rE  rF  rG  )r   r  r   rë  r   r”   r?   rS  ro   rT   r`  r®  r�  r'  r•   rB   ri  rE  rì  r�  )r2   r«  rž  Ú	nrm_typesrm   r=   Únrm_typer   rk   rÎ  rb   s   `         @r   Útest_linalg_normzTestLinalgNorm.test_linalg_norm[  s&  øø€ ð
 #•˜TÐ"Ñ"Ô"¥;Ñ/Ô/ˆð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð" �	�	ˆØ�2œ6¥B¤F 7¨A¨q°"°a¸¸QÀÀTÐJˆ	õ ˜˜tœ{¨IÑ6Ô6ð	#ð 	#Ñ!ˆD�%˜à×"Ò" 4¨Ñ/Ô/ˆAØˆE�!˜Ð"Ñ"Ô"Ð"Ð"õ ˜œ YÑ/Ô/ð	#ð 	#‰OˆE�8à×"Ò" 2 uÑ-Ô-¨c¨c°¨cÔ2ˆAØˆE�!˜Ð"Ñ"Ô"Ð"Ð"ð
 ;Ð:Ð:ˆØ�2œ6¥B¤F 7¨A¨r°1°bÐ9ˆ	õ ˜˜tœ{¨D°)Ñ<Ô<ð	#ð 	#Ñ(ˆD�%˜ ð ×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!˜Ð"Ñ"Ô"Ð"Ð"ð �Fˆ	å˜œ Y°Ñ5Ô5ð
	,ð 
	,Ñ"ˆE�8˜Uà×+Ò+¨H°e¸UÑCÔCˆAàˆE�!�B�Q�B”%˜XÐ&Ñ&Ô&Ð&ð ˆE�!�A�A�A�q�r�r�E”( Ð)Ñ)Ô)Ð)ð ˆE�!�A�q�t˜!�t�G”* (Ð+Ñ+Ô+Ð+Ð+õ ˜œ Y°Ñ5Ô5ð	6ð 	6Ñ"ˆE�8˜Uå”˜ U°%Ð8Ñ8Ô8ˆAØ×Ò˜U˜U 1 hÑ/Ô/°Ñ5Ô5Ð5Ý”˜ u°EÐ:Ñ:Ô:ˆAØ×Ò˜U˜U 1 hÑ/Ô/°Ñ5Ô5Ð5Ð5àˆð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×'Ò'Ø��œØ�"œ*ð&ñ &ô &ß&-¢gØ�1�añ'ô 'ðñ	ô 	ð 	ð 	×!Ò! %Ý#%¤8¨b°"¨X½¼ÅÄÐ7GÐ,HÝ24´*ð$>ñ $>ô $>Ø?@ð#Bñ	Cô 	Cð 	Cð
 	×%Ò% e­b¬h¸¸R¸À2ÀrÀ(Ð7KÝ=?¼Zð/Iñ /Iô /IØJKð.Mñ 	Nô 	Nð 	Nð 	Nð 	Nr    l        r   zUrequires an ILP64 scipy/BLAS and enough free memory for a 2**31-element float64 arrayc                 ó   — t          j        dt           j        ¬¦  «        }d|d<   d„ }t          |¦  «        }t           j                              ||¦  «        dd¬¦  «         t           j                              ||¦  «        dd¬¦  «         d S )Nl        rh   r0  r“   c                 ó@   — t           j                             | ¦  «        S r   r  )rÅ   s    r   rð  z,TestLinalgNorm.test_norm_ilp64.<locals>.funcÏ  s   € Ý”9—>’> !Ñ$Ô$Ð$r    ç›+¡†›„=)r~  )r   rB  r•   r   r{  r|  )r2   rÅ   rð  rb   s       r   Útest_norm_ilp64zTestLinalgNorm.test_norm_ilp64Ä  s�   € õ ŒH�U¥"¤*Ð-Ñ-Ô-ˆØˆˆ"‰ð	%ð 	%ð 	%õ �T‘
”
ˆå
Œ
×"Ò" 4 4¨¡7¤7¨C°eÐ"Ñ<Ô<Ð<Ý
Œ
×"Ò" 5 5¨¡8¤8¨S°uÐ"Ñ=Ô=Ð=Ð=Ð=r    N)rÊ   rË   rÌ   rÍ   r   r“  Ú_NORM_ILP64_BYTES_NEEDEDÚunittestÚskipIfr   r   r—  r   r    r   r‰  r‰  V  s¦   € € € € € ðð ð ð`Nð `Nñ „\ð`NðH  9Ðð Ø€X„_ØÐð 	FØ"Ð"Ñ$Ô$Ð)¨Ð-EÒEð	&ñô ð
>ð 
>ñô ñ „\ð
>ð 
>ð 
>r    r‰  c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )Ú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 ]+\  }}}}‰                      |||¦  «        } |||¬¦  «         Œ,g d¢}t	          |‰ j        d¦  «        D ](\  }}}‰                      |||¦  «        } ||¦  «         Œ)dD ]+}	‰                      ‰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¦  «         n# 1 swxY w Y   d}‰                      |‰t          j        dt          j        ¬¦  «        f¦  «         ‰                      |‰t          j        dt          j
        ¬¦  «        f¦  «         ‰                      ‰t          j	        ddgt          j        t          j        ggt          j
        ¬¦  «        f¦  «         ‰                      ‰t          j	        ddgddggt          j
        ¬¦  «        df¦  «         dS )z%
        Test np.linalg.cond
        Tr‘   c                 óv  •— t          | fi |¤Ž} ‰| fi |¤Ž}‰                     t          j        |¦  «         ¦  «         dt          j        | j        ¦  «        j        z  }t          j                             |||¬¦  «         ‰ 	                    ¦   «         5   ‰| fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S rx  )
r  rn  r   rÜ  ry  r=   rz  r{  r|  r`   rŒ  s        €€r   r«  z.TestLinalgCond.test_linalg_cond.<locals>.checkå  r�  rŽ  Nr   r“   r£   rv  rŽ  ra  r�  )r  )r‰  r‹  r�  r�  r  r   rh   g Èë…óÌágš™™™™™¹?Úignorer  r­  rw  r0  rè  rE  rF  rG  )r   r  r   rë  r   r”   rS  rƒ  ro   rE  r•   rI   rJ   rK   ÚRuntimeWarningr`  r®  r�  rg  ri  rì  r�  )r2   r«  Úpsrž  rm   r=   rk   r  r   r  rÅ   rÎ  rb   s   `           @r   Útest_linalg_condzTestLinalgCond.test_linalg_condÝ  sŠ  øø€ ð #•˜TÐ"Ñ"Ô"¥;Ñ/Ô/ˆð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð" •B”F�RœV˜G Q¨¨A¨rÐ2ˆØ˜Ð ˆõ ˜˜tœ{¨D°"Ñ5Ô5ð	ð 	Ñ!ˆD�%˜ à×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!�qˆM‰MŒMˆMˆMð 3Ð2Ð2ˆå˜˜tœ{¨DÑ1Ô1ð	ð 	ÑˆD�%˜à×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!‰HŒHˆHˆHð +ð 	?ð 	?ˆBØ×&Ò& u­r¬x¸©|¬|¨oÑ>Ô>Ð>Ð>õ ŒH�q˜!�f˜q !˜fÐ%­R¬ZÐ8Ñ8Ô8ˆØˆˆa‰ŒˆØˆˆa�1ˆ‰ŒˆÝŒH�q˜!�f˜q !˜fÐ%­R¬ZÐ8Ñ8Ô8ˆØˆˆa�2ˆ‰Œˆõ
 Ô$Ñ&Ô&ð 	ð 	Ý”˜6 1˜+¨¨3 xÐ0½¼
ÐCÑCÔCˆAÝÔ! (­NÑ;Ô;Ð;ØˆE�!‰HŒHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 ˆð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×$Ò$ R¨Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÐ%Eñ	Gô 	Gð 	Gð 	×!Ò! %Ý#%¤8¨b°"¨Z½"¼&Å"Ä&Ð9IÐ,JÝ24´*ð$>ñ $>ô $>ð #@ñ	Aô 	Að 	Að
 	×%Ò% e­b¬h¸¸R¸À2ÀrÀ(Ð7KÝ=?¼Zð/Iñ /Iô /IØJKð.Mñ 	Nô 	Nð 	Nð 	Nð 	Ns   ÆAGÇGÇ GN)rÊ   rË   rÌ   rÍ   r   r¢  r   r    r   rœ  rœ  Ø  sC   € € € € € ðð ð ðKNð KNñ „\ðKNð KNð KNr    rœ  c                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestLinalgMatrixRankz*
    Tests for np.linalg.matrix_rank.
    c           	      ó  ‡ ‡—  t          d¬¦  «        t          ¦  «        Šˆˆ fd„}g d¢}t          |‰ j        d¦  «        D �]?\  }}}‰                      |||¦  «        } ||¦  «         d}t          dt          |¦  «        dz
  ¦  «        D �]q}‰                      ||||¬¦  «        }‰                       ‰|¦  «        |¦  «          ||¦  «         |j        \  }	}
d	|d
d
…d
d
…f<   t          j
        t          j        |	|
¦  «        ¦  «        }t          j        |¦  «        rNdt          j                             |¦  «        z   dz   dt          j                             |¦  «        z  z   }d|d<   n'dt          j                             |¦  «        z   }d|d<   |                     |¦  «        ||d         d
|…         |d         d
|…         f<   ‰                       ‰||¦  «        |dz
  ¦  «          |||¬¦  «         �Œsd	|d
d
…d
d
…f<   ‰                       ‰|¦  «        d¦  «          ||¦  «         t          j        |¦  «        rd|d<   nd|d<   ‰                       ‰||¦  «        d¦  «          |||¬¦  «         �ŒA‰ j        D ]q}t          j        d|¬¦  «        }‰                       ‰|¦  «        d¦  «          ||¦  «         d|d<   ‰                       ‰|¦  «        d¦  «          ||¦  «         ŒrdD ]1}dD ],}‰                      ‰t          j        |¦  «        |f¦  «         Œ-Œ2d}‰                      |‰t          j        dt          j        ¬¦  «        f¦  «         ‰                      |‰t          j        dt          j        ¬¦  «                             ddd¦  «        f¦  «         ‰                      ‰t          j        ddgt          j        t          j        ggt          j        ¬¦  «        f¦  «         d
S )z,
        Test np.linalg.matrix_rank
        Tr‘   c                 óà   •— t          | fi |¤Ž} ‰| fi |¤Ž}t          j                             ||¦  «         ‰                     ¦   «         5   ‰| fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S r   )r  r   r{  r|  r`   )r   r¨  rd   re   rb   r2   s       €€r   r«  z;TestLinalgMatrixRank.test_linalg_matrix_rank.<locals>.check9	  sÙ   ø€ Ý)¨!Ð6Ð6¨vÐ6Ð6ˆHØ�%˜Ð$Ð$˜VÐ$Ð$ˆCõ ŒJ×&Ò& s¨HÑ5Ô5Ð5ð ×%Ò%Ñ'Ô'ð #ð #Ø��aÐ"Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   Á
A#Á#A'Á*A'rˆ  r�  ç‚vIhÂ%<=r   r‘  rê  Nr0  ù              ð?y›+¡†›„=›+¡†›„=r   r–  )r  )r“   r“   rÈ   rh   r  )Nr§  r  r­  r�  r£   r�   rè  )r   r  r   r”   rS  rq   r>  rT   rw   r   rC  rD  rÜ  r<  rÅ  r:   rB  rƒ  ro   r`  r®  r�  r'  r•   rB   ri  rE  rë  rì  )r2   r«  rž  rm   r=   rk   r   r  r°   rC   r<   rR  r   r<  r  rÎ  rb   s   `               @r   Útest_linalg_matrix_rankz,TestLinalgMatrixRank.test_linalg_matrix_rank1	  s�  øø€ ð #•˜TÐ"Ñ"Ô"Õ#5Ñ6Ô6ˆð
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð ;Ð:Ð:ˆõ ˜˜tœ{¨DÑ1Ô1ð,	ñ ,	ÑˆD�%˜ð ×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!‰HŒHˆHð ˆCå˜1�c $™iœi¨!™mÑ,Ô,ð "ñ "�à×/Ò/°°e¸UÈÐ/ÑKÔK�Ø× Ò    q¡¤¨1Ñ-Ô-Ð-Ø��a‘”�ð ”w‘��1Ø��!�!�!�Q�Q�Q�$‘Ý”j¥¤¨¨1¡¤Ñ.Ô.�Ý”? 1Ñ%Ô%ð !Ø�RœYŸ^š^¨AÑ.Ô.Ñ.°Ñ4Ø�bœiŸnšn¨QÑ/Ô/Ñ/ñ0�Að *�A�a‘D�Dà�RœYŸ^š^¨AÑ.Ô.Ñ.�AØ �A�a‘DØ,-¯HªH°U©O¬O��#�a”&˜˜!˜”*˜c !œf R a RœjÐ(Ñ)à× Ò    q¨#¡¤°°A±Ñ6Ô6Ð6Ø��a˜SÐ!Ñ!Ô!Ð!Ñ!àˆAˆaˆaˆa���ˆd‰GØ×Ò˜U˜U 1™XœX qÑ)Ô)Ð)ØˆE�!‰HŒHˆHåŒ˜qÑ!Ô!ð "Ø*��&‘	�	à!��&‘	à×Ò˜U˜U 1 c™]œ]¨AÑ.Ô.Ð.ØˆE�!˜ÐÑÔÐÑð ”+ð 	ð 	ˆBÝ”˜! BÐ'Ñ'Ô'ˆAØ×Ò˜U˜U 1™XœX qÑ)Ô)Ð)ØˆE�!‰HŒHˆHàˆAˆa‰DØ×Ò˜U˜U 1™XœX qÑ)Ô)Ð)ØˆE�!‰HŒHˆHˆHð +ð 	Gð 	GˆBØ$ð Gð G�Ø×*Ò*¨5µ2´8¸B±<´<ÀÐ2EÑFÔFÐFÐFðGð ˆð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@Ð Bñ	Dô 	Dð 	Dð 	×'Ò'Ø��œØ�"œ*ð&ñ &ô &ß&-¢gØ�1�añ'ô 'ðñ	ô 	ð 	ð 	×!Ò! %Ý#%¤8¨b°"¨Z½"¼&Å"Ä&Ð9IÐ,JÝ24´*ð$>ñ $>ô $>ð #@ñ	Aô 	Að 	Að 	Að 	Ar    c                 ó¨  — t          j        g d¢g d¢g d¢g d¢gd¬¦  «        }t          j        |¦  «        }t          d¬¦  «        d	„ ¦   «         }|                     |d
¦  «        }t           j                             ||¦  «          ||d
¦  «        }t           j                             ||¦  «         t           j                             ||¦  «         d S )Nr±  r²  r´  r¶  rl   rj   Tr‘   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S r¹  r  rº  s     r   rð  z9TestLinalgMatrixRank.test_no_input_mutation.<locals>.func£	  s5   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9×(Ò(¨Ñ+Ô+Ð+r    Fr¿  r‡  s         r   rÁ  z+TestLinalgMatrixRank.test_no_input_mutation–	  så   € õ ŒH�n�n�nØ$�n�nØ$�n�nØ$�n�nð&ð .1ð2ñ 2ô 2ˆõ
 ”˜‘”ˆå	�dÐ	Ñ	Ô	ð	,ð 	,ñ 
Ô	ð	,ð —<’<  5Ñ)Ô)ˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-àˆd�1�e‰nŒnˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-å
Œ
×"Ò" 8¨SÑ1Ô1Ð1Ð1Ð1r    N)rÊ   rË   rÌ   rÍ   r   r©  rÁ  r   r    r   r¤  r¤  ,	  s[   € € € € € ðð ð ðbAð bAñ „\ðbAðH ð2ð 2ñ „\ð2ð 2ð 2r    r¤  c                   ó.   — e Zd ZdZd„ Zed„ ¦   «         ZdS )ÚTestLinalgMatrixPowerz+
    Tests for np.linalg.matrix_power.
    c                 ó¤   —  ||d         d¦  «         |                       t          j        ¦  «        5   ||Ž  d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   ©rƒ   r
   rŒ   )r2   rb   rc   s      r   Úassert_int_exponenentz+TestLinalgMatrixPower.assert_int_exponenent¸	  sž   € àˆˆd�1Œg�qÑÔÐà×Ò�vÔ1Ñ2Ô2ð 	ð 	ØˆE�4ˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ²AÁA	Á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 ]M\  }}}}‰                      |||¦  «        } |||¦  «         t          j        d||¬¦  «        } |||¦  «         ŒNd}	‰  	                    |	‰t          j
        dt          j        ¬¦  «        df¦  «         ‰  	                    |	‰t          j
        dt          j        ¬¦  «        df¦  «         t          j
        d¦  «        df}
d}‰                      ‰|
|¦  «         ‰                      |	‰t          j
        dt          j        ¬¦  «        df¦  «         ‰                      ‰t          j
        d¦  «        df¦  «         ‰                      ‰t          j        ddgddgg¦  «        df¦  «         d S )NTr‘   c                 óf  •— t          | |¦  «        } ‰| |¦  «        }‰                     |d¦  «         dt          j        | j        ¦  «        j        z  }t          j                             ||||¬¦  «         ‰                     ¦   «         5   ‰| |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nri   rŠ  r’  )	r  rl  r   ry  r=   rz  r{  r|  r`   )r   Úpwrrd   re   r4  rb   r2   s        €€r   r«  z=TestLinalgMatrixPower.test_linalg_matrix_power.<locals>.checkÃ	  sø   ø€ Ý*¨1¨cÑ2Ô2ˆHØ�%˜˜3‘-”-ˆCð ×%Ò% c¨3Ñ/Ô/Ð/à•b”h˜qœwÑ'Ô'Ô2Ñ2ˆCÝŒJ×&Ò& s¨H¸3ÀSÐ&ÑIÔIÐIð ×%Ò%Ñ'Ô'ð ð Ø��a˜‘”�ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB&Â&B*Â-B*)rC  rÇ   ra  ißÿÿÿiïÿÿÿéöÿÿÿrw  r�  é!   r�  r¬  r;  r  r­  rh   r   )r�   rÈ   zinput must be a square arrayç333333ó?rê  r   r“   )r   r  Úlistrq   r   r”   rS  r   ro   r`  r®  r�  rV  rg  r•   r°  rt  rE  )r2   r«  rž  Úpowersrm   r³  r=   rk   r   rÎ  rc   rˆ   rb   s   `           @r   Útest_linalg_matrix_powerz.TestLinalgMatrixPower.test_linalg_matrix_power¿	  s+  øø€ à"•˜TÐ"Ñ"Ô"Õ#6Ñ7Ô7ˆð	ð 	ð 	ð 	ð 	ð 	ð )Ð(Ð(ˆØ�s��d¥5¨¨b¡>¤>Ñ2Ô2Ñ2°b¸"°XÑ=ˆõ ˜˜v t¤{°DÑ9Ô9ð	ð 	Ñ#ˆD�#�u˜eà×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!�S‰MŒMˆMÝ”˜ u°EÐ:Ñ:Ô:ˆAØˆE�!�S‰MŒMˆMˆMàˆð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@À!Ð Dñ	Fô 	Fð 	Fð 	×Ò  EÝ!#¤¨µr´xÐ!@Ñ!@Ô!@À!Ð Dñ	Fô 	Fð 	Fõ ”˜‘” Ð#ˆØ,ˆØ×Ò˜%  sÑ+Ô+Ð+ð 	×$Ò$ R¨Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÀQÐ%Gñ	Iô 	Ið 	Ið 	×"Ò" 5­2¬7°6©?¬?¸CÐ*@ÑAÔAÐAð 	×%Ò% e­b¬h¸¸Q¸À!ÀQÀÐ7HÑ.IÔ.IÈ2Ð-NÑOÔOÐOÐOÐOr    N)rÊ   rË   rÌ   rÍ   r°  r   r¹  r   r    r   r­  r­  ³	  sM   € € € € € ðð ðð ð ð ð2Pð 2Pñ „\ð2Pð 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          ¦  «        | _        d S )NTr‘   )r/   r»  r0   r   r"  Úcfunc_w_offsetr$  Úcfunc_no_offsetr1   s    €r   r0   zTestTrace.setUpú	  s`   ø€ Ý�i˜ÑÔ×$Ò$Ñ&Ô&Ð&à0�c¨4Ð0Ñ0Ô0µÑ>Ô>ˆÔØ1�s¨DÐ1Ñ1Ô1Õ2HÑIÔIˆÔÐÐr    c                 óž   —  ||¦  «         |                       t          j        ¦  «        5   ||fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S r   r¯  )r2   rb   r   r¨  s       r   Úassert_int_offsetzTestTrace.assert_int_offset 
  s¢   € àˆˆa‰Œˆà×Ò�vÔ1Ñ2Ô2ð 	ð 	ØˆE�!ÐÐ�vÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   «
AÁAÁ	Ac                 óÎ  ‡ — ˆ fd„}g d¢}g d¢t          t          dd¦  «        ¦  «        z   g d¢z   }t          ||‰ j        d¦  «        D ]q\  }}}}‰                      |||¦  «        } |||¬¦  «         |d	k    r ||¦  «         t          j        d
||¬¦  «        } |||¬¦  «         |d	k    r ||¦  «         Œrd}	‰                      |	‰ j        t          j	        dt
          j
        ¬¦  «        dfd¦  «         ‰                      |	‰ j        t          j	        dt
          j
        ¬¦  «        fd¦  «         ‰                      ‰ j        t          j	        d¦  «        d¬¦  «         d S )Nc                 óh  •— d|v rt          | fi |¤Ž}‰j        }nt          | fi |¤Ž}‰j        } || fi |¤Ž}dt	          j        | j        ¦  «        j        z  }t          j         	                    ||||¬¦  «         ‰ 
                    ¦   «         5   || fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nr!  rÈ   r’  )r"  r½  r$  r¾  r   ry  r=   rz  r{  r|  r`   )r   r¨  rd   rb   re   r4  r2   s         €r   r«  z#TestTrace.test_trace.<locals>.check	
  s)  ø€ Ø˜6Ð!Ð!Ý'¨Ð4Ð4¨VÐ4Ð4�ØÔ+��å1°!Ð>Ð>°vÐ>Ð>�ØÔ,�à�%˜Ð$Ð$˜VÐ$Ð$ˆCà•b”h˜qœwÑ'Ô'Ô2Ñ2ˆCÝŒJ×&Ò& s¨H¸3ÀSÐ&ÑIÔIÐIð ×%Ò%Ñ'Ô'ð #ð #Ø��aÐ"Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   Â
B'Â'B+Â.B+rˆ  )ióÿÿÿiôÿÿÿiõÿÿÿr´  rw  )rŒ  r�  r:  r�  )r!  r   r¬  r;  r   rh   r   Fr­  r¶  )r·  rq   r   r”   rS  r   ro   rg  r½  r®  r•   r¾  rÀ  )
r2   r«  rž  Úoffsetsrm   r!  r=   rk   r   rÎ  s
   `         r   Ú
test_tracezTestTrace.test_trace
  sÂ  ø€ ð	#ð 	#ð 	#ð 	#ð 	#ð& ;Ð:Ð:ˆð "�/�/¥D­¨s°B©¬Ñ$8Ô$8Ñ8¸<¸<¸<ÑGˆõ ˜˜w¨¬°TÑ:Ô:ð		ð 		Ñ&ˆD�&˜% à×+Ò+¨D°%¸Ñ?Ô?ˆAØˆE�!˜FÐ#Ñ#Ô#Ð#Ø˜Š{ˆ{Ø��a‘”�Ý”˜ u°EÐ:Ñ:Ô:ˆAØˆE�!˜FÐ#Ñ#Ô#Ð#Ø˜Š{ˆ{Ø��a‘”�øàˆð 	×$Ò$ R¨Ô)<Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÀQÐ%GÈñ	Pô 	Pð 	Pà×$Ò$ R¨Ô)=Ý&(¤g¨b½¼
Ð&CÑ&CÔ&CÐ%EÀuñ	Nô 	Nð 	Nð 	×ÒØÔ¥¤Øñ"ô "Ø #ð 	ñ 	%ô 	%ð 	%ð 	%ð 	%r    c                 ó^  — t          dd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        } ||¦  «         |                      t
          ¦  «        5 } |d¦  «         ddd¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         dS )	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˜A‘;”;Ðr    rÇ   rh   Nz(expected array(float64, 2d, A), got None)	r   r   r®  r•   rƒ   Ú	TypeErrorrR   r…   rT   )r2   rÇ  r   r‡   Úerrmsgs        r   Útest_trace_w_optional_inputz%TestTrace.test_trace_w_optional_input9
  sñ   € å	Ð(°4Ð	8Ñ	8Ô	8ð	ð 	ñ 
9Ô	8ð	õ ŒG�F¥"¤*Ð-Ñ-Ô-ˆØˆˆq‰	Œ	ˆ	à×Ò�yÑ)Ô)ð 	¨VØˆF�4‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �VÔ%Ñ&Ô&ˆØ×ÒÐCÀVÑLÔLÐLÐLÐLs   Á A8Á8A<Á?A<)	rÊ   rË   rÌ   rÍ   r0   rÀ  rÄ  rÊ  rÒ   rÓ   s   @r   r»  r»  õ	  s|   ø€ € € € € ðð ðJð Jð Jð Jð Jðð ð ð0%ð 0%ð 0%ðdMð Mð Mð Mð Mð Mð Mr    r»  c                   óh   — 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d	S )
Ú
TestBasics)rl   ri   ri   rl   )ri   rl   ri   rl   )r‰  rŽ  r�  )rŠ  r™  )r�   rE  rV  c           	      ó:  — |                       ||t          j        dgggt          j        ¬¦  «        t          j        d¦  «        fd¦  «         |                       ||t          j        d¦  «        t          j        dgggt          j        ¬¦  «        fd¦  «         d S )Nr   rh   F)r'  r   rE  r•   r®  )r2   rÎ  rb   s      r   Ú_assert_wrong_dimzTestBasics._assert_wrong_dimR
  sž   € à×'Ò'Ø��œ A 3 % µ´
Ð;Ñ;Ô;½R¼WÀQ¹Z¼ZÐHÈ%ñ	Qô 	Qð 	Qà×'Ò'Ø��œ ™
œ
¥B¤H°¨s¨e¨W½B¼JÐ$GÑ$GÔ$GÐHÈ%ñ	Qô 	Qð 	Qð 	Qð 	Qr    c                 ó  — t          |t          ¦  «        s|S t          |¦  «        dk    r|                      |d         |¦  «        S |                      |d         |d         z  |¦  «                             ||¬¦  «        S )Nr   r   rj   )r?  rk  rN   r?   rB   )r2   rm   r=   rk   s       r   Ú
_gen_inputzTestBasics._gen_inputY
  s†   € Ý˜$¥Ñ&Ô&ð 		'ØˆKå�4‰yŒy˜AŠ~ˆ~Ø×)Ò)¨$¨q¬'°5Ñ9Ô9Ð9à×)Ò)Ø˜”G˜d 1œgÑ%Øñô ç"š7Ø ð #ñ 'ô 'ð'r    c                 ó  — |                       ||t          | j        ¦  «        ¦  «        }|                       ||t          | j        ¦  «        ¦  «        }t	          j        |¦  «        r|dz   }t	          j        |¦  «        r|dz   }||fS )Nr¨  )rÐ  r;  Úorder1Úorder2r   rÜ  )r2   Úsize1Úsize2r=   r   r   s         r   Ú
_get_inputzTestBasics._get_inpute
  s   € Ø�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          |¦  «        }‰                      |||¦  «        \  }} |||¦  «         t          j	        t          j
        |¦  «        j        t          j
        |¦  «        j        ft          j
        |¦  «        j        ¬¦  «        } ||||¬¦  «         Œ¦‰                      d‰	¦  «         d S )NTr‘   c                 ó  •— t          | |¦  «        } ‰| |¦  «        }dt          j        t          j        | ¦  «        j        ¦  «        j        z  }t          j                             ||||¬¦  «         d|v rV ‰| |fi |¤Ž}t          j                             ||||¬¦  «         t          j                             |d         |||¬¦  «         ‰                     ¦   «         5   ‰| |fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )NrÈ   r’  r$   )	r'  r   ry  Úasarrayr=   rz  r{  r|  r`   ©r   r   r¨  rd   re   r4  rb   r2   s         €€r   r«  z$TestBasics.test_outer.<locals>.checkr
  sn  ø€ õ $ A qÑ)Ô)ˆHØ�%˜˜1‘+”+ˆCà•b”h�rœz¨!™}œ}Ô2Ñ3Ô3Ô>Ñ>ˆCÝŒJ×&Ò& s¨H¸3ÀSÐ&ÑIÔIÐIð ˜ˆˆØ�e˜A˜qÐ+Ð+ FÐ+Ð+�Ý”
×*Ò*¨3°¸sØ03ð +ñ 5ô 5ð 5å”
×*Ò*¨6°%¬=¸(Ø03¸#ð +ñ ?ô ?ð ?ð ×%Ò%Ñ'Ô'ð &ð &Ø��a˜Ð%Ð%˜fÐ%Ð%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s   Ã"C:Ã:C>ÄC>rh   r#   r&  )r   r'  r   r”   r   rž  r;  rÖ  r   ro   rÙ  rm   r=   rÎ  )
r2   r«  ÚdtsrÔ  rÕ  r=   r   r   r  rb   s
   `        @r   Ú
test_outerzTestBasics.test_outero
  s  øø€ Ø"•˜TÐ"Ñ"Ô"¥<Ñ0Ô0ˆð	&ð 	&ð 	&ð 	&ð 	&ð 	&õ* �D”KÑ Ô ˆÝ# D¤J°´
Ñ;Ô;ð 	ð 	‰LˆE�5Ý˜‘I”IˆEØ—_’_ U¨E°5Ñ9Ô9‰FˆQ�ØˆE�!�Q‰KŒKˆKÝ”�"œ* Q™-œ-Ô,­b¬j¸©m¬mÔ.@ÐAÝ"$¤*¨Q¡-¤-Ô"5ð7ñ 7ô 7ˆAàˆE�!�Q˜AÐÑÔÐÐà×Ò˜w¨Ñ.Ô.Ð.Ð.Ð.r    c                 óÖ  ‡ ‡	—  t          d¬¦  «        t          ¦  «        Š	ˆ	ˆ fd„}t          ‰ j        ‰ j        ‰ j        ¦  «        D ],\  }}}‰                      |||¦  «        \  }} |||¦  «         Œ-‰                      d‰	¦  «         t          j        d¦  «        d d d…         t          j        d¦  «        d d d…         f}d}‰  	                    ‰	||t          j        ¬¦  «         d S )	NTr‘   c                 ó^  •— t          | |¦  «        } ‰| |¦  «        }dt          j        t          j        | ¦  «        j        ¦  «        j        z  }t          j                             ||||¬¦  «         ‰                     ¦   «         5   ‰| |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÈ   r’  )	r*  r   ry  rÙ  r=   rz  r{  r|  r`   rÚ  s         €€r   r«  z#TestBasics.test_kron.<locals>.check•
  sé   ø€ å" 1 aÑ(Ô(ˆHØ�%˜˜1‘+”+ˆCà•b”h�rœz¨!™}œ}Ô2Ñ3Ô3Ô>Ñ>ˆCÝŒJ×&Ò& s¨H¸3ÀSÐ&ÑIÔIÐIð ×%Ò%Ñ'Ô'ð ð Ø��a˜‘”�ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB"Â"B&Â)B&r)  rw  r£   zonly supports 'C' or 'F' layoutrs  )r   r*  r   rž  r”   rÖ  rÎ  r   ro   rV  r
   rŒ   )
r2   r«  rÔ  rÕ  r=   r   r   rc   rˆ   rb   s
   `        @r   Ú	test_kronzTestBasics.test_kron’
  s  øø€ Ø"•˜TÐ"Ñ"Ô"¥;Ñ/Ô/ˆð
	ð 
	ð 
	ð 
	ð 
	ð 
	õ ˜œ
 D¤J°´Ñ<Ô<ð	ð 	ÑˆE�5˜%à—_’_ U¨E°5Ñ9Ô9‰FˆQ�ØˆE�!�Q‰KŒKˆKˆKà×Ò˜v uÑ-Ô-Ð-å”˜‘”˜S˜S˜q˜SÔ!¥2¤8¨B¡<¤<°°°!°Ô#4Ð5ˆØ/ˆØ×Ò˜%  sµÔ0BÐÑCÔCÐCÐCÐCr    N)rÊ   rË   rÌ   r   rÒ  rÓ  rž  rÎ  rÐ  rÖ  rÜ  rß  r   r    r   rÌ  rÌ  I
  s¡   € € € € € àˆUÐ'Ð'Ð'Ñ(Ô(€FØˆUÐ'Ð'Ð'Ñ(Ô(€Fð ?Ð>Ð>€EðQð Qð Qð
'ð 
'ð 
'ðð ð ð!/ð !/ð !/ðFDð Dð Dð Dð Dr    rÌ  c                   ó   — e Zd Zd„ ZdS )Ú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„ } ||||||¦  «         d S )Nr   )Ú_copy_to_fortran_orderc                 óV  •— t          |||¦  «        D ]•\  }}}t          j        t          j        |¦  «        ¦  «                             ||¬¦  «        } | |¦  «        }	‰
                      ||¦  «        |	¦  «         ‰
                     |j        j        |	j        j        ¦  «         Œ–d S )Nrj   )	r   r   r7   ÚprodrB   ra   ÚassertNotEqualÚctypesÚdata)ÚudtÚexpectfnÚshapesr”   rI  rw   r=   rk   r   r   r2   s             €r   r«  z5TestHelpers.test_copy_to_fortran_order.<locals>.check±
  s©   ø€ Ý'.¨v°v¸vÑ'FÔ'Fð Bð BÑ#��u˜eÝ”I�bœg e™nœnÑ-Ô-×5Ò5°eÀ5Ð5ÑIÔI�à�C˜‘F”F�à×'Ò'¨¨°©¬°QÑ7Ô7Ð7à×#Ò# A¤H¤M°1´8´=ÑAÔAÐAÐAðBð Br    c                 ó   •—  ‰| ¦  «        S r   r   )r   rã  s    €r   Údirect_callz;TestHelpers.test_copy_to_fortran_order.<locals>.direct_call»
  s   ø€ à)Ð)¨!Ñ,Ô,Ð,r    )r�   r´   )r�   r£   rÈ   ri   rl   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_anyÅ
  s)   ø€ ð �s�s˜�s”V˜A”YˆFØ)Ð)¨&Ñ1Ô1Ð1r    )r�   r�   r´   )r�   r�   r£   rÈ   c                 óL   — | 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˜�s”V˜A”YˆFÝÔ$ VÑ,Ô,Ð,r    )Únumba.np.linalgrã  r   r   Úintpró  )	r2   r«  rí  rë  r”   rI  rñ  rô  rã  s	   `       @r   Útest_copy_to_fortran_orderz&TestHelpers.test_copy_to_fortran_order®
  s  øø€ Ø:Ð:Ð:Ð:Ð:Ð:ð	Bð 	Bð 	Bð 	Bð 	Bõ 
ð	-ð 	-ð 	-ð 	-ñ 
Œð	-ð ˜)Ð$ˆÝ”'�ˆØ�s�ˆØˆˆk�2Ô,¨f°f¸fÑEÔEÐEõ 
ð	2ð 	2ð 	2ð 	2ñ 
Œð	2ð
 ˜\Ð*ˆÝ”'�ˆØ�s�ˆð	-ð 	-ð 	-ð
 	ˆˆlÐ1°6¸6À6ÑJÔJÐJÐJÐJr    N)rÊ   rË   rÌ   r÷  r   r    r   rá  rá  ­
  s(   € € € € € ð&Kð &Kð &Kð &Kð &Kr    rá  Ú__main__r™  )r“   )r  r   rD  )OrÐ   r-   Ú	itertoolsr   r   ÚsysrI   Únumbersr   r   ÚplatformÚnumpyr   Únumbar   r   r	   Ú
numba.corer
   Únumba.np.numpy_supportr   Únumba.tests.supportr   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  r	  r  r  r  r  r  r"  r$  r'  r*  r,  r†  r¢  rÃ  rÑ  r  r  r%  r-  r^  rh  rv  r‰  rœ  r¤  r­  r»  rÌ  rá  rÊ   Úmainr   r    r   ú<module>r     s(  ðØ Ð Ð Ð Ø 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 
€
€
€
Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø €€€à Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð *Ð )Ð )Ð )Ð )Ð )Ø *Ð *Ð *Ð *Ð *Ð *Ø €€€ðð ð ð!ð !ð !ðð ð ð}$ð }$ð }$ð }$ð }$Ð% xñ }$ô }$ð }$ðD
ð ð ð!ð !ð !ðð ð ð ð  ð  ðð ð ð!ð !ð !ð+ð +ð +ð +ðð ð ð(ð (ð (ð (ð!ð !ð !ðð ð ð ð ð  ð  ðð ð ð"ð "ð "ð "ð ð  ð  ð  ð)ð )ð )ð )ð(ð (ð (ðð ð ð ðð ð ð#ð #ð #ð #ðð ð ðBCð BCð BCð BCð BCÐ(¨(ñ BCô BCð BCðJgIð gIð gIð gIð gI˜ñ gIô gIð gIðTN2ð N2ð N2ð N2ð N2�Nñ N2ô N2ð N2ðbPJð PJð PJð PJð PJ˜ñ PJô PJð PJðfJ$ð J$ð J$ð J$ð J$˜^ñ J$ô J$ð J$ðZ}8ð }8ð }8ð }8ð }8�Nñ }8ô }8ð }8ð@u1ð u1ð u1ð u1ð u1�>ñ u1ô u1ð u1ðp@ð @ð @ð @ð @˜ñ @ô @ð @ð.E.ð E.ð E.ð E.ð E.Ð'ñ E.ô E.ð E.ðPT2ð T2ð T2ð T2ð T2Ð'ñ T2ô T2ð T2ðnN2ð N2ð N2ð N2ð N2�^ñ N2ô N2ð N2ðby2ð y2ð y2ð y2ð y2˜nñ y2ô y2ð y2ð~>ð >ð >ð >ð >Ð&ñ >ô >ð >ðDQNð QNð QNð QNð QN�^ñ QNô QNð QNðhD2ð D2ð D2ð D2ð D2Ð,ñ D2ô D2ð D2ðN?Pð ?Pð ?Pð ?Pð ?P˜Nñ ?Pô ?Pð ?PðDQMð QMð QMð QMð QM�ñ QMô QMð QMðhaDð aDð aDð aDð aDÐ"ñ aDô aDð aDðH'Kð 'Kð 'Kð 'Kð 'K�(ñ 'Kô 'Kð 'KðR ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr    