§
    ƒÛgbw ã                   ó¬  — d dl Z d dlZd dlmZmZ d dlZd dlZd dlmZm	Z	 d dl
Z
d dlZd dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZ ddlmZ d dlZd	„ Zd
„ Zd„ Z G d„ dee¦  «        Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%dLd„Z&d„ Z'dMd„Z(d„ Z)dNd„Z*d„ Z+d„ Z,dOd„Z-dOd„Z.dOd„Z/d „ Z0dPd!„Z1d"„ Z2dOd#„Z3d$„ Z4 G d%„ d&ee¦  «        Z5 G d'„ d(e¦  «        Z6 G d)„ d*e5¦  «        Z7 G d+„ d,e5¦  «        Z8 G d-„ d.e5¦  «        Z9 G d/„ d0e5¦  «        Z: G d1„ d2e5¦  «        Z; G d3„ d4e5¦  «        Z< G d5„ d6e<¦  «        Z= G d7„ d8e<¦  «        Z> G d9„ d:e5¦  «        Z? G d;„ d<e5¦  «        Z@ G d=„ d>e<¦  «        ZA G d?„ d@e5¦  «        ZB G dA„ dBe<¦  «        ZC G dC„ dDe5¦  «        ZD G dE„ dFe5¦  «        ZE G dG„ dHe<¦  «        ZF G dI„ dJe¦  «        ZGeHdKk    r ejI        ¦   «          dS dS )Qé    N)ÚproductÚcycle)ÚNumberÚIntegral)ÚjitÚnjitÚtypeof)Úerrors)ÚTestCaseÚtagÚneeds_lapackÚ
needs_blasÚ
_is_armv7lÚEnableNRTStatsMixiné   )Úmatmul_usecasec                 ó,   — t          j        | |¦  «        S ©N©ÚnpÚdot©ÚaÚbs     úM/granary/edev/quantum/lib/python3.11/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                   óf  ‡ — e Zd ZdZej        ej        ej        ej        fZ	ˆ fd„Z
d„ Zd„ Zej        d„ ¦   «         Zd„ Zd„ Zd„ Zdd
„Zdd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z ˆ xZ!S )ÚTestProductz!
    Tests for dot products.
    c                 ó|   •— t          j        ¦   «          t          t          | ¦  «                             ¦   «          d S r   )ÚgcÚcollectÚsuperr(   ÚsetUp©ÚselfÚ	__class__s    €r   r-   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©r/   Ú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)r/   Úmr9   r:   s       r   Úsample_matrixzTestProduct.sample_matrix4   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)r/   ÚpyfuncÚws      r   Úcheck_contiguity_warningz$TestProduct.check_contiguity_warning7   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)r/   rV   ÚcfuncÚargsÚexpectedÚgots         r   Ú
check_funczTestProduct.check_funcF   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_contiguousr?   Úshape)r/   Úarrri   ÚdatasizeÚtmpÚiÚnews          r   Ú_aligned_copyzTestProduct._aligned_copyN   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!   TrZ   )r   ry   r   Úcopyr\   rK   r]   )r/   rV   r^   r_   r!   Úcopierr`   ra   s           r   Úcheck_func_outzTestProduct.check_func_outc   s  € Ý'1Ð>�Ô#Ð#µr´wˆØ×!Ò!Ñ#Ô#ð 	ð 	Ø�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Ú
ValueErrorrM   rN   Ú	exception)r/   r^   r_   Úis_outÚraisesÚmsgs         r   Úassert_mismatching_sizesz$TestProduct.assert_mismatching_sizesm   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
   ÚTypingErrorrM   rN   r�   )r/   r^   r_   Ú	func_namerƒ   s        r   Úassert_mismatching_dtypesz%TestProduct.assert_mismatching_dtypest   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<   rb   r   Úfloat64r…   Úfloat32rŠ   )r/   rV   r‰   r9   r^   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   ©r/   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ÚCFrf   r�   )rA   r   r‘   r{   r<   r�   )r@   r9   rg   r   r   r:   r/   s         €r   Úsamplesz)TestProduct.check_dot_vm.<locals>.samplesž   sÝ   øè è € Øð ð �Ø×&Ò& q¨!­R¬ZÑ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Œ   rd   rž   r   ©r‚   )r   rb   ÚTr   rk   r:   r}   rA   r‘   r<   r…   r’   rŠ   )r/   Úpyfunc2Úpyfunc3r‰   r�   Úcfunc2Úcfunc3r@   r9   r   r   r!   s   `           r   Úcheck_dot_vmzTestProduct.check_dot_vmœ   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   rA   r   r‘   r{   r�   )	r@   r9   ÚkÚorder_aÚorder_br   r   r:   r/   s	           €r   r�   z)TestProduct.check_dot_mm.<locals>.samplesÝ   s  øè è € Ý$+¨D°$Ñ$7Ô$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   rd   r¯   r   r    )r   rb   r¡   r   rk   r:   r}   rA   r‘   r…   r’   rŠ   )r/   r¢   r£   r‰   r�   r¤   r¥   r@   r9   r¬   r   r   r!   s   `            r   Úcheck_dot_mmzTestProduct.check_dot_mmÛ   s=  ø€ ð
	#ð 
	#ð 
	#ð 
	#ð 
	#ð $•˜dÐ#Ñ#Ô# GÑ,Ô,ˆØÐØ'•S $Ð'Ñ'Ô'¨Ñ0Ô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_mm.  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‘   rA   rk   r   r   rX   Úpy_funcr#   r<   r%   )	r/   r@   r¬   r9   r:   r   r   r!   r^   s	            r   Útest_contiguity_warningsz$TestProduct.test_contiguity_warnings5  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)F)r†   )"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r‘   r’   Ú
complex128Ú	complex64r�   r-   r<   rA   Ú
contextlibÚcontextmanagerrX   rb   ry   r}   r…   rŠ   r“   r   r–   r˜   r¦   r¨   r±   r³   r¶   r¸   r»   r¾   Ú__classcell__©r0   s   @r   r(   r(      s  ø€ € € € € ðð ð Œj˜"œ* 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ðð ð ð ð r   r(   c                 ó@   — t           j                             | ¦  «        S r   ©r   ÚlinalgÚinv©r   s    r   Úinvert_matrixrÎ   N  ó   € ÝŒ9�=Š=˜ÑÔÐr   c                 ó@   — t           j                             | ¦  «        S r   )r   rË   ÚcholeskyrÍ   s    r   Úcholesky_matrixrÒ   R  ó   € ÝŒ9×Ò˜aÑ Ô Ð r   c                 ó@   — t           j                             | ¦  «        S r   )r   rË   ÚeigrÍ   s    r   Ú
eig_matrixrÖ   V  rÏ   r   c                 ó@   — t           j                             | ¦  «        S r   )r   rË   ÚeigvalsrÍ   s    r   Úeigvals_matrixrÙ   Z  ó   € ÝŒ9×Ò˜QÑÔÐr   c                 ó@   — t           j                             | ¦  «        S r   )r   rË   ÚeighrÍ   s    r   Úeigh_matrixrÝ   ^  ó   € ÝŒ9�>Š>˜!ÑÔÐr   c                 ó@   — t           j                             | ¦  «        S r   )r   rË   ÚeigvalshrÍ   s    r   Úeigvalsh_matrixrá   b  rÓ   r   c                 óB   — t           j                             | |¦  «        S r   ©r   rË   Úsvd)r   Úfull_matricess     r   Ú
svd_matrixræ   f  s   € ÝŒ9�=Š=˜˜MÑ*Ô*Ð*r   c                 ó@   — t           j                             | ¦  «        S r   ©r   rË   ÚqrrÍ   s    r   Ú	qr_matrixrê   j  s   € ÝŒ9�<Š<˜‰?Œ?Ðr   r�   c                 óD   — t           j                             | ||¦  «        S r   ©r   rË   Úlstsq)ÚAÚBÚrconds      r   Úlstsq_systemrñ   n  s   € ÝŒ9�?Š?˜1˜a Ñ'Ô'Ð'r   c                 óB   — t           j                             | |¦  «        S r   ©r   rË   Úsolve)rî   rï   s     r   Úsolve_systemrõ   r  s   € ÝŒ9�?Š?˜1˜aÑ Ô Ð r   çVçž¯Ò<c                 ó@   — t           j                             | ¦  «        S r   ©r   rË   Úpinv)rî   rð   s     r   Úpinv_matrixrú   v  rÞ   r   c                 ó@   — t           j                             | ¦  «        S r   ©r   rË   ÚslogdetrÍ   s    r   Úslogdet_matrixrþ   z  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   r9   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   r-   r.   s    €r   r-   zTestLinalgBase.setUpª  s0   ø€ å
Œ
‰ŒˆÝ�n˜dÑ#Ô#×)Ò)Ñ+Ô+Ð+Ð+Ð+r   c                 óÊ   — t          j        |¦  «        }t          |t           j        ¦  «        r|dz  dz                        |¦  «        S |dz  dz                        |¦  «        S r2   r3   r8   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.)rh   re   ú order must be one of 'F' or 'C'.ú*dtype must be a numpy floating point type.Nú/Only one of rank or condition can be specified.r   úCondition number must be >=1.r   ú+Negative dimensions given for matrix shape.úRank must be greater than zero.úRank must an integer.ú"Rank given greater than full rank.ú8Condition number was specified for a vector (always 1.).r�   ©r:   rg   )rJ   r€   r   r’   r‘   rÄ   rÃ   ÚrandomÚseedÚminÚ
isinstancer   Úmaxr<   r?   rË   ré   ÚlinspaceÚzerosÚnonzeroÚeyer   r¡   Úarray)r/   ri   r:   rg   ÚrankÚ	conditionÚd_condr@   r9   ÚminmnÚrvÚmaxmnÚQrv   ÚUÚ_ÚVÚsvÚSÚidxs                       r   Úspecific_sample_matrixz%TestLinalgBase.specific_sample_matrix¸  sê  € ð  ˆåˆt‰9Œ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   rM   rN   r�   )r/   r^   r_   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.©rJ  r   rË   ÚLinAlgError©r/   r^   r_   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©rJ  r
   rˆ   ©r/   Únamer^   r_   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 arraysrQ  ©r/   rS  r^   r_   Ú	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.rL  rN  s       r   Úassert_no_nan_or_infz#TestLinalgBase.assert_no_nan_or_inf  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.re   rh   zUnknown contigN)	r3  ÚtupleÚassert_contig_sanityr   ro   rr   Úf_contiguousÚ
assertTruer€   )r/   ra   Úexpected_contigr   Úc_contigÚf_contigr„   s          r   r`  z#TestLinalgBase.assert_contig_sanity"  sù   € õ �c�5Ñ!Ô!ð 	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.©rI  rL  rN  s       r   Úassert_raise_on_singularz'TestLinalgBase.assert_raise_on_singularG  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�   éþÿÿÿrd   é   Né
   éd   )	rP   rs   r   r8  r:   ÚfinfoÚ
resolutionÚtestingÚassert_allclose)r/   ra   ÚrtolÚatolr8  ro  s         r   Úassert_is_identity_matrixz(TestLinalgBase.assert_is_identity_matrixK  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)rJ  r€   rN  s       r   Úassert_invalid_norm_kindz'TestLinalgBase.assert_invalid_norm_kind[  s)   € ð 1ˆØ×Ò˜%  s­JÑ7Ô7Ð7Ð7Ð7r   c                 óX   — d}|                       |||t          j        j        ¦  «         d S )NzArrays cannot be emptyrL  rN  s       r   Úassert_raise_on_emptyz$TestLinalgBase.assert_raise_on_emptyb  s,   € Ø&ˆØ×Ò˜%  s­B¬IÔ,AÑBÔBÐBÐBÐBr   )NN©T)r¿   rÀ   rÁ   rÂ   r   r‘   r’   rÃ   rÄ   r�   r-   r<   rG  r€   rJ  rO  rT  r[  r]  r`  rh  rt  rv  rx  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 )"NrG  ©©é   r   ©é   rk  ©rk  r�  ©rŒ   rŒ   ©r   r  ÚFCr   ©r:  rk  r$  ©rr  rs  ç      $@©r;  c                 óÆ   •— ‰                      |¦  «        5 } ‰j        | Ž  d d d ¦  «         n# 1 swxY w Y   ‰                     |t          |j        ¦  «        ¦  «         d S r   )r   rG  rM   rN   r�   )r_   r„   rI  rƒ   Úinstr/   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ž   rh   rg  r%  ©r   r&  Úzr'  r(  r)  r�   r*  )rŸ   éýÿÿÿr+  r-  r°   r.  )r   rŒ   rl  r,  g      ø?)r   r   r�   r2  rG  rP   rs   r   rË   r  rn  ro  rp  rq  r  r€   r   ÚAssertionErrorr‘   Úint32)r/   Úsizesri   r:   rg   r@   r9   r=  rî   r:  ro  r;  rŒ  rƒ   r„   r‹  s   `              @r   Útest_specific_sample_matrixz.TestTestLinalgBase.test_specific_sample_matrixm  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{  g  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
        rl  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 )Nrh   Frl  ©ÚnulpT)	rÎ   r`  r   rp  Úassert_array_almost_equal_nulpr‘  r   rt  r\   )r   Úkwargsr`   ra   Úuse_reconstructionÚrecr^   r/   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Ÿ   rd   N)r   rÎ   r   r�   rG  r   rk   rO  ÚonesrT  r’  r[  rh  r6  )r/   r9   r   r:   rg   r   r^   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©r$  rŒ   rŸ   r  ©éûÿÿÿr°   rŸ   rŒ   ©é	   r�  r   r   ©rŸ   rj  rŸ   é   rh   rf   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   r9  r{   r   r½   rp  rq  )r/   r°  ÚX_origr²  r`   ra   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   r0  r1  ÚrandrË   ré   r4   r   r¡   Údiagr9  )	r/   r@   r:   rg   rî   ÚqrB  ÚLr@  s	            r   rA   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.rL  rN  s       r   Úassert_not_pdz TestLinalgCholesky.assert_not_pd3  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
        rl  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 )NFre   rl  rš  Trk  r‡  )rÒ   r`  r   rp  rœ  r‘  r   Úconjr¡   rn  r:   ro  rq  r\   )r   r`   ra   rž  rŸ  ro  r^   r/   s         €€r   r   z6TestLinalgCholesky.test_linalg_cholesky.<locals>.check?  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ž   rd   r¢  r°   rŸ   N)r   rÒ   r   r�   rA   r   rk   rO  r£  r‘   rT  r’  r[  r¿  r?   )r/   r9   r   r:   rg   r   Úrnr^   s   `      @r   Útest_linalg_choleskyz'TestLinalgCholesky.test_linalg_cholesky7  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Â   rA   r¿  r   rÄ  r•  r   r   r¸  r¸  "  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»  r7  r8  rs   r9  )r/   r@   r:   rg   Úvr@  rF  s          r   rA   z$TestLinalgEigenSystems.sample_matrixz  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.)rJ  rR  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   FTrh   rl  rš  rk  r�   Úhr   r‡  )r½   rP   rJ   r3  r_  Úndimr`  rm   r   rp  rœ  r‘  rn  r:   ro  r7  r8  rs   rÂ  Úrealr»  Údiag_indicesr   rq  ÚiscomplexobjÚimagÚsortr\   )r_   r`   ra   r   Úres_is_tuplerž  r¬   ro  rW   rÈ  ÚidxlÚidxuÚlhsÚrhsr^   Úexpected_res_lenrS  r/   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•  )r/   r^   rS  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 ]/}|                      |||                     |¦  «        f¦  «         Œ.dS dS )z$
        Test np.linalg.eig
        rl  Tr�   r…  r¡  rd   rž   r¢  r$  ç       @r   rj  rŸ   N)r   rÛ  r   r�   rA   r   r’   rÄ   rk   rO  r£  rT  r’  r[  r]  r9  ÚinfÚnanr7   rÃ   rb  ÚanyrÒ  r‘   rÊ  )r/   rS  ÚfuncrÙ  rÚ  r9   r^   r   r:   rg   r   Útyrî   ÚlrB  s                  r   Úchecker_for_linalg_eigz-TestLinalgEigenSystems.checker_for_linalg_eigé  sr  € ð
 ˆØ"•˜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ð(:ñ (:ô (:ð '<ñ=ô =ð =ð =ð #ð 	Kõ ”˜1˜b˜' A q 6Ð*Ñ+Ô+ˆAØˆE�!—(’(�2œ=Ñ)Ô)Ñ*Ô*Ð*à�4˜‘7”7‰DˆAˆqØ�OŠO�BœF 1¤6™NœNÑ+Ô+Ð+õ ”z¥2¤:Ð.ð Kð K�Ø×,Ò,¨T°5¸1¿8º8ÀB¹<¼<¸/ÑJÔJÐJÐJð/	Kð 	Kð,Kð K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_eigvals+  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_eigh/  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_eigvalsh3  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>.funcD  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  rh   )rg   r:   F)Úgetattrr   rË   r   rÛ  r‘   rÃ   ÚsubTestr9  r{   r½   rp  rq  )r/   Úcr@   ÚnoutÚdomain_changerá  r   r:   r°  rµ  r`   ra   rï  s               @r   r¶  z-TestLinalgEigenSystems.test_no_input_mutation7  s¿  ø€ ð*ð $	$ñ $	$ˆAð
 &'Ñ"ˆAˆt�]å�2œ9 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Â   rA   rÊ  rÛ  rä  r   ræ  rè  rê  rì  r¶  r•  r   r   rÆ  rÆ  u  s  € € € € € ðð ð	ð 	ð 	ð,ð ,ð ,ð^ð ^ð ^ðB IMð<Kð <Kð <Kð <Kð| ð@ð @ñ „\ð@ð ð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   rl  rm  r‡  )rm   rJ   rP   rs   r   r6  Úfill_diagonalr   rn  r:   ro  rp  rq  )r/   r   ra   r`   ÚurD  Úvtr¬   ÚsrŸ  ro  s              r   Úcheck_reconstructionz"TestLinalgSvd.check_reconstructionm  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Œ   rh   Frl  rš  T)ræ   rP   rJ   r`  rm   r   rp  rœ  r‘  rü  r\   )r   r�  r`   ra   rž  r¬   r^   r/   s         €€r   r   z,TestLinalgSvd.test_linalg_svd.<locals>.checkˆ  s·  ø€ Ý! !Ð.Ð. vÐ.Ð.ˆHØ�%˜Ð$Ð$˜VÐ$Ð$ˆCà×Ò�S ™]œ]­C°©H¬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  rk  )rk  r  rƒ  r„  )TFr…  )rå   rä   r¢  rd   rl  r$  rÝ  ©©r   r   ©r   r   r¡  N)r   ræ   r   r�   rG  rT  r   r£  r’  r[  r‘   r]  r9  rÞ  rß  rk   rx  )r/   r   r“  rå   ri   r:   Úfmatrg   r   rÃ  Úszr_   r^   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«  rh   rf   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   r9  r{   r   r½   rp  rq  Úzipr‘  rü  ©r/   r°  rµ  rá  r`   ra   Ú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ö  b  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Ÿ   rh   Frl  rš  Trm  r‡  )rê   rP   rJ   r`  rm   r   rp  rœ  r‘  rs   r   rn  r:   ro  rq  rt  Ú	conjugater¡   r\   )r   r�  r`   ra   rž  r¬   r¼  ÚrrŸ  ro  r^   r/   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¢  rd   rl  r$  rÝ  rÿ  N)r   rê   r   r�   rG  rT  r   r£  r’  r[  r‘   r]  r9  rÞ  rß  rx  rk   )
r/   r   r“  ri   r:   rg   r   rÃ  r  r^   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«  rh   rf   Tr�   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S r®  rè   r¯  s     r   rá  z1TestLinalgQr.test_no_input_mutation.<locals>.funcI  s1   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9—<’< ‘?”?Ð"r   F)r   r9  r{   r   r½   rp  rq  r  r  s           r   r¶  z#TestLinalgQr.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Ñ-Ô-Ð-å˜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 )NrV  r   rW  z%() only supported on 1 and 2-D arraysrQ  rX  s          r   Úassert_wrong_dimensions_1Dz,TestLinalgSystems.assert_wrong_dimensions_1Da  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.rL  rN  s       r   Úassert_dimensionally_invalidz.TestLinalgSystems.assert_dimensionally_invalidg  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.rQ  rR  s        r   Úassert_homogeneous_dtypesz+TestLinalgSystems.assert_homogeneous_dtypesl  s0   € ØQÐTXÑXˆØ×Ò˜%  s­FÔ,>Ñ?Ô?Ð?Ð?Ð?r   Nry  )r¿   rÀ   rÁ   rÂ   r  r  r  r•  r   r   r  r  Z  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°   re   FrŸ   rl  rš  T)r   r   rŒ   r‡  rm  r$  r   rˆ  ©rr  )rñ   rP   rJ   r`  rm   r   rp  rœ  r‘  r3  Úndarrayrs   rb  Úabsrn  r:   ro  r   rq  rË   r  ÚassertGreaterr  r\   )rî   rï   r�  r`   ra   rž  r¬   ÚxÚresr:  rû  Úout_array_idxro  rŸ  rò  Úres_expectedÚres_gotr^   r/   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}  rh   re   rˆ  c                 ó  •— d}|D ]x}t          ‰	¦  «        }‰
                     | j        d         |f||¦  «        } ‰| |fi |¤Ž t          ‰	¦  «        }|d d …df                              |¬¦  «        } ‰| |fi |¤Ž Œyd S )N©r   é   r   rf   )ÚnextrG  rs   r{   )rî   Údtr�  Úb_sizesÚb_sizeÚb_orderrï   rv   r   Úcycle_orderr/   s           €€€r   Úinner_test_loop_fnz=TestLinalgLstsq.test_linalg_lstsq.<locals>.inner_test_loop_fnõ  s¼   ø€ àˆGà!ð (ð (�õ ˜{Ñ+Ô+�Ø×/Ò/Ø”W˜Q”Z Ð(¨"¨gñ7ô 7�à��a˜Ð%Ð%˜fÐ%Ð%Ð%õ ˜{Ñ+Ô+�Ø˜˜˜˜1˜”g—l’l¨�lÑ1Ô1�Ø��a˜Ð'Ð' Ð'Ð'Ð'Ð'ð(ð (r   r   r†  r‰  r$  ©rð   r   rŽ  r  ©r   r   ©r   rÝ  ç      @ç      @rd   rí   rŸ   rŒ   r°   rk  é   r  r¬  N)r   rñ   r   r�   r,  rG  r2  r   rk   rx  r9  r‘   r’  rT  r’   r  r[  rÞ  rß  r]  r  r  )r/   r“  Úcycle_dtÚordersÚspecific_condr2  Úa_sizer-  Úa_orderrî   r@   r9   r=  r  rð   Úapprox_half_rank_rcondÚemptiesr   r_   ÚokrÃ  ÚbadÚoneDÚbad1DÚbad2Dr^   r   r1  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)r$  g)\�Âõ(@g®Gáz@)r$  gš™™™™™@r7  )r$  g      @gffffff@)r$  gffffffò?g�Âõ(\�@)r$  gáz®Gá@g)\�Âõ(
@)r$  g�Âõ(\�ö?gÍÌÌÌÌÌ@rh   rf   )r$  rÝ  r6  r7  ç      @g      @Tr�   c                 ób   — |r| dd…d d …f         } t           j                             | |¦  «        S r®  rì   ©r°  Úyr±  s      r   Úf2z*TestLinalgLstsq.test_issue3368.<locals>.f2n  ó5   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9—?’? 1 aÑ(Ô(Ð(r   F)r   r9  r{   r   rp  rq  )r/   r°  rµ  rJ  rK  s        r   Útest_issue3368zTestLinalgLstsq.test_issue3368b  sÓ   € åŒHÐ&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&ð)ð
 14ð5ñ 5ô 5ˆõ ”˜‘”ˆÝŒHÐ-Ð-Ð-Ñ.Ô.ˆå	�dÐ	Ñ	Ô	ð	)ð 	)ñ 
Ô	ð	)ð 	ˆˆ1ˆa�‰ŒˆÝ
Œ
×"Ò" 1 fÑ-Ô-Ð-Ð-Ð-r   N)r¿   rÀ   rÁ   rÂ   r   rE  rM  r•  r   r   r  r  q  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 )Nrh   Frl  rš  Trm  r‡  )rõ   r`  r   rp  rœ  r‘  rP   rs   r   rn  r:   ro  rq  r\   )
r   r   r�  r`   ra   rž  rŸ  ro  r^   r/   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)r4  rƒ  ©r  r  r…  r*  r   Nrf   r¡  r5  r$  ç        rd   rô   r   rŸ   rŒ   r°   rÝ  rk  r8  r  r¬  r6  r¢  re   r†  )r   rõ   r   r�   rG  rs   r{   r   rk   r9  r‘   r’  rT  r’   r  r[  rÞ  rß  r]  r  r  rh  )r/   r   r“  ri   r:   rg   rî   r.  r/  r0  rï   rv   r@  rÃ  rA  Úok_oneDrC  rD  r^   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)r$  r   r   r   )rS  r   r   r   )rS  r   r   r   )r$  r   r   r   rh   rf   )r$  rÝ  r6  r°   Tr�   c                 ób   — |r| dd…d d …f         } t           j                             | |¦  «        S r®  ró   rI  s      r   rá  z4TestLinalgSolve.test_no_input_mutation.<locals>.funcþ  rL  r   Fr´  )r/   r°  rµ  rJ  Úy_origrá  r`   ra   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   rU  r¶  r•  r   r   rO  rO  y  sX   € € € € € ðð ð ðr:ð r:ñ „\ðr:ðh ð2ð 2ñ „\ð2ð 2ð 2r   rO  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 )Nrh   Frl  rš  Trk  rm  r‡  r   r   r�   )rú   r`  r   rp  rœ  r‘  rP   rs   r   rt  rn  r:   ro  rq  r   rñ   r8  r7   Ú
assertLessrË   r  r\   )r   r�  r`   ra   rž  rŸ  ro  rí   Ú
lstsq_pinvr^   r/   s            €€r   r   z.TestLinalgPinv.test_linalg_pinv.<locals>.check  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‰  r$  r3  )r   r  rù   r¢  rd   rl  rÝ  N)r   rú   r   r�   rG  r2  r   rk   rT  r£  r’  r[  r‘   r]  r9  rÞ  rß  )r/   r   r“  r;  ri   r:   rg   r   r@   r9   r=  rð   r>  r  rÃ  r^   s   `              @r   Útest_linalg_pinvzTestLinalgPinv.test_linalg_pinv  s  øø€ ð
 #•˜TÐ"Ñ"Ô"¥;Ñ/Ô/ˆð@	#ð @	#ð @	#ð @	#ð @	#ð @	#ðH ;Ð:Ð:ˆð ˆõ ˜˜tœ{¨DÑ1Ô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«  rh   rf   )r   r°   r°   )r   r   r9  r{   r?   r½   rp  rq  )r/   rb  Úv_dataÚv_origÚ
reshaped_vr`   ra   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   r_  rf  r•  r   r   rZ  rZ    s[   € € € € € ðð ð ðqAð qAñ „\ðqAðf ð2ð 2ñ „\ð2ð 2ð 2r   rZ  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 ©Nrk  r   )r  r   rn  r:   ro  rp  rq  r\   )r/   r^   r   r�  r`   ra   ro  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   rl  rš  rk  r   r‡  )rþ   rP   rJ   rm   r   rÑ  r:   Útyperp  rœ  rn  ro  rq  r\   )	r/   r^   r   r�  r`   ra   r¬   Úgot_convro  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)r4  )r°   r°   rR  r…  rƒ  rd   r¡  r¢  rl  r$  rÝ  )r   r�   rG  r   r6  rk   rT  r£  r’  r[  r‘   r]  r9  rÞ  rß  )	r/   rÃ  r   r^   r“  ri   r:   rg   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  rq  rk  ©r/   r^   s     r   Útest_linalg_detz'TestLinalgDetAndSlogdet.test_linalg_detú  s:   € à"•˜TÐ"Ñ"Ô"¥:Ñ.Ô.ˆØ�Š�U˜DœN¨EÑ2Ô2Ð2Ð2Ð2r   c                 óz   —  t          d¬¦  «        t          ¦  «        }|                      d| j        |¦  «         d S )NTr�   rý   )r   rþ   rq  ro  rs  s     r   Útest_linalg_slogdetz+TestLinalgDetAndSlogdet.test_linalg_slogdetÿ  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«  rh   rf   Tr�   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S r®  rü   r¯  s     r   rá  z<TestLinalgDetAndSlogdet.test_no_input_mutation.<locals>.func  s5   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9×$Ò$ QÑ'Ô'Ð'r   Fr´  ©r/   r°  rµ  rá  r`   ra   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Â   rk  ro  rq  r   rt  rv  r¶  r•  r   r   rh  rh  ¡  s¡   € € € € € ðð ðð ð ð!ð !ð !ðFAð Að AðB ð3ð 3ñ „\ð3ð ð;ð ;ñ „\ð;ð ð2ð 2ñ „\ð2ð 2ð 2r   rh  c                   ó(   — e Zd ZdZe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 rj  )
r  rb  r   rÑ  rn  r:   ro  rp  rq  r\   ©r   r�  r`   ra   ro  r^   r/   s        €€r   r   z.TestLinalgNorm.test_linalg_norm.<locals>.check,  ó  ø€ Ý" 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Ÿ   rj  rk  gÍÌÌÌÌÌ@g333333À)r  rl  rŒ   r}  r…  )é   r+  r°   r5  r/  rS  r¡  r  r¢  rd   é   r$  rÝ  r6  r7  r8  )r   r  r   rÞ  r   r�   r<   rG  rk   rP   rT  r£  r’  r  r‘   r?   r]  r9  rß  rv  )r/   r   r“  Ú	nrm_typesri   r:   Únrm_typer   rg   rÃ  r^   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   N)r¿   rÀ   rÁ   rÂ   r   r…  r•  r   r   r{  r{     sC   € € € € € ðð ð ð`Nð `Nñ „\ð`Nð `Nð `N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 rj  )
r	  rb  r   rÑ  rn  r:   ro  rp  rq  r\   r~  s        €€r   r   z.TestLinalgCond.test_linalg_cond.<locals>.check–  r  r€  Nr   r�   rŸ   rj  rƒ  rR  r…  )r  )r~  r€  r‚  r„  rÿ  r   rd   g Èë…óÌágš™™™™™¹?Úignorer  r¢  rl  r$  rÝ  r6  r7  r8  )r   r	  r   rÞ  r   r�   rG  rx  rk   r9  r‘   rE   rF   rG   ÚRuntimeWarningrT  r£  r’  r[  r]  rß  rv  )r/   r   Úpsr“  ri   r:   rg   r  r   r  r$  rÃ  r^   s   `           @r   Útest_linalg_condzTestLinalgCond.test_linalg_condŽ  sŠ  øø€ ð #•˜TÐ"Ñ"Ô"¥;Ñ/Ô/ˆð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð" •B”F�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   rp  rq  r\   )r   r�  r`   ra   r^   r/   s       €€r   r   z;TestLinalgMatrixRank.test_linalg_matrix_rank.<locals>.checkê  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†  rS  Nr$  ù              ð?y›+¡†›„=›+¡†›„=r   g›+¡†›„=)r  )r�   r�   rk  rd   rÿ  )Nr’  r  r¢  r‚  rŸ   rŒ   rÝ  )r   r  r   r�   rG  rm   r2  rP   rs   r   r7  r8  rÑ  r0  rº  r7   r6  rx  rk   rT  r£  r’  r  r‘   r?   r]  r9  rÞ  rß  )r/   r   r“  ri   r:   rg   r   r  r¬   r@   r9   rF  r   r-  r  rÃ  r^   s   `               @r   Útest_linalg_matrix_rankz,TestLinalgMatrixRank.test_linalg_matrix_rankâ  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«  rh   rf   Tr�   c                 ó`   — |r| dd…d d …f         } t           j                             | ¦  «        S r®  r  r¯  s     r   rá  z9TestLinalgMatrixRank.test_no_input_mutation.<locals>.funcT	  s5   € àð à�a˜�c˜1˜1˜1�f”I�Ý”9×(Ò(¨Ñ+Ô+Ð+r   Fr´  ry  s         r   r¶  z+TestLinalgMatrixRank.test_no_input_mutationG	  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ˆ   )r/   r^   r_   s      r   Úassert_int_exponenentz+TestLinalgMatrixPower.assert_int_exponenenti	  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 )Nre   rk  r‡  )	r  r`  r   rn  r:   ro  rp  rq  r\   )r   Úpwrr`   ra   r%  r^   r/   s        €€r   r   z=TestLinalgMatrixPower.test_linalg_matrix_power.<locals>.checkt	  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*)r4  ©rk  rk  rR  ißÿÿÿiïÿÿÿéöÿÿÿrl  r�  é!   r…  r¡  r/  r  r¢  rd   r   )rŒ   rk  zinput must be a square arrayç333333ó?rS  r   r�   )r   r  Úlistrm   r   r�   rG  r   rk   rT  r£  r’  rJ  r[  r‘   r›  rh  r9  )r/   r   r“  Úpowersri   rž  r:   rg   r   rÃ  r_   r„   r^   s   `           @r   Útest_linalg_matrix_powerz.TestLinalgMatrixPower.test_linalg_matrix_powerp	  s+  øø€ à"•˜TÐ"Ñ"Ô"Õ#6Ñ7Ô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˜  d	  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§  r-   r   r  Úcfunc_w_offsetr  Úcfunc_no_offsetr.   s    €r   r-   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š  )r/   r^   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  rk  r‡  )r  r©  r  rª  r   rn  r:   ro  rp  rq  r\   )r   r�  r`   r^   ra   r%  r/   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   rl  )r�  r‚  r+  r…  )r  r   r¡  r/  r  rd   r   Fr¢  r¢  )r£  rm   r   r�   rG  r   rk   r[  r©  r£  r‘   rª  r¬  )
r/   r   r“  Úoffsetsri   r  r:   rg   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Ÿ  rd   Nz(expected array(float64, 2d, A), got None)	r   r   r£  r‘   r   Ú	TypeErrorrN   r�   rP   )r/   r³  r   rƒ   Úerrmsgs        r   Útest_trace_w_optional_inputz%TestTrace.test_trace_w_optional_inputê	  sñ   € å	Ð(°4Ð	8Ñ	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Â   r-   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)rh   re   re   rh   )re   rh   re   rh   )r~  rƒ  r„  )r  rŽ  )rŒ   r6  rG  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   rd   F)r  r   r9  r‘   r£  )r/   rÃ  r^   s      r   Ú_assert_wrong_dimzTestBasics._assert_wrong_dim
  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   rf   )r3  r_  rJ   r<   r?   )r/   ri   r:   rg   s       r   Ú
_gen_inputzTestBasics._gen_input

  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Ñ  )r/   Úsize1Úsize2r:   r   r   s         r   Ú
_get_inputzTestBasics._get_input
  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 )Nrk  r‡  r!   )	r  r   rn  Úasarrayr:   ro  rp  rq  r\   ©r   r   r�  r`   ra   r%  r^   r/   s         €€r   r   z$TestBasics.test_outer.<locals>.check#
  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>rd   r    r  )r   r  r   r�   r   r“  r,  rÂ  r   rk   rÅ  ri   r:   rº  )
r/   r   ÚdtsrÀ  rÁ  r:   r   r   rò  r^   s
   `        @r   Ú
test_outerzTestBasics.test_outer 
  s  øø€ Ø"•˜TÐ"Ñ"Ô"¥<Ñ0Ô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 )Nrk  r‡  )	r  r   rn  rÅ  r:   ro  rp  rq  r\   rÆ  s         €€r   r   z#TestBasics.test_kron.<locals>.checkF
  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  rl  rŸ   zonly supports 'C' or 'F' layoutrg  )r   r  r   r“  r�   rÂ  rº  r   rk   rJ  r
   rˆ   )
r/   r   rÀ  rÁ  r:   r   r   r_   r„   r^   s
   `        @r   Ú	test_kronzTestBasics.test_kronC
  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¸  ú	  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 )Nrf   )	r   r   r4   Úprodr?   r]   ÚassertNotEqualÚctypesÚdata)ÚudtÚexpectfnÚshapesr�   r:  rs   r:   rg   r   r  r/   s             €r   r   z5TestHelpers.test_copy_to_fortran_order.<locals>.checkb
  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_calll
  s   ø€ à)Ð)¨!Ñ,Ô,Ð,r   )rŒ   r°   )rŒ   rŸ   rk  re   rh   c                 ó<   •— | d d d…         d         } ‰|¦  «        S ©NrŸ   r   r•  )r   ÚslicedrÏ  s     €r   Úslice_to_anyz<TestHelpers.test_copy_to_fortran_order.<locals>.slice_to_anyv
  s)   ø€ ð �s�s˜�s”V˜A”YˆFØ)Ð)¨&Ñ1Ô1Ð1r   )rŒ   rŒ   r°   )rŒ   rŒ   rŸ   rk  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ß  )	r/   r   rÙ  r×  r�   r:  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   r5  )JrÅ   r*   Ú	itertoolsr   r   ÚsysrE   Únumbersr   r   ÚplatformÚnumpyr   Únumbar   r   r	   Ú
numba.corer
   Únumba.tests.supportr   r   r   r   r   r   r   Úunittestr   r#   r%   r(   rÎ   rÒ   rÖ   rÙ   rÝ   rá   ræ   rê   rñ   rõ   rú   rþ   r  r  r	  r  r  r  r  r  r  r   r{  r—  r¸  rÆ  rö  r  r  r  rO  rZ  rh  r{  r‡  r�  r˜  r§  r¸  rÍ  r¿   Úmainr•  r   r   ú<module>rï     s  ðØ Ð Ð Ð Ø 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 
€
€
€
Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø €€€à Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðBð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bà *Ð *Ð *Ð *Ð *Ð *Ø €€€ðð ð ð!ð !ð !ðð ð ðjð jð jð jð jÐ% xñ jô jð jð^	ð ð ð!ð !ð !ðð ð ð ð  ð  ðð ð ð!ð !ð !ð+ð +ð +ð +ðð ð ð(ð (ð (ð (ð!ð !ð !ðð ð ð ð ð  ð  ðð ð ð"ð "ð "ð "ð ð  ð  ð  ð)ð )ð )ð )ð(ð (ð (ðð ð ð ðð ð ð#ð #ð #ð #ðð ð ð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ð~fNð fNð fNð fNð fNÐ&ñ fNô fNð fNðR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   