Ë
    èÿæiý ã                   óˆ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlm Z  e!jD                  dk(  Z#ejH                  jK                  d«      Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z, G d„ de«      Z- G d„ de-«      Z. G d„ de.e«      Z/ G d„ de-e«      Z0 G d„ de«      Z1 G d„ de«      Z2 G d „ d!e«      Z3 G d"„ d#e3«      Z4e4jk                  «         G d$„ d%e3«      Z6e6jk                  «         G d&„ d'e3«      Z7e7jk                  «         G d(„ d)e3«      Z8e8jk                  «         G d*„ d+e3«      Z9e9jk                  «         G d,„ d-e3«      Z:e:jk                  «         G d.„ d/e3«      Z;e;jk                  «         G d0„ d1e3«      Z<e<jk                  «         G d2„ d3e3«      Z=e=jk                  «         G d4„ d5e3«      Z>e>jk                  «         G d6„ d7e«      Z? G d8„ d9e«      Z@ G d:„ d;e«      ZA G d<„ d=e«      ZBeCd>k(  r ejˆ                  «        yy)?é    N)ÚguvectorizeÚnjitÚtypeofÚ	vectorize)Útypes)Ú
from_dtype)ÚLoweringErrorÚTypingError)ÚTestCaseÚMemoryLeakMixin)Úsupported_ufuncs)Únumpy_support)Ú
cpu_target)ÚBaseContext)Úufunc_dbé   Úwin32c                 ó@   ‡ — t        j                  ‰ «      ˆ fd„«       }y)zŠAn 'expectedFailure' like decorator that only expects compilation errors
    caused by unimplemented functions that fail in no-python modec                  óž   •— 	  ‰| i |¤Ž t        j
                  ‚# t         $ r( t        j                  t        j                  «       «      ‚w xY w©N)r
   ÚunittestÚ_ExpectedFailureÚsysÚexc_infoÚ_UnexpectedSuccess)ÚargsÚkwargsÚfuncs     €úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_ufuncs.pyÚwrapperz_unimplemented.<locals>.wrapper   sK   ø€ ð	<Ù�$Ð!˜&Ò!ô ×)Ñ)Ð)øô ò 	<Ü×+Ñ+¬C¯L©L«NÓ;Ð;ð	<ús	   ƒ ›1AN)Ú	functoolsÚwraps)r   r    s   ` r   Ú_unimplementedr#      s    ø€ ô ‡_�_�TÓó*ó ñ*ó    c                 óB  — i }dj                  t        | j                  «      D �cg c]  }dj                  |«      ‘Œ c}«      }dj                  || j                  «      }t        |t        «       |«       |d   }dj                  | j                  «      |_        |S c c}w )NÚ,za{0}zdef fn({0}):
    np.{1}({0})Úfnz{0}_usecase)ÚjoinÚrangeÚnargsÚformatÚ__name__ÚexecÚglobals)ÚufuncÚldictÚiÚarg_strÚfunc_strr'   s         r   Ú_make_ufunc_usecaser4   &   s†   € Ø€EØ�h‰h´%¸¿¹Ô2DÓEÑ2D¨Q˜Ÿ™ aÕ(Ð2DÑEÓF€GØ.×5Ñ5°g¸u¿~¹~ÓN€HÜˆ”7“9˜eÔ$Ø	ˆt‰€BØ×&Ñ& u§~¡~Ó6€B„KØ€Iùò Fs   ¥Bc                 óš   — i }t        dj                  | «      t        «       |«       |d   }dj                  t        | «      «      |_        |S )Nzdef fn(x):
    return {0}(x)r'   úusecase_{0}©r-   r+   r.   Úhashr,   ©Úufunc_opr0   r'   s      r   Ú_make_unary_ufunc_op_usecaser;   0   sE   € Ø€EÜÐ	(×	/Ñ	/°Ó	9¼7»9ÀeÔLØ	ˆt‰€BØ×&Ñ&¤t¨H£~Ó6€B„KØ€Ir$   c                 óš   — i }t        dj                  | «      t        «       |«       |d   }dj                  t        | «      «      |_        |S )Nzdef fn(x,y):
    return x{0}yr'   r6   r7   r9   s      r   Ú_make_binary_ufunc_op_usecaser=   8   sE   € Ø€EÜÐ	)×	0Ñ	0°Ó	:¼G»IÀuÔMØ	ˆt‰€BØ×&Ñ&¤t¨H£~Ó6€B„KØ€Ir$   c                 óÎ   ‡ — t        ‰ t        «      rLi }t        dj                  ‰ «      t	        «       |«       |d   }dj                  t        ‰ «      «      |_        |S ˆ fd„}|}|S )z”Generates a function to be compiled that performs an inplace operation

    ufunc_op can be a string like '+=' or a function like operator.iadd
    zdef fn(x,y):
    x{0}yr'   r6   c                 ó   •—  ‰| |«       y r   © )ÚxÚyr:   s     €r   Ú
inplace_opz2_make_inplace_ufunc_op_usecase.<locals>.inplace_opK   s   ø€ Ù�Q˜�Nr$   )Ú
isinstanceÚstrr-   r+   r.   r8   r,   )r:   r0   r'   rC   s   `   r   Ú_make_inplace_ufunc_op_usecaserF   @   sc   ø€ ô
 �(œCÔ ØˆÜÐ&×-Ñ-¨hÓ7¼»ÀEÔJØ�4‰[ˆØ#×*Ñ*¬4°«>Ó:ˆŒð
 €Iô	àˆØ€Ir$   c           	      ó¢   — t        | |«      D ��cg c]2  \  }}t        j                  t        |«      «      j	                  |«      ‘Œ4 c}}S c c}}w )z5Convert python values into numpy scalar objects.
    )ÚzipÚnpÚdtyperE   Útype)Útyargsr   ÚtyÚvals       r   Ú_as_dtype_valuerO   Q   sA   € ô 8;¸6À4Ô7HÔIÑ7H©G¨B°ŒB�H‰H”S˜“WÓ×"Ñ" 3Õ'Ð7HÒIÐIùÓIs   �7Ac                   ó^   ‡ — e Zd Zˆ fd„Z ej
                  d¬«      dd„«       Z	 	 dd„Zˆ xZS )ÚBaseUFuncTestc                 óì	  •— t         t        | �  «        t        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  d«      t
        j                  ft        j                  ddgd¬«      t        j                  t
        j                  dd	«      ft        j                  ddgd
¬«      t        j                  t
        j                  dd	«      ft        j                  g d¢d¬«      t        j                  t
        j                  dd	«      ft        j                  g d¢d¬«      t        j                  t
        j                  dd	«      ft        j                  g d¢d¬«      t        j                  t
        j                  dd	«      ft        j                  g d¢d¬«      t        j                  t
        j                  dd	«      ft        j                  ddgt        j                  ¬«      t        j                  t
        j                  dd	«      ft        j                  ddgt        j                  ¬«      t        j                  t
        j                  dd	«      ft        j                  ddgt        j                  ¬«      t        j                  t
        j                  dd	«      ft        j                  ddgt        j                   ¬«      t        j                  t
        j                   dd	«      fg| _        y )Nr   é   éÿÿÿÿç      à¿ç        ç      à?Úu4©rJ   ÚCÚu8)rT   r   rS   Úi4Úi8)rU   rV   rW   Úf4Úf8)ÚsuperrQ   ÚsetUprI   Úuint32r   Úint32Úuint64Úint64Úfloat32Úfloat64ÚarrayÚArrayÚint8Úint16Úuint8Úuint16Úinputs)ÚselfÚ	__class__s    €r   ra   zBaseUFuncTest.setUpY   sù  ø€ ÜŒm˜TÑ(Ô*ä�Y‰Y�q‹\œ5Ÿ<™<Ð(Ü�Y‰Y�q‹\œ5Ÿ<™<Ð(Ü�X‰X�b‹\œ5Ÿ;™;Ð'Ü�X‰X�a‹[œ%Ÿ+™+Ð&Ü�X‰X�a‹[œ%Ÿ+™+Ð&Ü�Y‰Y�q‹\œ5Ÿ<™<Ð(Ü�Y‰Y�q‹\œ5Ÿ<™<Ð(Ü�X‰X�b‹\œ5Ÿ;™;Ð'Ü�X‰X�a‹[œ%Ÿ+™+Ð&Ü�X‰X�a‹[œ%Ÿ+™+Ð&ä�Z‰Z˜ÓœuŸ}™}Ð-Ü�Z‰Z˜‹_œeŸm™mÐ,Ü�Z‰Z˜‹_œeŸm™mÐ,ä�Z‰Z˜ÓœuŸ}™}Ð-Ü�Z‰Z˜‹_œeŸm™mÐ,Ü�Z‰Z˜‹_œeŸm™mÐ,ä�X‰X�q˜�e 4Ô(¬%¯+©+´e·l±lÀAÀsÓ*KÐLÜ�X‰X�q˜�e 4Ô(¬%¯+©+´e·l±lÀAÀsÓ*KÐLÜ�X‰X’h dÔ+¬U¯[©[¼¿¹ÀaÈÓ-MÐNÜ�X‰X’h dÔ+¬U¯[©[¼¿¹ÀaÈÓ-MÐNÜ�X‰XÒ&¨dÔ3Ü�[‰[œŸ™¨¨3Ó/ð1ä�X‰XÒ&¨dÔ3Ü�[‰[œŸ™¨¨3Ó/ð1ô �X‰X�q˜�e¤2§7¡7Ô+¬U¯[©[¼¿¹ÀQÈÓ-LÐMÜ�X‰X�q˜�e¤2§8¡8Ô,¬e¯k©k¼%¿+¹+ÀqÈ#Ó.NÐOÜ�X‰X�q˜�e¤2§8¡8Ô,¬e¯k©k¼%¿+¹+ÀqÈ#Ó.NÐOÜ�X‰X�q˜�e¤2§9¡9Ô-Ü�[‰[œŸ™ q¨#Ó.ð0ðA"
ˆ�r$   N)Úmaxsizec                 ó*   —  t        ||d¬«      |«      S )NT)Ú_nrtÚno_rewrites)r   )ro   Úpyfuncr   Únrts       r   Ú_compilezBaseUFuncTest._compile   s   € ð 6Œt�D˜s°Ô5°fÓ=Ð=r$   c                 óð  — |}t        |t        j                  «      r|j                  }|j                  }nd}|t        j
                  v r4|rt        j                  ||d«      }|S t        j                  ||d«      }|S |t        j                  v r4|rt        j                  ||d«      }|S t        j                  ||d«      }|S |rt        j                  ||d«      }|S t        j                  ||d«      }|S )NrS   rZ   )rD   r   ri   ÚndimrJ   Úsigned_domainÚunsigned_domain)ro   Ú
input_typeÚint_output_typeÚfloat_output_typerM   ry   Úoutput_types          r   Ú_determine_output_typez$BaseUFuncTest._determine_output_type…   sö   € àˆÜ�bœ%Ÿ+™+Ô&Ø—7‘7ˆDØ—‘‰BàˆDà”×$Ñ$Ñ$ÙÜ#Ÿk™k¨/¸4ÀÓE�ð Ðô $Ÿk™k¨"¨d°CÓ8�ð Ðð ”5×(Ñ(Ñ(ÙÜ#Ÿk™k¨/¸4ÀÓE�ð Ðô $Ÿk™k¨"¨d°CÓ8�ð Ðñ	 !Ü#Ÿk™kÐ*;¸TÀ3ÓG�ð Ðô $Ÿk™k¨"¨d°CÓ8�ØÐr$   )F)NN)	r,   Ú
__module__Ú__qualname__ra   r!   Ú	lru_cacherw   r€   Ú__classcell__©rp   s   @r   rQ   rQ   W   s9   ø„ ô$
ðL €Y×Ñ Ô&ò>ó 'ð>ð
 BFØ15÷r$   rQ   c                   ó&   — e Zd Zd„ Z	 	 	 dd„Zd„ Zy)ÚBasicUFuncTestc                 ó   — t        |«      S r   )r4   ©ro   r/   s     r   r4   z"BasicUFuncTest._make_ufunc_usecase¡   s   € Ü" 5Ó)Ð)r$   Nc                 óØ  — |€g }|€g }| j                  t        «       | j                  |«      }t        | j                  «      |z   }	|	D �]Ý  }
|
d   }|
d   }t        |t        «      }|r|}n|f|j                  z  }||v rŒ8|rt        j                  |d   dk  «      rŒV|d   j                  j                  |vrŒr| j                  |||«      }|f|j                  z  }|f|j                  z  }||z   }| j                  ||«      }t        |d   t        j                  «      r‹|D �cg c]:  }t        j                   |d   j"                  |j                  j$                  ¬«      ‘Œ< }}|D �cg c]:  }t        j                   |d   j"                  |j                  j$                  ¬«      ‘Œ< }}np|D �cg c]-  }t        j                   d|j                  j$                  ¬«      ‘Œ/ }}|D �cg c]-  }t        j                   d|j                  j$                  ¬«      ‘Œ/ }}d}t'        j(                  d¬«      5 }t'        j*                  d«        |g |¢|¢­Ž  d}|D ]D  }t-        |j.                  t0        «      sŒt3        |j4                  «      j7                  |«      sŒCd}ŒF 	 d d d «        |g |¢|¢­Ž  t9        ||«      D ]e  \  }}d	j;                  g d
¢«      j=                  |j                  |||||j                  |«      }	 t        j>                  jA                  ||d|¬«       Œg �Œà y c c}w c c}w c c}w c c}w # 1 sw Y   ŒŸxY w# tB        $ r |rtE        d|
||«       n‚ Y Œ©w xY w)Nr   rS   rY   FT)ÚrecordÚalwayszinvalid value encounteredÚ
)zufunc '{0}' failedzinputs ({1}):z{2}zgot({3})z{4}zexpected ({5}):z{6}é   )ÚdecimalÚerr_msgz!Output mismatch for invalid input)#Úreset_module_warningsr,   r4   Úlistrn   rD   ÚtupleÚninrI   ÚanyrJ   Úkindr€   Únoutrw   ÚndarrayÚzerosÚshapeÚnameÚwarningsÚcatch_warningsÚsimplefilterÚ
issubclassÚcategoryÚRuntimeWarningrE   ÚmessageÚ
startswithrH   r(   r+   ÚtestingÚassert_array_almost_equalÚAssertionErrorÚprint)ro   r/   Úskip_inputsÚadditional_inputsr}   r~   ÚkindsÚpositive_onlyru   rn   Úinput_tupleÚinput_operandr|   Úis_tupler   r   Úinput_typesÚoutput_typesÚargtysÚcfuncÚout_tyÚresultsÚexpectedÚinvalid_flagÚwarnlistÚwarnmsgÚthiswarnÚ
expected_iÚresult_iÚmsgs                                 r   Úbasic_ufunc_testzBasicUFuncTest.basic_ufunc_test¤   sx  € ð ÐØˆKØÐ$Ø "ÐØ×"Ñ"¤8Ô,à×)Ñ)¨%Ó0ˆä�d—k‘kÓ"Ð%6Ñ6ˆä!ˆKØ'¨™NˆMØ$ Q™ˆJä! -´Ó7ˆHÙØ$‘à%Ð'¨%¯)©)Ñ3�à˜[Ñ(ØÙ¤§¡¨¨Q©°!©Ô!4Øð �Q‘—‘×"Ñ"¨%Ñ/Øà×5Ñ5Ø˜OÐ->ó@ˆKð &˜-¨%¯)©)Ñ3ˆKØ'˜>¨E¯J©JÑ6ˆLØ  <Ñ/ˆFØ—M‘M &¨&Ó1ˆEä˜$˜q™'¤2§:¡:Ô.ñ #/óñ #/˜ô —H‘H˜T !™WŸ]™]Ø#)§<¡<×#4Ñ#4ö6à".ð ð ñ #/óá".˜ô —H‘H˜T !™WŸ]™]°&·,±,×2CÑ2CÖDØ".ð ñ ñ #/óá".˜ô —H‘H˜Q f§l¡l×&7Ñ&7Ö8Ø".ð ð ñ #/óá".˜ô —H‘H˜Q f§l¡l×&7Ñ&7Ö8Ø".ð ð ð
 !ˆLÜ×(Ñ(°Õ5¸Ü×%Ñ% hÔ/ÙÐ(˜Ð(˜xÓ(à5�Û (�Hä" 8×#4Ñ#4´nÕEÜ # H×$4Ñ$4Ó 5× @Ñ @ÀÕ IØ'+™ñ	 !)÷ 6ñ Ð"�4Ð"˜'Ó"ä(+¨H°gÖ(>Ñ$�
˜HØ—i‘iò !#ó $÷ %+¡F¨5¯>©>Ø+5°}Ø+6¸Ø+5×+;Ñ+;¸Zó%Ið	 ðÜ—J‘J×8Ñ8Ø" HØ !Ø #ð 9õ %ò )?ñ{ "ùò8ùò
ùò
ùò÷ 6Ð5ûô6 &ò Ù#äÐAØ)¨8°ZõAð ñAðúsC   Ä&?L+Å+?L0Æ12L5Ç)2L:È5AL?É7$L?ÊL?Ì#MÌ?M	ÍM)Í(M)c                 ó®  — | j                  |«       t        j                  dk  ry t        j                  d«      t        j
                  d«      ft        j                  d«      t        j
                  d«      ft        j                  d«      t        j
                  d«      ft        j                  d«      t        j
                  d«      ft        j                  d«      t        j
                  d«      ft        j                  d«      t        j
                  d«      ft        j
                  d«      t        j                  d«      ft        j
                  d«      t        j                  d«      ft        j
                  d«      t        j                  d«      ft        j
                  d«      t        j                  d«      ft        j
                  d«      t        j                  d«      ft        j
                  d«      t        j                  d«      ft        j                  g d¢t        j                  ¬«      t        j                  g d¢t        j
                  ¬«      ft        j                  g d¢t        j
                  ¬«      t        j                  g d¢t        j                  ¬«      ff}| j                  |«      }|D �]  \  }}t        |«      t        |«      f}t        j                  t        j                  dd«      }||fz   }| j                  ||«      }	t        |t        j                  «      r0t        j                  |j                   t        j                  ¬«      }
n%t        j                  dt        j                  ¬«      }
t        j"                  |
«      } ||||«        |	|||
«       t        j$                  j'                  ||
«       �Œ y )	N)rS   é   rT   r   rS   )rT   rT   r   r   rS   rS   rY   )r   rS   r   rS   r   rS   rZ   )r½   r   Únumpy_versionrI   re   rd   rh   r4   r   r   ri   Úbool_rw   rD   r˜   r™   rš   Ú
zeros_liker¤   Úassert_equal)ro   Úcomparison_ufuncr©   ru   ÚaÚbr¯   r   r±   r²   Úresultrµ   s               r   Úsigned_unsigned_cmp_testz'BasicUFuncTest.signed_unsigned_cmp_test  s}  € Ø×ÑÐ.Ô/ä×&Ñ&¨Ò0Øô �X‰X�b‹\œ2Ÿ9™9 Q›<Ð(Ü�X‰X�b‹\œ2Ÿ9™9 Q›<Ð(Ü�X‰X�a‹[œ"Ÿ)™) A›,Ð'Ü�X‰X�a‹[œ"Ÿ)™) A›,Ð'Ü�X‰X�a‹[œ"Ÿ)™) A›,Ð'Ü�X‰X�a‹[œ"Ÿ)™) A›,Ð'ä�Y‰Y�q‹\œ2Ÿ8™8 B›<Ð(Ü�Y‰Y�q‹\œ2Ÿ8™8 A›;Ð'Ü�Y‰Y�q‹\œ2Ÿ8™8 A›;Ð'Ü�Y‰Y�q‹\œ2Ÿ8™8 B›<Ð(Ü�Y‰Y�q‹\œ2Ÿ8™8 A›;Ð'Ü�Y‰Y�q‹\œ2Ÿ8™8 A›;Ð'ä�X‰XÒ*´"·(±(Ô;Ü�X‰XÒ(´·	±	Ô:ð<ô �X‰XÒ(´·	±	Ô:Ü�X‰XÒ*´"·(±(Ô;ð=ð%
Ðð, ×)Ñ)Ð*:Ó;ˆä%‰DˆAˆqÜ! !›9¤f¨Q£iÐ0ˆKÜŸ+™+¤e§k¡k°1°cÓ:ˆKØ  K >Ñ1ˆFØ—M‘M &¨&Ó1ˆEä˜!œRŸZ™ZÔ(ÜŸ™ !§'¡'´·±Ô:‘äŸ™ !¬2¯8©8Ô4�ä—}‘} VÓ,ˆHá�1�a˜Ô"Ù�!�Q˜ÔÜ�J‰J×#Ñ# H¨fÖ5ñ &r$   )NNNNÚifcF)r,   r�   r‚   r4   r½   rÈ   r@   r$   r   r‡   r‡       s    „ ò*ð KOØAEØ49óaóF06r$   r‡   c                   ób  — e Zd Zd^d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej,                  fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%„ Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*„ Z-d+„ Z.d,„ Z/d-„ Z0d.„ Z1d/„ Z2d0„ Z3d1„ Z4d2„ Z5d3„ Z6d4„ Z7d5„ Z8d6„ Z9d7„ Z:d8„ Z;d9„ Z<d:„ Z=d;„ Z>d<„ Z?d=„ Z@d>„ ZAd?„ ZBd@„ ZCdA„ ZDdB„ ZEdC„ ZFdD„ ZGdE„ ZHdF„ ZIdG„ ZJdH„ ZKdI„ ZLdJ„ ZMdK„ ZNdL„ ZOdM„ ZPdN„ ZQdO„ ZRdP„ ZSdQ„ ZTeUdR„ «       ZVeUdS„ «       ZWdT„ ZXdU„ ZYdV„ ZZdW„ Z[dX„ Z\dY„ Z]dZ„ Z^d[„ Z_d\„ Z`d]„ Zay)_Ú
TestUFuncsNc                 óú   — t         j                  t         j                  t        j                  t         j                  dd«      t        j                  t         j                  dd«      g}| j	                  ||¬«       y ©NrS   rZ   )r¨   )r   rf   rg   ri   r½   )ro   r›   r¨   s      r   Úbasic_int_ufunc_testzTestUFuncs.basic_int_ufunc_test;  sT   € ä�M‰MÜ�M‰MÜ�K‰KœŸ™ q¨#Ó.Ü�K‰KœŸ™ q¨#Ó.ð	
ˆð 	×Ñ˜d°ÐÕ<r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Úadd©ro   s    r   Útest_add_ufunczTestUFuncs.test_add_ufuncG  s   € Ø×ÑœbŸf™fÕ%r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚsubtractrÑ   s    r   Útest_subtract_ufunczTestUFuncs.test_subtract_ufuncJ  ó   € Ø×ÑœbŸk™kÕ*r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚmultiplyrÑ   s    r   Útest_multiply_ufunczTestUFuncs.test_multiply_ufuncM  rÖ   r$   c                 ój   — d }t         j                  }| j                  t        j                  |¬«       y ©N©r}   )r   rg   r½   rI   Údivide©ro   Úint_out_types     r   Útest_divide_ufunczTestUFuncs.test_divide_ufuncP  s.   € ð ˆÜ—}‘}ˆà×ÑœbŸi™iØ.:ð 	õ 	<r$   c                 óF   — | j                  t        j                  d¬«       y ©NÚf©rª   )r½   rI   Ú	logaddexprÑ   s    r   Útest_logaddexp_ufunczTestUFuncs.test_logaddexp_ufuncY  ó   € Ø×ÑœbŸl™l°#ÐÕ6r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   Ú
logaddexp2rÑ   s    r   Útest_logaddexp2_ufuncz TestUFuncs.test_logaddexp2_ufunc\  s   € Ø×ÑœbŸm™m°3ÐÕ7r$   c                 ób   — | j                  t        j                  t        j                  ¬«       y rÛ   )r½   rI   Útrue_divider   rg   rÑ   s    r   Útest_true_divide_ufuncz!TestUFuncs.test_true_divide_ufunc_  s"   € Ø×ÑœbŸn™nÜ.3¯m©mð 	õ 	=r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Úfloor_dividerÑ   s    r   Útest_floor_divide_ufuncz"TestUFuncs.test_floor_divide_ufuncc  s   € Ø×ÑœbŸo™oÕ.r$   c                 óÎ   — t        j                  t         j                  dd«      t         j                  g}| j                  t        j
                  t         j                  |¬«       y )NrS   rZ   )r}   r¨   )r   ri   rb   r½   rI   Únegativere   )ro   r¨   s     r   Útest_negative_ufunczTestUFuncs.test_negative_ufuncf  sE   € ô —{‘{¤5§<¡<°°CÓ8¼%¿,¹,ÐGˆØ×ÑœbŸk™k¼5¿;¹;Ø*5ð 	õ 	7r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚpositiverÑ   s    r   Útest_positive_ufunczTestUFuncs.test_positive_ufuncm  rÖ   r$   c                 óF   — | j                  t        j                  d¬«       y )NT)r«   )r½   rI   ÚpowerrÑ   s    r   Útest_power_ufunczTestUFuncs.test_power_ufuncp  s   € Ø×ÑœbŸh™h°dÐÕ;r$   c                 óF   — | j                  t        j                  d¬«       y )NÚfcrä   )r½   rI   Úfloat_powerrÑ   s    r   Útest_float_power_ufuncz!TestUFuncs.test_float_power_ufuncs  s   € Ø×ÑœbŸn™n°DÐÕ9r$   c                 óF   — | j                  t        j                  d¬«       y ©NÚiurä   )r½   rI   ÚgcdrÑ   s    r   Útest_gcd_ufunczTestUFuncs.test_gcd_ufuncv  ó   € Ø×ÑœbŸf™f¨DÐÕ1r$   c                 óF   — | j                  t        j                  d¬«       y rÿ   )r½   rI   ÚlcmrÑ   s    r   Útest_lcm_ufunczTestUFuncs.test_lcm_ufuncy  r  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Ú	remainderrÑ   s    r   Útest_remainder_ufunczTestUFuncs.test_remainder_ufunc|  ó   € Ø×ÑœbŸl™lÕ+r$   c                 ó  — t        j                  t        j                  t         j                  «      j                  «      t        j                  d«      ft        j                  fg}| j                  t         j                  d|¬«       y )Né   Úifcu©rª   r©   )rI   rd   ÚiinfoÚmaxr   r½   Úmod)ro   r©   s     r   Útest_mod_ufunczTestUFuncs.test_mod_ufunc  s`   € ä�i‰iœŸ™¤§¡Ó+×/Ñ/Ó0´"·)±)¸B³-Ð@Ä%Ç,Á,ÐOð
Ðð 	×ÑœbŸf™f¨FØ0Að 	õ 	Cr$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚfmodrÑ   s    r   Útest_fmod_ufunczTestUFuncs.test_fmod_ufunc†  ó   € Ø×ÑœbŸg™gÕ&r$   c                 ó¦  — t        j                  t        j                  t         j                  «      j                  «      t        j                  ft        j
                  t        j                  t         j
                  «      j                  «      t        j
                  ft        j                  t        j                  t         j                  «      j                  «      t        j                  ft        j                  t        j                  t         j                  «      j                  «      t        j                  fg}| j                  ||¬«       y )N)r©   )rI   rb   r  r  r   rd   rf   ÚfinfoÚminrg   r½   )ro   r/   r©   s      r   Útest_abs_ufunczTestUFuncs.test_abs_ufunc‰  sÅ   € ä�Y‰Y”r—x‘x¤§	¡	Ó*×.Ñ.Ó/´·±Ð>Ü�Y‰Y”r—x‘x¤§	¡	Ó*×.Ñ.Ó/´·±Ð>Ü�Z‰ZœŸ™¤§¡Ó,×0Ñ0Ó1´5·=±=ÐAÜ�Z‰ZœŸ™¤§¡Ó,×0Ñ0Ó1´5·=±=ÐAð	
Ðð 	×Ñ˜eØ0Að 	õ 	Cr$   c                 óD   — | j                  t        j                  ¬«       y )N)r/   )r  rI   ÚabsoluterÑ   s    r   Útest_absolute_ufunczTestUFuncs.test_absolute_ufunc“  s   € Ø×Ñ¤"§+¡+ÐÕ.r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚfabsrÑ   s    r   Útest_fabs_ufunczTestUFuncs.test_fabs_ufunc–  ó   € Ø×ÑœbŸg™g¨SÐÕ1r$   c                 óF   — | j                  t        j                  d¬«       y ©NÚcfrä   )r½   rI   ÚrintrÑ   s    r   Útest_rint_ufunczTestUFuncs.test_rint_ufunc™  ó   € Ø×ÑœbŸg™g¨TÐÕ2r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚsignrÑ   s    r   Útest_sign_ufunczTestUFuncs.test_sign_ufuncœ  r  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚconjrÑ   s    r   Útest_conj_ufunczTestUFuncs.test_conj_ufuncŸ  r  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚexprÑ   s    r   Útest_exp_ufunczTestUFuncs.test_exp_ufunc¢  r  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   Úexp2rÑ   s    r   Útest_exp2_ufunczTestUFuncs.test_exp2_ufunc¥  r'  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚlogrÑ   s    r   Útest_log_ufunczTestUFuncs.test_log_ufunc¨  r  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   Úlog2rÑ   s    r   Útest_log2_ufunczTestUFuncs.test_log2_ufunc«  r'  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   Úlog10rÑ   s    r   Útest_log10_ufunczTestUFuncs.test_log10_ufunc®  ó   € Ø×ÑœbŸh™h¨dÐÕ3r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   Úexpm1rÑ   s    r   Útest_expm1_ufunczTestUFuncs.test_expm1_ufunc±  r=  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   Úlog1prÑ   s    r   Útest_log1p_ufunczTestUFuncs.test_log1p_ufunc´  r=  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚsqrtrÑ   s    r   Útest_sqrt_ufunczTestUFuncs.test_sqrt_ufunc·  r'  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚsquarerÑ   s    r   Útest_square_ufunczTestUFuncs.test_square_ufuncº  s   € Ø×ÑœbŸi™iÕ(r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚcbrtrÑ   s    r   Útest_cbrt_ufunczTestUFuncs.test_cbrt_ufunc½  r!  r$   c                 óâ  — t        j                  t         j                  dd«      t         j                  t        j                  t         j                  dd«      t         j                  t        j                  t         j                  dd«      t         j                  t        j                  t         j
                  dd«      t         j
                  g}| j                  t        j                  |¬«       y rÍ   )	r   ri   rb   rc   rd   re   r½   rI   Ú
reciprocal©ro   Úto_skips     r   Útest_reciprocal_ufuncz TestUFuncs.test_reciprocal_ufuncÀ  s�   € ô —;‘;œuŸ|™|¨Q°Ó4´e·l±lÜ—;‘;œuŸ{™{¨A¨sÓ3´U·[±[Ü—;‘;œuŸ|™|¨Q°Ó4´e·l±lÜ—;‘;œuŸ{™{¨A¨sÓ3´U·[±[ðBˆð 	×ÑœbŸm™m¸ÐÕAr$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Ú	conjugaterÑ   s    r   Útest_conjugate_ufunczTestUFuncs.test_conjugate_ufuncÊ  r
  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚsinrÑ   s    r   Útest_sin_ufunczTestUFuncs.test_sin_ufuncÐ  r  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚcosrÑ   s    r   Útest_cos_ufunczTestUFuncs.test_cos_ufuncÓ  r  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚtanrÑ   s    r   Útest_tan_ufunczTestUFuncs.test_tan_ufuncÖ  r  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚarcsinrÑ   s    r   Útest_arcsin_ufunczTestUFuncs.test_arcsin_ufuncÙ  ó   € Ø×ÑœbŸi™i¨tÐÕ4r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚarccosrÑ   s    r   Útest_arccos_ufunczTestUFuncs.test_arccos_ufuncÜ  ra  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚarctanrÑ   s    r   Útest_arctan_ufunczTestUFuncs.test_arctan_ufuncß  ra  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   Úarctan2rÑ   s    r   Útest_arctan2_ufunczTestUFuncs.test_arctan2_ufuncâ  ó   € Ø×ÑœbŸj™j°ÐÕ5r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚhypotrÑ   s    r   Útest_hypot_ufunczTestUFuncs.test_hypot_ufuncå  ó   € Ø×ÑœbŸh™h¨cÐÕ2r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚsinhrÑ   s    r   Útest_sinh_ufunczTestUFuncs.test_sinh_ufuncè  r'  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚcoshrÑ   s    r   Útest_cosh_ufunczTestUFuncs.test_cosh_ufuncë  r'  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚtanhrÑ   s    r   Útest_tanh_ufunczTestUFuncs.test_tanh_ufuncî  r'  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚarcsinhrÑ   s    r   Útest_arcsinh_ufunczTestUFuncs.test_arcsinh_ufuncñ  rk  r$   c                 óF   — | j                  t        j                  d¬«       y r#  )r½   rI   ÚarccoshrÑ   s    r   Útest_arccosh_ufunczTestUFuncs.test_arccosh_ufuncô  rk  r$   c                 óä  — t        j                  t         j                  dd«      t         j                  t        j                  t         j                  dd«      t         j                  t        j                  t         j                  dd«      t         j                  t        j                  t         j
                  dd«      t         j
                  g}| j                  t        j                  |d¬«       y )NrS   rZ   r$  )r¨   rª   )	r   ri   rb   rc   rd   re   r½   rI   ÚarctanhrO  s     r   Útest_arctanh_ufunczTestUFuncs.test_arctanh_ufunc÷  s�   € ô —;‘;œuŸ|™|¨Q°Ó4´e·l±lÜ—;‘;œuŸ{™{¨A¨sÓ3´U·[±[Ü—;‘;œuŸ|™|¨Q°Ó4´e·l±lÜ—;‘;œuŸ{™{¨A¨sÓ3´U·[±[ðBˆð
 	×ÑœbŸj™j°gÀTÐÕJr$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   Údeg2radrÑ   s    r   Útest_deg2rad_ufunczTestUFuncs.test_deg2rad_ufunc  ó   € Ø×ÑœbŸj™j°ÐÕ4r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   Úrad2degrÑ   s    r   Útest_rad2deg_ufunczTestUFuncs.test_rad2deg_ufunc
  r…  r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚdegreesrÑ   s    r   Útest_degrees_ufunczTestUFuncs.test_degrees_ufunc  r…  r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚradiansrÑ   s    r   Útest_radians_ufunczTestUFuncs.test_radians_ufunc  r…  r$   c                 óB   — | j                  t        j                  «       y r   )rÎ   rI   Úbitwise_andrÑ   s    r   Útest_bitwise_and_ufuncz!TestUFuncs.test_bitwise_and_ufunc  ó   € Ø×!Ñ!¤"§.¡.Õ1r$   c                 óB   — | j                  t        j                  «       y r   )rÎ   rI   Ú
bitwise_orrÑ   s    r   Útest_bitwise_or_ufuncz TestUFuncs.test_bitwise_or_ufunc  s   € Ø×!Ñ!¤"§-¡-Õ0r$   c                 óB   — | j                  t        j                  «       y r   )rÎ   rI   Úbitwise_xorrÑ   s    r   Útest_bitwise_xor_ufuncz!TestUFuncs.test_bitwise_xor_ufunc  r’  r$   c                 óB   — | j                  t        j                  «       y r   )rÎ   rI   ÚinvertrÑ   s    r   Útest_invert_ufunczTestUFuncs.test_invert_ufunc  s   € Ø×!Ñ!¤"§)¡)Õ,r$   c                 óB   — | j                  t        j                  «       y r   )rÎ   rI   Úbitwise_notrÑ   s    r   Útest_bitwise_not_ufuncz!TestUFuncs.test_bitwise_not_ufunc"  r’  r$   c                 óB   — | j                  t        j                  «       y r   )rÈ   rI   ÚgreaterrÑ   s    r   Útest_greater_ufunczTestUFuncs.test_greater_ufunc1  s   € Ø×%Ñ%¤b§j¡jÕ1r$   c                 óB   — | j                  t        j                  «       y r   )rÈ   rI   Úgreater_equalrÑ   s    r   Útest_greater_equal_ufuncz#TestUFuncs.test_greater_equal_ufunc4  s   € Ø×%Ñ%¤b×&6Ñ&6Õ7r$   c                 óB   — | j                  t        j                  «       y r   )rÈ   rI   ÚlessrÑ   s    r   Útest_less_ufunczTestUFuncs.test_less_ufunc7  s   € Ø×%Ñ%¤b§g¡gÕ.r$   c                 óB   — | j                  t        j                  «       y r   )rÈ   rI   Ú
less_equalrÑ   s    r   Útest_less_equal_ufuncz TestUFuncs.test_less_equal_ufunc:  s   € Ø×%Ñ%¤b§m¡mÕ4r$   c                 óB   — | j                  t        j                  «       y r   )rÈ   rI   Ú	not_equalrÑ   s    r   Útest_not_equal_ufunczTestUFuncs.test_not_equal_ufunc=  s   € Ø×%Ñ%¤b§l¡lÕ3r$   c                 óB   — | j                  t        j                  «       y r   )rÈ   rI   ÚequalrÑ   s    r   Útest_equal_ufunczTestUFuncs.test_equal_ufunc@  s   € Ø×%Ñ%¤b§h¡hÕ/r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Úlogical_andrÑ   s    r   Útest_logical_and_ufuncz!TestUFuncs.test_logical_and_ufuncC  ó   € Ø×ÑœbŸn™nÕ-r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Ú
logical_orrÑ   s    r   Útest_logical_or_ufuncz TestUFuncs.test_logical_or_ufuncF  s   € Ø×ÑœbŸm™mÕ,r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Úlogical_xorrÑ   s    r   Útest_logical_xor_ufuncz!TestUFuncs.test_logical_xor_ufuncI  r´  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   Úlogical_notrÑ   s    r   Útest_logical_not_ufuncz!TestUFuncs.test_logical_not_ufuncL  r´  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚmaximumrÑ   s    r   Útest_maximum_ufunczTestUFuncs.test_maximum_ufuncO  ó   € Ø×ÑœbŸj™jÕ)r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚminimumrÑ   s    r   Útest_minimum_ufunczTestUFuncs.test_minimum_ufuncR  rÁ  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚfmaxrÑ   s    r   Útest_fmax_ufunczTestUFuncs.test_fmax_ufuncU  r  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚfminrÑ   s    r   Útest_fmin_ufunczTestUFuncs.test_fmin_ufuncX  r  r$   c                 óœ   — t        j                  ddgt         j                  ¬«      t        j                  t        j                  dd«      fgS )NTFrY   rS   rZ   )rI   rh   rÁ   r   ri   rÑ   s    r   Úbool_additional_inputsz!TestUFuncs.bool_additional_inputs^  s;   € ä�X‰X�t˜U�m¬2¯8©8Ô4Ü�[‰[œŸ™ a¨Ó-ð/ð
ð 	
r$   c                 ód   — | j                  t        j                  d| j                  «       ¬«       y ©NÚifcbr  )r½   rI   ÚisfiniterÌ  rÑ   s    r   Útest_isfinite_ufunczTestUFuncs.test_isfinite_ufuncd  s*   € Ø×ÑÜ�K‰K˜vØ"×9Ñ9Ó;ð 	õ 	
r$   c                 ód   — | j                  t        j                  d| j                  «       ¬«       y rÎ  )r½   rI   ÚisinfrÌ  rÑ   s    r   Útest_isinf_ufunczTestUFuncs.test_isinf_ufuncj  ó*   € Ø×ÑÜ�H‰H˜FØ"×9Ñ9Ó;ð 	õ 	
r$   c                 ód   — | j                  t        j                  d| j                  «       ¬«       y rÎ  )r½   rI   ÚisnanrÌ  rÑ   s    r   Útest_isnan_ufunczTestUFuncs.test_isnan_ufuncp  rÕ  r$   c                 óB   — | j                  t        j                  «       y r   )r½   rI   ÚsignbitrÑ   s    r   Útest_signbit_ufunczTestUFuncs.test_signbit_ufuncv  rÁ  r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚcopysignrÑ   s    r   Útest_copysign_ufunczTestUFuncs.test_copysign_ufuncy  s   € Ø×ÑœbŸk™k°ÐÕ5r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   Ú	nextafterrÑ   s    r   Útest_nextafter_ufunczTestUFuncs.test_nextafter_ufunc|  rç   r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚmodfrÑ   s    r   Útest_modf_ufunczTestUFuncs.test_modf_ufunc  s   € à×ÑœbŸg™g¨SÐÕ1r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚfrexprÑ   s    r   Útest_frexp_ufunczTestUFuncs.test_frexp_ufunc‡  s   € à×ÑœbŸh™h¨cÐÕ2r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚfloorrÑ   s    r   Útest_floor_ufunczTestUFuncs.test_floor_ufunc‹  ro  r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚceilrÑ   s    r   Útest_ceil_ufunczTestUFuncs.test_ceil_ufuncŽ  r!  r$   c                 óF   — | j                  t        j                  d¬«       y râ   )r½   rI   ÚtruncrÑ   s    r   Útest_trunc_ufunczTestUFuncs.test_trunc_ufunc‘  ro  r$   c                 ó  — t        j                  t         j                  t         j                   gt         j                  ¬«      t	        j
                  t        j                  dd«      fg}| j                  t         j                  d|¬«       y )NrY   rS   rZ   rã   r  )rI   rh   Úinfrg   r   ri   r½   Úspacing)ro   Ú
additionals     r   Útest_spacing_ufunczTestUFuncs.test_spacing_ufunc”  sc   € ô —x‘x¤§¡¬"¯&©&¨Ð 1¼¿¹ÔDÜ—{‘{¤5§=¡=°!°SÓ9ð;ð =ˆ
à×ÑœbŸj™j°Ø0:ð 	õ 	<r$   c                 ó 	  — |j                   }t        |«      }dt        j                  fdt        j                  fdt        j
                  ft        j                  ddgd¬«      t        j                  t        j                  dd«      ft        j                  ddgd¬«      t        j                  t        j                  dd«      ft        j                  d	dgd
¬«      t        j                  t        j
                  dd«      fg}|}t        j                  t        j                  dd«      t        j                  t        j
                  dd«      g}|}t        j                  |||«      D �]b  }|\  }}	}
|d   }|d   }|	d   }|	d   }|dk(  rQ|t        j                  t        j                  dd«      k(  s(|t        j                  t        j                  dd«      k(  rŒt|dk(  ra|t        j                  t        j                  dd«      k(  r9|t        j                  k(  r&t        j                  t        j                  dd«      rŒÚ|dk(  rb|t        j                  t        j                  dd«      k(  r:|t        j                  k(  r't        j                  t        j                  dd«      r�ŒAt        |t        j                  «      st        |t        j                  «      rt        |
t        j                  «      s�Œ‘|||
f}| j                  ||«      }t        |t        j                  «      rkt        j                  |j                   |
j"                  j$                  ¬«      }t        j                  |j                   |
j"                  j$                  ¬«      }nÛt        |t        j                  «      rkt        j                  |j                   |
j"                  j$                  ¬«      }t        j                  |j                   |
j"                  j$                  ¬«      }nVt        j                  d|
j"                  j$                  ¬«      }t        j                  d|
j"                  j$                  ¬«      } ||||«        ||||«       t'        |
d|
«      }|t        j(                  t        j*                  fv rdnd}| j-                  |||¬«       �Œe y )NrS   rT   rW   r   r[   rY   rZ   r]   rU   r_   rÝ   rÔ   rJ   ÚsingleÚdouble)Úprec)r,   r4   r   rd   re   rg   rI   rh   ri   Ú	itertoolsÚproductrb   rD   rw   r˜   r™   ÚsizerJ   r›   Úgetattrrf   Ú	complex64ÚassertPreciseEqual)ro   r/   Ú
ufunc_nameÚinputs1Úinputs2r°   ru   ÚvalsÚinput1Úinput2r   Úinput1_operandÚinput1_typeÚinput2_operandÚinput2_typer   r²   rÇ   rµ   Úscalar_typerù  s                        r   Úbinary_ufunc_mixed_types_testz(TestUFuncs.binary_ufunc_mixed_types_testŸ  s¢  € Ø—^‘^ˆ
Ü# EÓ*ˆà”—‘ÐØ”—‘ÐØ”%—-‘-Ð ä�X‰X�q˜!�f DÔ)¬5¯;©;´u·|±|ÀQÈÓ+LÐMÜ�X‰X�r˜1�g TÔ*¬E¯K©K¼¿¹ÀQÈÓ,LÐMÜ�X‰X�t˜S�k¨Ô.Ü�[‰[œŸ™¨¨3Ó/ð1ð2ˆð ˆäŸ™¤E§K¡K°°CÓ8ÜŸ™¤E§M¡M°1°cÓ:ð<ˆð ˆä×%Ñ% g¨w¸×EˆDØ*.Ñ'ˆF�F˜Kà# A™YˆNØ  ™)ˆKà# A™YˆNØ  ™)ˆKð ˜XÒ%Ø¤5§;¡;¬u¯|©|¸QÀÓ#DÒDØ¤5§;¡;¬u¯|©|¸QÀÓ#DÒDØð ˜jÒ(Ø#¤u§{¡{´5·<±<ÀÀCÓ'HÒHØ#¤u§|¡|Ò3ÜŸ™¤E§K¡K°°CÔ8ØØ˜jÒ(Ø#¤u§{¡{´5·<±<ÀÀCÓ'HÒHØ#¤u§|¡|Ò3ÜŸ™¤E§K¡K°°CÔ8Ùä˜K¬¯©Ô5Ü˜{¬E¯K©KÔ8Ü" ;´·±Ô<Ùà ¨kÐ:ˆDØ—M‘M &¨$Ó/ˆEä˜.¬"¯*©*Ô5ÜŸ™ .×"5Ñ"5Ø(3×(9Ñ(9×(>Ñ(>ô@�äŸ8™8 N×$7Ñ$7Ø*5×*;Ñ*;×*@Ñ*@ôB‘ä˜N¬B¯J©JÔ7ÜŸ™ .×"5Ñ"5Ø(3×(9Ñ(9×(>Ñ(>ô@�äŸ8™8 N×$7Ñ$7Ø*5×*;Ñ*;×*@Ñ*@ôB‘ô Ÿ™ !¨;×+<Ñ+<×+AÑ+AÔB�ÜŸ8™8 A¨[×->Ñ->×-CÑ-CÔD�á�. .°&Ô9Ù�> >°8Ô<ä! +¨w¸ÓDˆKà"¤u§}¡}´e·o±oÐ&FÑFñ à!ð ð ×#Ñ# H¨f¸4Ð#Ö@ñq Fr$   c                 ó¢
  — t        t        j                  «      }t        j                  dd¬«      t        j                  dd¬«      j	                  dd«      t        j                  dd¬«      j	                  dd«      t        j                  dd¬«      j	                  dd«      t        j                  dd¬«      j	                  dd«      t        j                  dd¬«      j	                  dd«      g}t        j
                  dd¬«      j	                  dd«      t        j
                  dd¬«      j	                  dd«      t        j
                  dd¬«      j	                  dd«      t        j
                  dd¬«      j	                  ddd«      t        j
                  dd¬«      j	                  ddd«      t        j
                  dd¬«      j	                  ddd«      g}t        ||«      D ]Õ  \  }}t        j                  t        j                  |j                  d«      }t        j                  t        j                  |j                  d«      }||f}| j                  ||«      }	t        j
                  |j                  |j                  ¬«      }
t        j                  ||
«        |	||«       | j                  ||
«       Œ× t        t        j                   «      }t        j                  dd¬«      t        j                  dd¬«      j	                  dd«      t        j                  dd¬«      j	                  ddd«      t        j                  dd¬«      j	                  dd«      t        j                  dd¬«      j	                  dd«      t        j                  dd¬«      j	                  ddd«      t        j                  dd¬«      j	                  ddd«      t        j                  dd¬«      j	                  ddd«      t        j                  dd¬«      j	                  ddd«      g	}|}t#        j$                  ||«      D �]  \  }}t        j                  t        j                  |j                  d«      }t        j                  t        j                  |j                  d«      }t        j                  t        j                  t'        |j                  |j                  «      d«      }|||f}| j                  ||«      }	t        j                   ||«      }
t        j
                  |
j                  d¬«      } |	|||«       | j                  ||
«       �Œ y )	Né   r[   rY   rS   é	   r]   é   rZ   )r4   rI   rò   ÚarangeÚreshaper™   rH   r   ri   rd   ry   re   rw   rš   rJ   rÿ  rÐ   rú  rû  r  )ro   ru   Úinput_operandsÚoutput_operandsrA   rÇ   r|   r   r   r²   rµ   Úinput1_operandsÚinput2_operandsrB   r  r	  s                   r   Útest_broadcastingzTestUFuncs.test_broadcastingí  sæ  € ô %¤R§[¡[Ó1ˆô �I‰I�a˜tÔ$Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�e 4Ô(×0Ñ0°°1Ó5ð7ˆô �H‰H�U $Ô'×/Ñ/°°!Ó4Ü�H‰H�U $Ô'×/Ñ/°°!Ó4Ü�H‰H�U $Ô'×/Ñ/°°!Ó4Ü�H‰H�Y dÔ+×3Ñ3°A°a¸Ó:Ü�H‰H�Y dÔ+×3Ñ3°A°a¸Ó:Ü�H‰H�Y dÔ+×3Ñ3°A°a¸Ó:ð<ˆô ˜^¨_Ö=‰IˆAˆväŸ™¤U§\¡\°1·6±6¸3Ó?ˆJÜŸ+™+¤e§k¡k°6·;±;ÀÓDˆKØ Ð,ˆDà—M‘M &¨$Ó/ˆEä—x‘x §¡°F·L±LÔAˆHÜ�K‰K˜˜8Ô$á�!�VÔà×#Ñ# F¨HÕ5ð >ô  %¤R§V¡VÓ,ˆô �I‰I�a˜tÔ$Ü�I‰I�e 4Ô(×0Ñ0°°1Ó5Ü�I‰I�i tÔ,×4Ñ4°Q°q¸Ó;Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨q°Ó3Ü�I‰I�e 4Ô(×0Ñ0°°1°QÓ7Ü�I‰I�e 4Ô(×0Ñ0°°1°QÓ7Ü�I‰I�e 4Ô(×0Ñ0°°1°QÓ7ð	9ˆð *ˆä×%Ñ% o°×G‰DˆAˆqäŸ+™+¤e§l¡l°A·F±F¸CÓ@ˆKÜŸ+™+¤e§l¡l°A·F±F¸CÓ@ˆKÜŸ+™+¤e§l¡l´C¸¿¹ÀÇÁÓ4GÈÓMˆKØ ¨kÐ:ˆDà—M‘M &¨$Ó/ˆEä—v‘v˜a “|ˆHÜ—X‘X˜hŸn™n°DÔ9ˆFá�!�Q˜ÔØ×#Ñ# F¨HÖ5ñ Hr$   c                 óâ   — t        j                  t         j                  dd«      }||f}t        ||f«      d„ «       }| j	                  |j
                  |   j                  j                  |«       y )NrS   rZ   c                 ó.   — t        j                  | |«      S r   ©rI   rÐ   ©Úa0Úa1s     r   Úmyaddz2TestUFuncs.test_implicit_output_npm.<locals>.myadd6  s   € ä—6‘6˜"˜b“>Ð!r$   )r   ri   rd   r   ÚassertEqualÚ	overloadsÚ	signatureÚreturn_type)ro   Úarr_tyÚsigr  s       r   Útest_implicit_output_npmz#TestUFuncs.test_implicit_output_npm0  sg   € ô —‘œUŸ\™\¨1¨cÓ2ˆØ�vÐˆä	ˆv�vÐÓ	ñ	"ó 
 ð	"ð 	×Ñ˜Ÿ™¨Ñ-×7Ñ7×CÑCÀVÕLr$   c                 óN  — d„ }t        j                  dd¬«      t        j                  dd¬«      j                  dd«      t        j                  dd¬«      j                  ddd«      t        j                  dd¬«      j                  dd«      t        j                  dd¬«      j                  dd«      t        j                  dd¬«      j                  ddd«      t        j                  dd¬«      j                  ddd«      t        j                  dd¬«      j                  ddd«      t        j                  dd¬«      j                  ddd«      g	}|}t        j                  ||«      D ]º  \  }}t        j                  t
        j                  |j                  d«      }t        j                  t
        j                  |j                  d«      }||f}| j                  ||d	¬
«      }	t        j                  ||«      }
 |	||«      }t         j                  j                  |
|«       Œ¼ y )Nc                 ó.   — t        j                  | |«      S r   r  r  s     r   ru   zATestUFuncs.test_broadcast_implicit_output_npm_nrt.<locals>.pyfunc=  ó   € Ü—6‘6˜"˜b“>Ð!r$   r  r[   rY   r  r  rS   rZ   T©rv   )rI   r  r  rú  rû  r   ri   rd   ry   rw   rÐ   r¤   Úassert_array_equal)ro   ru   r  r  rA   rB   r  r	  r   r²   rµ   rÇ   s               r   Ú&test_broadcast_implicit_output_npm_nrtz1TestUFuncs.test_broadcast_implicit_output_npm_nrt<  s£  € ò	"ô �I‰I�a˜tÔ$Ü�I‰I�e 4Ô(×0Ñ0°°1Ó5Ü�I‰I�i tÔ,×4Ñ4°Q°q¸Ó;Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨qÓ1Ü�I‰I�a˜tÔ$×,Ñ,¨Q¨q°Ó3Ü�I‰I�e 4Ô(×0Ñ0°°1°QÓ7Ü�I‰I�e 4Ô(×0Ñ0°°1°QÓ7Ü�I‰I�e 4Ô(×0Ñ0°°1°QÓ7ð	9ˆð *ˆä×%Ñ% o°ÖG‰DˆAˆqäŸ+™+¤e§l¡l°A·F±F¸CÓ@ˆKÜŸ+™+¤e§l¡l°A·F±F¸CÓ@ˆKØ Ð-ˆDà—M‘M &¨$°D�MÓ9ˆEä—v‘v˜a “|ˆHÙ˜1˜a“[ˆFÜ�J‰J×)Ñ)¨(°FÕ;ñ Hr$   c                 óL  — d„ }t        j                  ddd«      j                  dd«      }t        j                  |d¬«      }|j                  dd«      j                  d   }t        |«      }|j                  j                  r|j                  d	k(  sJ ‚t        |«      }|j                  j                  r|j                  dk(  sJ ‚t        |«      }|j                  d
k(  sJ ‚|j                  j                  rJ ‚|j                  j                  rJ ‚t        t        j                  |||gd«      «      }|||fgz  }|||fgz  }|||fgz  }|D ]Õ  \  }	}
t        |	«      t        |
«      f}| j                  ||d¬«      } ||	|
«      } ||	|
«      }| j                  |j                  j                  |j                  j                  «       | j                  |j                  j                  |j                  j                  «       t         j                  j!                  ||«       Œ× y )Nc                 ó.   — t        j                  | |«      S r   r  r  s     r   ru   z=TestUFuncs.test_implicit_output_layout_binary.<locals>.pyfuncZ  r'  r$   r   rS   é   r   rŽ   ÚF©ÚorderrZ   ÚAé   Tr(  )rI   Úlinspacer  rh   ÚTr   ÚflagsÚc_contiguousÚlayoutÚf_contiguousr’   rú  Úpermutationsrw   r  r¤   r)  )ro   ru   ÚXÚYÚZÚXtyÚYtyÚZtyÚ	testcasesÚarg0Úarg1r   r²   rµ   rÇ   s                  r   Ú"test_implicit_output_layout_binaryz-TestUFuncs.test_implicit_output_layout_binaryY  sÜ  € ò	"ô �K‰K˜˜1˜bÓ!×)Ñ)¨!¨QÓ/ˆä�H‰H�Q˜cÔ"ˆà�I‰I�a˜‹O×Ñ˜aÑ ˆä�Q‹iˆØ�w‰w×#Ò#¨¯
©
°cÒ(9Ð9Ð9Ü�Q‹iˆØ�w‰w×#Ò#¨¯
©
°cÒ(9Ð9Ð9Ü�Q‹iˆØ�z‰z˜SÒ Ð Ð Ø—7‘7×'Ò'Ð'Ð'Ø—7‘7×'Ò'Ð'Ð'äœ×/Ñ/°°A°q°	¸1Ó=Ó>ˆ	Ø�q˜!�f�XÑˆ	Ø�q˜!�f�XÑˆ	Ø�q˜!�f�XÑˆ	ã#‰JˆD�$Ü˜4“L¤&¨£,Ð/ˆDØ—M‘M &¨$°D�MÓ9ˆEÙ˜d DÓ)ˆHÙ˜4 Ó&ˆFà×Ñ˜XŸ^™^×8Ñ8Ø#Ÿ\™\×6Ñ6ô8à×Ñ˜XŸ^™^×8Ñ8Ø#Ÿ\™\×6Ñ6ô8ä�J‰J×)Ñ)¨(°FÕ;ñ $r$   c                 óÀ  — d„ }t        j                  ddd«      j                  dd«      }t        j                  |d¬«      }|j                  dd«      j                  d   }t        |«      }|j                  j                  r|j                  d	k(  sJ ‚t        |«      }|j                  j                  r|j                  dk(  sJ ‚t        |«      }|j                  d
k(  sJ ‚|j                  j                  rJ ‚|j                  j                  rJ ‚|||fD ]Æ  }t        |«      f}	| j                  ||	d¬«      }
 ||«      } |
|«      }| j                  |j                  j                  |j                  j                  «       | j                  |j                  j                  |j                  j                  «       t         j                  j                  ||«       ŒÈ y )Nc                 ó,   — t        j                  | «      S r   ©rI   rE  )r  s    r   ru   z<TestUFuncs.test_implicit_output_layout_unary.<locals>.pyfunc  s   € Ü—7‘7˜2“;Ðr$   r   rS   r-  r   rŽ   r.  r/  rZ   r1  Tr(  )rI   r3  r  rh   r4  r   r5  r6  r7  r8  rw   r  r¤   r)  )ro   ru   r:  r;  r<  r=  r>  r?  rA  r   r²   rµ   rÇ   s                r   Ú!test_implicit_output_layout_unaryz,TestUFuncs.test_implicit_output_layout_unary~  s„  € ò	ô �K‰K˜˜1˜bÓ!×)Ñ)¨!¨QÓ/ˆä�H‰H�Q˜cÔ"ˆà�I‰I�a˜‹O×Ñ˜aÑ ˆä�Q‹iˆØ�w‰w×#Ò#¨¯
©
°cÒ(9Ð9Ð9Ü�Q‹iˆØ�w‰w×#Ò#¨¯
©
°cÒ(9Ð9Ð9Ü�Q‹iˆØ�z‰z˜SÒ Ð Ð Ø—7‘7×'Ò'Ð'Ð'Ø—7‘7×'Ò'Ð'Ð'à˜˜1“IˆDÜ˜4“L�?ˆDØ—M‘M &¨$°D�MÓ9ˆEÙ˜d“|ˆHÙ˜4“[ˆFà×Ñ˜XŸ^™^×8Ñ8Ø#Ÿ\™\×6Ñ6ô8à×Ñ˜XŸ^™^×8Ñ8Ø#Ÿ\™\×6Ñ6ô8ä�J‰J×)Ñ)¨(°FÕ;ñ r$   r   )br,   r�   r‚   rÎ   rÒ   rÕ   rÙ   rà   ræ   rê   rí   rð   ró   rö   rù   rý   r  r  r	  r  r  rI   Úabsr  r  r   r&  r*  r-  r0  r3  r6  r9  r<  r@  rC  rF  rI  rL  rQ  rT  rW  rZ  r]  r`  rd  rg  rj  rn  rr  ru  rx  r{  r~  r�  r„  rˆ  r‹  rŽ  r‘  r•  r˜  r›  rž  r¡  r¤  r§  rª  r­  r°  r³  r·  rº  r½  rÀ  rÄ  rÇ  rÊ  rÌ  rÑ  rÔ  rØ  rÛ  rÞ  rá  r#   rä  rç  rê  rí  rð  rõ  r  r  r$  r*  rC  rG  r@   r$   r   rË   rË   :  s   „ ó=ò&ò+ò+ò<ò7ò8ò=ò/ò7ò+ò<ò:ò2ò2ò,òCò'ð $&§6¡6ó Cò/ò2ò3ò'ò'ò2ò3ò2ò3ò4ò4ò4ò3ò)ò2òBò,ò2ò2ò2ò5ò5ò5ò6ò3ò3ò3ò3ò6ò6òKò 5ò5ò5ò5ò2ò1ò2ò-ò2ò2ò8ò/ò5ò4ò0ò.ò-ò.ò.ò*ò*ò'ò'ò
ò
ò
ò
ò*ò6ò7ð ñ2ó ð2ð ñ3ó ð3ò3ò2ò3ò<òLAò\A6òF
Mò<ò:#<óJ<r$   rË   c                   ó.  — e Zd Zd„ Z	 	 	 d.d„Z	 	 	 	 d/d„Zd„ Zd„ Zd„ Z	 d0d„Z		 d0d	„Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.y)1ÚTestArrayOperatorsc                 ó¸   — | j                  |j                  j                  |j                  j                  «       t        j                  j                  ||«       y r   )r  rJ   r–   rI   r¤   r¥   )ro   rµ   Úgots      r   Ú_check_resultsz!TestArrayOperators._check_results¡  s8   € Ø×Ñ˜Ÿ™×,Ñ,¨c¯i©i¯n©nÔ=Ü
�
‰
×,Ñ,¨X°sÕ;r$   Nc                 ó>  — |€g }|€g }t        |«      }t        | j                  «      }|j                  |«       |}	|D ]]  }
|
\  }}||v st	        |t
        j                  «      sŒ'| j                  |	|f|¬«      } |	|«      } ||«      }| j                  ||«       Œ_ y )Nr(  )	r;   r’   rn   ÚextendrD   r   ri   rw   rM  )ro   Úoperatorrv   r¨   r©   r}   r~   Úoperator_funcrn   ru   r¬   r­   r|   r²   rµ   rL  s                   r   Úunary_op_testz TestArrayOperators.unary_op_test¥  s¬   € ð ÐØˆKØÐ$Ø "ÐÜ4°XÓ>ˆÜ�d—k‘kÓ"ˆØ�‰Ð'Ô(ØˆÛ!ˆKØ(3Ñ%ˆM˜:à˜{Ñ*Ü# J´·±Ô<Øà—M‘M &¨:¨-¸S�MÓAˆEÙ˜mÓ,ˆHÙ˜Ó&ˆCØ×Ñ ¨#Õ.ñ "r$   c                 óª  — |€g }|€g }t        |«      }t        | j                  «      }	|	j                  |«       |}
t        j
                  j                  d«      }|	D ]ô  }|\  }}t        j                  t        |d|«      «      }|}||v rŒ/|rt	        j                  d|¬«      d   }t        |t        j                  «      r|}|}|rNt	        j                  |k  «      r6Œ„|j                  ddd«      j!                  |«      }t#        |«      }|r|k  rŒ¹||f}| j%                  |
||¬«      } |
||«      } |||«      }| j'                  ||«       Œö y )NrS   rJ   rY   r   éd   é
   r(  )r=   r’   rn   rO  rI   ÚrandomÚRandomStater   Úas_dtyperý  r™   rD   r   ri   r•   ÚuniformÚastyper   rw   rM  )ro   rP  rv   r¨   r©   r}   r~   Úpositive_rhsrQ  rn   ru   Úrandom_stater¬   Úinput_operand1r|   Úinput_dtypeÚinput_type1ÚzeroÚinput_operand0Úinput_type0r   r²   rµ   rL  s                           r   Úbinary_op_testz!TestArrayOperators.binary_op_test¼  sb  € ð ÐØˆKØÐ$Ø "ÐÜ5°hÓ?ˆÜ�d—k‘kÓ"ˆØ�‰Ð'Ô(Øˆô —y‘y×,Ñ,¨QÓ/ˆÛ!ˆKØ)4Ñ&ˆN˜JÜ'×0Ñ0Ü˜
 G¨ZÓ8ó:ˆKà$ˆKà˜[Ñ(ØáÜ—x‘x ¨Ô5°aÑ8�ô ˜*¤e§k¡kÔ2Ø!/�Ø(�Ù¤B§F¡F¨>¸DÑ+@Ô$AØà".×"6Ñ"6°q¸#¸rÓ"B×!JÑ!JØó"!�ä$ ^Ó4�Ù N°TÒ$9Øà Ð-ˆDØ—M‘M &¨$°C�MÓ8ˆEÙ˜n¨nÓ=ˆHÙ˜¨Ó7ˆCØ×Ñ ¨#Õ.ñ; "r$   c                 óÀ   — dt         j                  fdt         j                  ft        j                  ddg«      t        j                  t         j                  dd«      fgS )NTFrS   rZ   )r   ÚbooleanrI   rh   ri   rÑ   s    r   Úbitwise_additional_inputsz,TestArrayOperators.bitwise_additional_inputsê  sL   € ð ”5—=‘=Ð!Ø”E—M‘MÐ"Ü�X‰X�t˜U�mÓ$¤e§k¡k´%·-±-ÀÀCÓ&HÐIð
ð 	
r$   c           	      ó   — |j                  dg «      }|t        j                  t        j                  t        j                  t        j                  dd«      t        j                  t        j                  dd«      gz  } | j
                  |i |¤ŽS )Nr¨   rS   rZ   )Ú
setdefaultr   rf   rg   ri   rc  )ro   r   Úkwsr¨   s       r   Úbinary_int_op_testz%TestArrayOperators.binary_int_op_testó  sp   € Ø—n‘n ]°BÓ7ˆØÜ�M‰Mœ5Ÿ=™=Ü�K‰KœŸ™ q¨#Ó.Ü�K‰KœŸ™ q¨#Ó.ð
ñ 	
ˆð
 #ˆt×"Ñ" DÐ0¨CÑ0Ð0r$   c                 óp   — |j                  dg «      }|| j                  «       z  } | j                  |i |¤ŽS )Nr©   )rh  rf  rj  )ro   r   ri  r©   s       r   Úbinary_bitwise_op_testz)TestArrayOperators.binary_bitwise_op_testü  s@   € ØŸN™NÐ+>ÀÓCÐØ˜T×;Ñ;Ó=Ñ=ÐØ&ˆt×&Ñ&¨Ð4°Ñ4Ð4r$   c                 óp  — t        |«      }|}|r| j                  }	nt        j                  j                  }	|D �
cg c]  }
t        j
                  ||
¬«      ‘Œ }}
|D �
cg c]  }
t        j
                  ||
¬«      ‘Œ }}
|D ��
cg c]  }|D ]
  }
 |
|«      ‘Œ Œ }}}
||z   }t        j                  ||«      D ]l  \  }}t        |«      }t        |«      }||f}| j                  ||«      }|j                  «       } |||«       |j                  «       } |||«        |	||«       Œn y c c}
w c c}
w c c}
}w )NrY   )rF   rÿ  rI   r¤   Úassert_allcloserh   rú  rû  r   rw   Úcopy)ro   rP  Ú
lhs_valuesÚ
rhs_valuesÚ
lhs_dtypesÚ
rhs_dtypesÚpreciserQ  ru   Ú	assertionrJ   Ú
lhs_inputsÚ
rhs_arraysÚvÚrhs_scalarsÚ
rhs_inputsÚlhsÚrhsÚlhs_typeÚrhs_typer   r²   rµ   rL  s                           r   Úinplace_op_testz"TestArrayOperators.inplace_op_test  s:  € ä6°xÓ@ˆØˆáØ×/Ñ/‰IäŸ
™
×2Ñ2ˆIñ
 $.ó/Ù#-˜%ô —h‘h˜z°Ö7Ø#-ð 	ð /ñ $.ó/Ù#-˜%ô —h‘h˜z°Ö7Ø#-ð 	ð /á)3ÔL© AÃ¸‘u˜Q•xÀ�x¨ˆÑLØ +Ñ-ˆ
ä!×)Ñ)¨*°jÖA‰HˆC�Ü˜c“{ˆHÜ˜c“{ˆHØ˜hÐ'ˆDØ—M‘M &¨$Ó/ˆEØ—x‘x“zˆHÙ�8˜SÔ!Ø—(‘(“*ˆCÙ�#�sŒOÙ�c˜8Õ$ñ Bùò/ùò/ùãLs   »D(ÁD-ÂD2c           	      óÆ   — | j                  |||t        j                  t        j                  ft        j                  t        j                  t        j                  f|¬«      S )N©rt  )r  rI   rf   rg   re   )ro   rP  rp  rq  rt  s        r   Úinplace_float_op_testz(TestArrayOperators.inplace_float_op_test   sK   € ð ×#Ñ# H¨j¸*Ü%'§Z¡Z´·±Ð$<Ü%'§Z¡Z´·±¼R¿X¹XÐ$FØ,3ð $ó 5ð 	5r$   c                 óÄ   — | j                  |||t        j                  t        j                  t        j                  ft        j                  t        j
                  f«       y r   )r  rI   rk   rc   re   rb   ©ro   rP  rp  rq  s       r   Úinplace_int_op_testz&TestArrayOperators.inplace_int_op_test)  s<   € Ø×Ñ˜X z°:Ü Ÿh™h¬¯©´"·(±(Ð;Ü Ÿh™h¬¯	©	Ð2õ	4r$   c                 ó®   — | j                  |||«       | j                  |||t        j                  ft        j                  t        j                  f«       y r   )r…  r  rI   rÁ   r„  s       r   Úinplace_bitwise_op_testz*TestArrayOperators.inplace_bitwise_op_test.  sA   € Ø× Ñ  ¨:°zÔBØ×Ñ˜X z°:Ü Ÿh™h˜[¬2¯8©8´R·X±XÐ*>õ	@r$   c                 ó&   — | j                  d«       y ©NÚ+©rR  rÑ   s    r   Útest_unary_positive_array_opz/TestArrayOperators.test_unary_positive_array_op6  ó   € Ø×Ñ˜3Õr$   c                 ó&   — | j                  d«       y ©NÚ-r‹  rÑ   s    r   Útest_unary_negative_array_opz/TestArrayOperators.test_unary_negative_array_op9  r�  r$   c                 ó  — | j                  dt        j                  t        j                  t        j                  t        j                  dd«      t        j                  t        j                  dd«      g| j                  «       ¬«       y )NÚ~rS   rZ   )r¨   r©   )rR  r   rf   rg   ri   rf  rÑ   s    r   Útest_unary_invert_array_opz-TestArrayOperators.test_unary_invert_array_op<  sa   € Ø×Ñ˜3Ü(-¯©´u·}±}Ü(-¯©´E·M±MÀ1ÀcÓ(JÜ(-¯©´E·M±MÀ1ÀcÓ(Jð(Lð .2×-KÑ-KÓ-Mð	 	õ 	Or$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz+=©rT   ç      ø?r  ©éûÿÿÿr   ç      @)r‚  rP  ÚiaddrÑ   s    r   Útest_inplace_addz#TestArrayOperators.test_inplace_addF  ó*   € Ø×"Ñ" 4ª²|ÔDØ×"Ñ"¤8§=¡=²,ÂÕMr$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz-=r–  r˜  )r‚  rP  ÚisubrÑ   s    r   Útest_inplace_subz#TestArrayOperators.test_inplace_subJ  r�  r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz*=r–  r˜  )r‚  rP  ÚimulrÑ   s    r   Útest_inplace_mulz#TestArrayOperators.test_inplace_mulN  r�  r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz//=r–  ©r™  g      ô?rš  )r‚  rP  Ú	ifloordivrÑ   s    r   Útest_inplace_floordivz(TestArrayOperators.test_inplace_floordivR  s/   € Ø×"Ñ" 5ª,ºÔHØ×"Ñ"¤8×#5Ñ#5²|Ú#2õ	4r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz/=r–  r˜  r¥  )r‚  rP  ÚitruedivrÑ   s    r   Útest_inplace_divz#TestArrayOperators.test_inplace_divW  s/   € Ø×"Ñ" 4ª²|ÔDØ×"Ñ"¤8×#4Ñ#4²lÚ#2õ	4r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz%=r–  ©r™  r2  rš  )r‚  rP  ÚimodrÑ   s    r   Útest_inplace_remainderz)TestArrayOperators.test_inplace_remainder\  r�  r$   c                 ó„   — | j                  dg d¢g d¢d¬«       | j                  t        j                  g d¢g d¢d¬«       y )Nz**=r–  r¬  Fr�  )r‚  rP  ÚipowrÑ   s    r   Útest_inplace_powz#TestArrayOperators.test_inplace_pow`  s>   € Ø×"Ñ" 5ª,ºØ+0ð 	#ô 	2à×"Ñ"¤8§=¡=²,ÂØ+0ð 	#õ 	2r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz&=©r   rS   r2  r  é3   ©r   é   r  é*   éÿ   )r‡  rP  ÚiandrÑ   s    r   Útest_inplace_andz#TestArrayOperators.test_inplace_andf  ó2   € Ø×$Ñ$ TÒ+;Ú%9ô	;à×$Ñ$¤X§]¡]Ò4DÚ%9õ	;r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz|=r³  rµ  )r‡  rP  ÚiorrÑ   s    r   Útest_inplace_orz"TestArrayOperators.test_inplace_orl  s2   € Ø×$Ñ$ TÒ+;Ú%9ô	;à×$Ñ$¤X§\¡\Ò3CÚ%9õ	;r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz^=r³  rµ  )r‡  rP  ÚixorrÑ   s    r   Útest_inplace_xorz#TestArrayOperators.test_inplace_xorr  r»  r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz<<=©r   rŽ   iöÿÿÿiÍÿÿÿ©r   rS   r   é   )r…  rP  ÚilshiftrÑ   s    r   Útest_inplace_lshiftz&TestArrayOperators.test_inplace_lshiftx  ó1   € Ø× Ñ  Ò(8º-ÔHØ× Ñ ¤×!1Ñ!1Ò3CÚ!.õ	0r$   c                 ó|   — | j                  dg d¢g d¢«       | j                  t        j                  g d¢g d¢«       y )Nz>>=rÃ  rÄ  )r…  rP  ÚirshiftrÑ   s    r   Útest_inplace_rshiftz&TestArrayOperators.test_inplace_rshift}  rÈ  r$   c                 ó¬  — d„ }t        j                  d«      } ||«      }| j                  |d   |d   k7  xr |d   |d   k7  «       t        j                  d«      } t        |«      |«      }| j                  |d   |d   k7  xr |d   |d   k7  «       t         j                  j                  ||«       t         j                  j                  ||«       y)z¶
        Verify that the unary positive operator copies values, and doesn't
        just alias to the input array (mirrors normal Numpy/Python
        interaction behavior).
        c                 ó    — | ­}d| d<   d|d<   |S )Nr  r   r   rS   r@   )r  Úa2s     r   rã   z<TestArrayOperators.test_unary_positive_array_op_2.<locals>.f‰  s    € Ø�ˆBØˆBˆq‰EØˆBˆq‰EØˆIr$   rU  r   rS   N)rI   r™   Ú
assertTruer   r¤   r)  )ro   rã   r  rÎ  Úa3Úa4s         r   Útest_unary_positive_array_op_2z1TestArrayOperators.test_unary_positive_array_op_2‚  sµ   € ò	ô �X‰X�b‹\ˆÙˆr‹UˆØ�‰˜˜1™  A¡™Ò9¨2¨a©5°B°q±E©>Ô:Ü�X‰X�b‹\ˆØŒT�!‹W�R‹[ˆØ�‰˜˜1™  A¡™Ò9¨2¨a©5°B°q±E©>Ô:Ü
�
‰
×%Ñ% b¨"Ô-Ü
�
‰
×%Ñ% b¨"Õ-r$   c                 ó&   — | j                  d«       y r‰  ©rc  rÑ   s    r   Útest_add_array_opz$TestArrayOperators.test_add_array_op›  ó   € Ø×Ñ˜CÕ r$   c                 ó&   — | j                  d«       y r�  rÔ  rÑ   s    r   Útest_subtract_array_opz)TestArrayOperators.test_subtract_array_opž  rÖ  r$   c                 ó&   — | j                  d«       y )NÚ*rÔ  rÑ   s    r   Útest_multiply_array_opz)TestArrayOperators.test_multiply_array_op¡  rÖ  r$   c                 óN   — d }t         j                  }| j                  d|¬«       y )NÚ/rÜ   )r   rg   rc  rÞ   s     r   Útest_divide_array_opz'TestArrayOperators.test_divide_array_op¤  s#   € ØˆÜ—}‘}ˆØ×Ñ˜C°ÐÕ>r$   c                 óà  — t        j                  d«      t        j                  ft        j                  d«      t        j                  ft        j                  d«      t        j                  ft        j                  d«      t        j                  ft        j
                  d«      t        j
                  ft        j
                  d«      t        j
                  ft        j                  d«      t        j                  ft        j                  d«      t        j                  ft        j                  d«      t        j                  ft        j                  d	«      t        j                  ft        j                  dd
gd¬«      t        j                  t        j                  dd«      ft        j                  ddgd¬«      t        j                  t        j                  dd«      ft        j                  g d¢d¬«      t        j                  t        j                  dd«      ft        j                  g d¢d¬«      t        j                  t        j
                  dd«      ft        j                  ddgd¬«      t        j                  t        j                  dd«      ft        j                  dd	gd¬«      t        j                  t        j                  dd«      fg| _
        | j                  d«       y )NrS   éþÿÿÿr   r   r™  rU   r—  g      Àg      @r2  rX   rY   rZ   r  r[   )rT   rS   rŽ   r\   )rT   rS   é   r]   r^   r_   z//)rI   rb   r   rc   rd   re   rf   rg   rh   ri   rn   rc  rÑ   s    r   Útest_floor_divide_array_opz-TestArrayOperators.test_floor_divide_array_op©  sÕ  € ô �Y‰Y�q‹\œ5Ÿ<™<Ð(Ü�X‰X�b‹\œ5Ÿ;™;Ð'Ü�X‰X�a‹[œ%Ÿ+™+Ð&Ü�Y‰Y�q‹\œ5Ÿ<™<Ð(Ü�X‰X�b‹\œ5Ÿ;™;Ð'Ü�X‰X�a‹[œ%Ÿ+™+Ð&ä�Z‰Z˜ÓœuŸ}™}Ð-Ü�Z‰Z˜‹_œeŸm™mÐ,ä�Z‰Z˜ÓœuŸ}™}Ð-Ü�Z‰Z˜‹_œeŸm™mÐ,ä�X‰X�q˜�e 4Ô(¬%¯+©+´e·l±lÀAÀsÓ*KÐLÜ�X‰X�q˜�e 4Ô(¬%¯+©+´e·l±lÀAÀsÓ*KÐLÜ�X‰X’h dÔ+¬U¯[©[¼¿¹ÀaÈÓ-MÐNÜ�X‰X’h dÔ+¬U¯[©[¼¿¹ÀaÈÓ-MÐNÜ�X‰X�t˜S�k¨Ô.Ü�[‰[œŸ™¨¨3Ó/ð1ä�X‰X�t˜S�k¨Ô.Ü�[‰[œŸ™¨¨3Ó/ð1ð)
ˆŒð. 	×Ñ˜DÕ!r$   c                 ó&   — | j                  d«       y )NÚ%rÔ  rÑ   s    r   Útest_remainder_array_opz*TestArrayOperators.test_remainder_array_opÅ  rÖ  r$   c                 ó*   — | j                  dd¬«       y )Nz**T©r[  rÔ  rÑ   s    r   Útest_power_array_opz&TestArrayOperators.test_power_array_opÈ  s   € Ø×Ñ˜D¨tÐÕ4r$   c                 ó*   — | j                  dd¬«       y )Nz<<Trç  ©rj  rÑ   s    r   Útest_left_shift_array_opz+TestArrayOperators.test_left_shift_array_opË  ó   € Ø×Ñ °4ÐÕ8r$   c                 ó*   — | j                  dd¬«       y )Nz>>Trç  rê  rÑ   s    r   Útest_right_shift_array_opz,TestArrayOperators.test_right_shift_array_opÎ  rì  r$   c                 ó&   — | j                  d«       y )NÚ&©rl  rÑ   s    r   Útest_bitwise_and_array_opz,TestArrayOperators.test_bitwise_and_array_opÑ  ó   € Ø×#Ñ# CÕ(r$   c                 ó&   — | j                  d«       y )NÚ|rñ  rÑ   s    r   Útest_bitwise_or_array_opz+TestArrayOperators.test_bitwise_or_array_opÔ  ró  r$   c                 ó&   — | j                  d«       y )NÚ^rñ  rÑ   s    r   Útest_bitwise_xor_array_opz,TestArrayOperators.test_bitwise_xor_array_op×  ró  r$   c                 ó&   — | j                  d«       y )Nz==rÔ  rÑ   s    r   Útest_equal_array_opz&TestArrayOperators.test_equal_array_opÚ  ó   € Ø×Ñ˜DÕ!r$   c                 ó&   — | j                  d«       y )NÚ>rÔ  rÑ   s    r   Útest_greater_array_opz(TestArrayOperators.test_greater_array_opÝ  rÖ  r$   c                 ó&   — | j                  d«       y )Nz>=rÔ  rÑ   s    r   Útest_greater_equal_array_opz.TestArrayOperators.test_greater_equal_array_opà  rü  r$   c                 ó&   — | j                  d«       y )NÚ<rÔ  rÑ   s    r   Útest_less_array_opz%TestArrayOperators.test_less_array_opã  rÖ  r$   c                 ó&   — | j                  d«       y )Nz<=rÔ  rÑ   s    r   Útest_less_equal_array_opz+TestArrayOperators.test_less_equal_array_opæ  rü  r$   c                 ó&   — | j                  d«       y )Nz!=rÔ  rÑ   s    r   Útest_not_equal_array_opz*TestArrayOperators.test_not_equal_array_opé  rü  r$   )TNNNN)TNNNNF)T)/r,   r�   r‚   rM  rR  rc  rf  rj  rl  r  r‚  r…  r‡  rŒ  r‘  r”  rœ  r   r£  r§  rª  r®  r±  rº  r¾  rÁ  rÇ  rË  rÒ  rÕ  rØ  rÛ  rÞ  râ  rå  rè  rë  rî  rò  rö  rù  rû  rÿ  r  r  r  r  r@   r$   r   rJ  rJ  Ÿ  s	  „ ò<ð +/Ø:>Ø>Bó/ð. ,0Ø;?Ø?CØ$)ó,/ò\
ò1ò5ð 9=ó%ð@ '+ó5ò4ò
@ò ò òOòNòNòNò4ò
4ò
Nò2ò;ò;ò;ò0ò
0ò
.ò2!ò!ò!ò?ò
"ò8!ò5ò9ò9ò)ò)ò)ò"ò!ò"ò!ò"ó"r$   rJ  c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚTestScalarUFuncsa  check the machinery of ufuncs works when the result is an scalar.
    These are not exhaustive because:
    - the machinery to support this case is the same for all the functions of a
      given arity.
    - the result of the inner function itself is already tested in TestUFuncs
    c                 ój  — t        ||«      D �]  \  }} t        |«      |«      } ||Ž } |t        ||«      Ž }dj                  ||«      }	t	        t
        j                  t
        j                  ft
        j                  t
        j                  ft
        j                  t
        j                  ft
        j                  t
        j                  fg«      }
||
v rt        |«      }n­t        j                  |j                  t        j                  «      rt        |«      }nst        j                  |j                  t        j                  «      rt        |«      }n9t        j                  |j                  t        j                   «      rt#        |«      }||j$                  |   j&                  j(                  fz   }t+        |D �cg c]  }|t
        j,                  k(  ‘Œ c}«      rd}n/t+        |D �cg c]  }|t
        j.                  k(  ‘Œ c}«      rd}nd}| j1                  |||	|¬«       �Œ y c c}w c c}w )Nzfor args {0} typed {1}r÷  rø  Úexact)r¼   rù  )rH   r   rO   r+   Úsetr   rc   rd   re   ÚfloatrI   Ú
issubdtyperJ   ÚinexactÚintegerÚintrÁ   Úboolr  r   r!  r•   rf   rg   rÿ  )ro   ru   Ú	arg_typesÚ
arg_valuesrL   r   r²   rL  rµ   r¼   ÚspecialÚalltypesÚtrù  s                 r   Ú	run_ufunczTestScalarUFuncs.run_ufuncõ  sª  € Ü 	¨:×6‰LˆF�DØ ”D˜“L Ó(ˆEÙ˜�,ˆCÙœ¨v°tÓ<Ð=ˆHà*×1Ñ1°$¸Ó?ˆCô Ü—‘œeŸl™lÐ+Ü—‘œuŸ{™{Ð+Ü—‘œeŸl™lÐ+Ü—‘œuŸ{™{Ð+ð	ó ˆGð ˜Ñ Ü  ›?‘ô —=‘= §¡´·±Ô<Ü$ X›‘HÜ—]‘] 8§>¡>´2·:±:Ô>Ü" 8›}‘HÜ—]‘] 8§>¡>´2·8±8Ô<Ü# H›~�Hà §¡°Ñ!8×!BÑ!B×!NÑ!NÐ PÑPˆHô ±Ó9±¨1�AœŸ™Ó&°Ñ9Ô:Ø‘Ü±(Ó;±(¨Q�aœ5Ÿ=™=Ó(°(Ñ;Ô<Ø‘à�à×#Ñ# C¨°sÀÐ#ÖFña 7ùòR :ùâ;s   Æ?H+
Ç,H0
c                 óü   — d„ }g d¢}t         j                  ft         j                  ft         j                  ft         j                  ft         j
                  ft         j                  fg}| j                  |||«       y )Nc                 ó,   — t        j                  | «      S r   rF  ©rA   s    r   Ú_funcz7TestScalarUFuncs.test_scalar_unary_ufunc.<locals>._func)  s   € Ü—7‘7˜1“:Ðr$   )©r2  r  )rS   r  )çš™™™™™¹?)çš™™™™™É?)r   rc   rb   re   rd   rf   rg   r  ©ro   r  r  Útyss       r   Útest_scalar_unary_ufuncz(TestScalarUFuncs.test_scalar_unary_ufunc(  s\   € ò	ò 6ˆÜ—‘ˆ~¤§¡˜Ü—‘ˆ~¤§¡˜Ü—‘Ð¤%§-¡-Ð!1ð3ˆð 	�‰�u˜c 4Õ(r$   c                 ó  — d„ }g d¢}t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  g}| j                  |t        ||«      t        ||«      «       y )Nc                 ó.   — t        j                  | |«      S r   r  ©rA   rB   s     r   r  z@TestScalarUFuncs.test_scalar_binary_uniform_ufunc.<locals>._func3  ó   € Ü—6‘6˜!˜A“;Ðr$   ©r2  r2  rS   r2  r  r   )	r   rc   rb   re   rd   rf   rg   r  rH   r!  s       r   Ú test_scalar_binary_uniform_ufuncz1TestScalarUFuncs.test_scalar_binary_uniform_ufunc2  sX   € ò	ò $ˆÜ�{‰{œEŸL™LÜ�{‰{œEŸL™L¬%¯-©-¼¿¹ðHˆà�‰�uœc # s›m¬S°°t«_Õ=r$   c                 ó@  — d„ }g d¢}t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  g}| j                  |t        j                  ||«      t        j                  ||«      «       y )Nc                 ó.   — t        j                  | |«      S r   r  r&  s     r   r  z>TestScalarUFuncs.test_scalar_binary_mixed_ufunc.<locals>._func<  r'  r$   r(  )
r   rc   rb   re   rd   rf   rg   r  rú  rû  r!  s       r   Útest_scalar_binary_mixed_ufuncz/TestScalarUFuncs.test_scalar_binary_mixed_ufunc;  sk   € ò	ò $ˆÜ�{‰{œEŸL™LÜ�{‰{œEŸL™LÜ�}‰}œeŸm™mð-ˆð 	�‰�uœi×/Ñ/°°SÓ9Ü ×(Ñ(¨¨tÓ4õ	6r$   N)r,   r�   r‚   Ú__doc__r  r#  r)  r,  r@   r$   r   r
  r
  í  s   „ ñò1Gòf)ò>ó	6r$   r
  c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestUfuncIssuesc                 óÈ   — t        dg«      d„ «       }t        j                  dd¬«      }t        j                  dd¬«      }| j                   |||«      ||z   ||z   z   «       y )Nz(float64,float64)c                 ó\   — t        j                  | |«      t        j                  | |«      z   S r   r  )Úx1Úx2s     r   Úfooz+TestUfuncIssues.test_issue_651.<locals>.fooK  s!   € ä—6‘6˜"˜b“>¤B§F¡F¨2¨r£NÑ2Ð2r$   rU  r_   rY   )r   rI   r  rÿ  )ro   r4  rÅ   rÆ   s       r   Útest_issue_651zTestUfuncIssues.test_issue_651I  sb   € ä	Ð'Ð(Ó	)ñ	3ó 
*ð	3ô �I‰I�b Ô%ˆÜ�I‰I�b Ô%ˆØ×Ñ¡ A q£	¨A°©E°a¸!±eÑ+<Õ=r$   c                 ó(  ‡ ‡‡— d„ }|Št        ‰«      Šˆˆˆ fd„}t        j                  g d¢«      t        j                  g d¢«      g}|D ]E  } ||d«        ||t        j                  d«      «        ||t        j
                  g d¢«      «       ŒG y)zF
        <float32 ** int> should return float32, not float64.
        c                 ó.   — t        j                  | |«      S r   )rI   rø   r&  s     r   r4  z,TestUfuncIssues.test_issue_2006.<locals>.fooW  s   € Ü—8‘8˜A˜q“>Ð!r$   c                 ó²   •—  ‰| |«      }t         j                  j                  | ‰| |«      «       ‰j                  |j                  | j                  «       y r   )rI   r¤   r¥   r  rJ   )rA   rB   rL  r²   ru   ro   s      €€€r   Úcheckz.TestUfuncIssues.test_issue_2006.<locals>.check\  sB   ø€ Ù˜˜1“+ˆCÜ�J‰J×0Ñ0°±f¸QÀ³lÔCð ×Ñ˜SŸY™Y¨¯©Õ0r$   )rS   r2  r  )ù              ð?r2  y      @      Àr  )r2  r2  r  N)r   rI   rf   rþ  rd   re   )ro   r4  r9  ÚxsrA   r²   ru   s   `    @@r   Útest_issue_2006zTestUfuncIssues.test_issue_2006S  sq   ú€ ò	"àˆÜ�V“ˆö	1ô �j‰jšÓ#¤R§\¡\²/Ó%BÐCˆÛˆAÙ�!�QŒKÙ�!”R—Y‘Y˜q“\Ô"Ù�!”R—X‘XšiÓ(Õ)ñ r$   N)r,   r�   r‚   r5  r<  r@   r$   r   r/  r/  G  s   „ ò>ó*r$   r/  c                   ór   — e Zd ZdZdZddddddddœZdd„Zd„ Zd	„ Zd
„ Z	e
d„ «       Ze
d„ «       Ze
d„ «       Zy)Ú_LoopTypesTestera¦  Test code generation for the different loop types defined by ufunc.

    This test relies on class variables to configure the test. Subclasses
    of this class can just override some of these variables to check other
    ufuncs in a different compilation context. The variables supported are:

    _funcs: the ufuncs to test
    _skip_types: letter types that force skipping the loop when testing
                 if present in the NumPy ufunc signature.
    _supported_types: only test loops where all the types in the loop
                      signature are in this collection. If unset, all.

    Note that both, _skip_types and _supported_types must be met for a loop
    to be tested.

    The NumPy ufunc signature has a form like 'ff->f' (for a binary ufunc
    loop taking 2 floats and resulting in a float). In a NumPy ufunc object
    you can get a list of supported signatures by accessing the attribute
    'types'.
    ÚOegGr2  r   rŽ   ))rc  r.  )r_  ÚD)r_  r.  )r;  r@  )rw  r.  )rK  Úd)ré   rA  c                 óh  — |dv rt        j                  g d¢|¬«      S |dv rt        j                  g d¢|¬«      S |dv rt        j                  g d¢|¬«      S |d   d	k(  r)t        |«      d
k(  rd}t        j                  g d¢|¬«      S |d   dk(  r)t        |«      d
k(  rd}t        j                  g d¢|¬«      S |dv r$t        j                  dddt        d«      g|¬«      S |dv r?t        j
                  dk7  rd}nd}t        j                  |ddt        d«      z  dg|¬«      S t        d|›d�«      ‚)z<return a suitable array argument for testing the letter typeÚbhilq)rS   r   r   rà  rY   ÚBHILQ)rS   r2  r   r   Ú?)TFFTr   ÚmrS   zm8[D])r2  éýÿÿÿÚNaTr   ÚMzM8[D])ÚNatrS   r¿   r   Úfdr—  g      ÀrV   ÚnanÚFDr   y       €      ð¿y              ð¿y      ø?      ø?r:  y                ztype z not understood)rI   rh   Úlenr  r   ÚplatformÚRuntimeError)ro   Úa_letter_typeÚindexÚnegzeros       r   Ú_arg_for_typez_LoopTypesTester._arg_for_typeŒ  s5  € ð ˜GÑ#ä—8‘8šM°Ô?Ð?Ø˜GÑ#Ü—8‘8šL°Ô>Ð>Ø˜cÑ!ä—8‘8Ò6¸mÔLÐLØ˜1Ñ Ò$ä�=Ó! QÒ&Ø '�Ü—8‘8Ò-°]ÔCÐCØ˜1Ñ Ò$ä�=Ó! QÒ&Ø '�Ü—8‘8Ò-°]ÔCÐCØ˜dÑ"ä—8‘8˜S $¨¬U°5«\Ð:Ø"/ô1ð 1à˜dÑ"ä�|‰|˜wÒ&ð (‘à$�Ü—8‘8˜W j°"´u¸U³|Ñ2CÀRÐHØ"/ô1ð 1õ º=ÐJÓKÐKr$   c                 óD  ‡‡‡— |d |j                    ||j                   d  z   Št        | dg «      Š‰rt        ˆfd„‰D «       «      ry t        | dg «      Št        ˆfd„‰D «       «      ry t        | dg «      }|rt        ˆfd„|D «       «      sy | j	                  ||‰«       y )NÚ_supported_typesc              3   ó&   •K  — | ]  }|‰v–— Œ
 y ­wr   r@   )Ú.0ÚlÚsupported_typess     €r   Ú	<genexpr>z/_LoopTypesTester._check_loop.<locals>.<genexpr>¼  s   øè ø€ ÐC±l°�A˜_Ô,±lùó   ƒÚ_skip_typesc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r@   )rX  rY  Ú
skip_typess     €r   r[  z/_LoopTypesTester._check_loop.<locals>.<genexpr>¿  s   øè ø€ Ð5© 1ˆq�JŒ©ùr\  Ú_required_typesc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r@   )rX  rY  Úletter_typess     €r   r[  z/_LoopTypesTester._check_loop.<locals>.<genexpr>Ä  s   øè ø€ ð &?Ù/=¨!ð '(¨<Ô&7Ù/=ùr\  )r”   r—   rý  r•   Ú_check_ufunc_with_dtypes)ro   r'   r/   ÚloopÚrequired_typesrb  r_  rZ  s        @@@r   Ú_check_loopz_LoopTypesTester._check_loop³  s¦   ú€ à˜J˜UŸY™YÐ'¨$°·
±
¨{¨|Ð*<Ñ<ˆô
 " $Ð(:¸BÓ?ˆÙÜÓC±lÓCÔCØÜ˜T =°"Ó5ˆ
ÜÓ5©Ó5Ô5Øô ! Ð'8¸"Ó=ˆÙ¤#ó &?Ù/=ó&?ô #?àà×%Ñ% b¨%°Õ>r$   c           
      óØ  — g }|D ]  }|dv r|dz   }|j                  |«       Œ |D �cg c]  }t        j                  |«      ‘Œ }}t        |D �cg c]"  }t	        j
                  t        |«      dd«      ‘Œ$ c}«      } t        |«      |«      }t        |«      D �	�cg c]'  \  }	}| j                  ||	¬«      j                  d«      ‘Œ) }
}	}|
D ]  }| j                  j                  |«       Œ |
D �cg c]  }|j                  «       ‘Œ }} ||
Ž   ||Ž  t        |||
«      D ]²  \  }}}| j                  |||«      \  }}|j                  j                   }| j"                  j%                  |j&                  |fd«      }|dv rdnd	}|d
v rdn|}dj)                  g d¢«      }|j+                  |j&                  |
|||«      }| j-                  |||||¬«       Œ´ y c c}w c c}w c c}}	w c c}w )N)rF  rI  z8[D]rS   rZ   ©rR  r2  ÚfFr÷  r  ÚdDrø  r�   )z ufunc '{0}' arrays differ ({1}):z	args: {2}zexpected {3}zgot {4})rù  r¼   Úulps)ÚappendrI   rJ   r“   r   ri   r   r   Ú	enumeraterT  ÚrepeatrV  Úshufflero  rH   Ú_fixup_resultsÚcharÚ_ulpsÚgetr,   r(   r+   rÿ  )ro   r'   r/   ÚdtypesÚdtypes_with_unitsr  Úarg_dtyÚarg_nbtyr²   rR  Úc_argsÚarrrÅ   Úpy_argsrJ   Úpy_argÚc_argÚtypecharrk  rù  r¼   s                        r   rc  z)_LoopTypesTester._check_ufunc_with_dtypesÊ  sò  € ð ÐÛˆAØ�J‰Ø˜‘J�Ø×$Ñ$ QÕ'ð ñ
 ):Ó:Ñ(9 1”2—8‘8˜A•;Ð(9ˆÐ:ÜÁgÓNÁgÀœ%Ÿ+™+¤j°£m°Q¸Õ<ÀgÑNÓOˆØ”�X“˜rÓ"ˆô #,¨FÔ"3ô5Ù"3‘h�e˜Qð ×$Ñ$ Q¨eÐ$Ó4×;Ñ;¸AÕ>Ø"3ð 	ñ 5ãˆCØ�K‰K×Ñ Õ$ð á%+Ó,¡V �1—6‘6•8 VˆÐ,áˆv‰Ù
ˆG‰ô %(¨°¸&Ö$AÑ ˆE�6˜5Ø ×/Ñ/°°v¸uÓE‰MˆF�EØ—{‘{×'Ñ'ˆHØ—:‘:—>‘> 5§>¡>°8Ð"<¸aÓ@ˆDØ'¨4Ñ/‘8°WˆDØ'¨4Ñ/‘8°TˆDØ—)‘)ò Eó FˆCà—*‘*˜UŸ^™^¨V°T¸6À5ÓIˆCØ×#Ñ# F¨E¸À#Ø)-ð $õ /ñ %Bùò! ;ùÚNùó5ùò -s   ¨GÁ'GÂ,G!Ã1G'c                 ó
   — ||fS r   r@   )ro   rJ   r{  r|  s       r   rp  z_LoopTypesTester._fixup_resultsò  s   € Ø�uˆ}Ðr$   c                 óJ   — |j                   D ]  }| j                  ||«       Œ y r   )r   Ú_inject_test)Úclsr/   rd  s      r   Ú_check_ufunc_loopsz#_LoopTypesTester._check_ufunc_loopsõ  s    € à—K”KˆDØ×Ñ˜U DÕ)ñ  r$   c           
      ó‚   ‡‡— ˆˆfd„}t        | dj                  ‰j                  ‰j                  dd«      «      |«       y )Nc                 óB   •— t        ‰«      }| j                  |‰‰«       y r   )r4   rf  )ro   r'   rd  r/   s     €€r   Útest_templatez4_LoopTypesTester._inject_test.<locals>.test_templateü  s   ø€ Ü$ UÓ+ˆBØ×Ñ˜R ¨Õ-r$   ztest_{0}_{1}z->Ú_)Úsetattrr+   r,   Úreplace)r�  r/   rd  r…  s    `` r   r€  z_LoopTypesTester._inject_testú  s9   ù€ õ	.ô 	��^×*Ñ*¨5¯>©>Ø+/¯<©<¸¸cÓ+BóDàõ	r$   c                 óH   — | j                   D ]  }| j                  |«       Œ y r   )Ú_ufuncsr‚  )r�  r/   s     r   Úautogeneratez_LoopTypesTester.autogenerate  s   € à—[”[ˆEØ×"Ñ" 5Õ)ñ !r$   N©r   )r,   r�   r‚   r-  r]  rr  rT  rf  rc  rp  Úclassmethodr‚  r€  r‹  r@   r$   r   r>  r>  k  s   „ ñð( €Kð  ØØØØØØ"#ñ€Eó%LòN?ò.&/òPð ñ*ó ð*ð ñó ðð ñ*ó ñ*r$   r>  c                   ó|  — e Zd Zedd Zej                  ej                  «       ej                  ej                  «       ej                  ej                  «       ej                  ej                  «       ej                  ej                  «       ej                  ej                  «       dZdej                  z   Zy)ÚTestLoopTypesIntNz?bBhHiIlLqQÚfdFDmMO)r,   r�   r‚   r   rŠ  ÚremoverI   rø   rN  Ú
left_shiftÚright_shiftrÔ   rò   r`  r>  r]  r@   r$   r   r�  r�  	  s‚   „ Ø™qÐ!€Gà‡N�N�2—8‘8ÔØ‡N�N�2—=‘=Ô!Ø‡N�N�2—=‘=Ô!Ø‡N�N�2—>‘>Ô"à‡N�N�2—;‘;ÔØ‡N�N�2—;‘;ÔØ#€OØÐ.×:Ñ:Ñ:�Kr$   r�  c                   ód   — e Zd Zej                  ej
                  gZdZdej                  z   dz   Z	y)Ú TestLoopTypesSubtractAndNegativez?bBhHiIlLqQfdFDÚmMOrE  N)
r,   r�   r‚   rI   rÔ   rò   rŠ  r`  r>  r]  r@   r$   r   r•  r•    s/   „ Ø�{‰{˜BŸK™KÐ(€GØ'€OØÐ*×6Ñ6Ñ6¸Ñ<�Kr$   r•  c                   ó\   ‡ — e Zd Zej                  gZdZdej                  z   Zdˆ fd„	Z	ˆ xZ
S )ÚTestLoopTypesReciprocalÚbBhHiIlLqQfdFDr–  c                 óV   •— t         | j                  | �  ||¬«      }|dv rd||dk(  <   |S )Nrh  Ú
bBhHiIlLqQr·  r   ©r`   rp   rT  ©ro   rQ  rR  Úresrp   s       €r   rT  z%TestLoopTypesReciprocal._arg_for_type(  s?   ø€ Ü�D—N‘N DÑ7¸Ø>Cð 8ó Eˆà˜LÑ(ð ˆC��q‘‰MØˆ
r$   rŒ  )r,   r�   r‚   rI   rN  rŠ  r`  r>  r]  rT  r„   r…   s   @r   r˜  r˜  #  s.   ø„ Ø�}‰}ˆo€GØ&€OØÐ*×6Ñ6Ñ6€K÷ñ r$   r˜  c                   ó\   ‡ — e Zd Zej                  gZdZdej                  z   Zdˆ fd„	Z	ˆ xZ
S )ÚTestLoopTypesPowerr™  r–  c                 ó`   •— t         | j                  | �  ||¬«      }|dv r|dk(  rd||dk  <   |S )Nrh  r›  rS   r  r   rœ  r�  s       €r   rT  z TestLoopTypesPower._arg_for_type;  sE   ø€ Ü�D—N‘N DÑ7¸Ø>Cð 8ó Eˆà˜LÑ(¨U°aªZð ˆC��a‘‰LØˆ
r$   rŒ  )r,   r�   r‚   rI   rø   rŠ  r`  r>  r]  rT  r„   r…   s   @r   r   r   6  s.   ø„ Ø�x‰xˆj€GØ&€OØÐ*×6Ñ6Ñ6€K÷ñ r$   r   c                   ó\   ‡ — e Zd Zej                  gZdZdej                  z   Zdˆ fd„	Z	ˆ xZ
S )ÚTestLoopTypesIntLeftShiftr›  r�  c                 ó®   •— t         | j                  | �  ||¬«      }|dk(  r3|j                  j                  dz  }t        j                  |d|dz
  «      }|S ©Nrh  rS   é   r   )r`   rp   rT  rJ   ÚitemsizerI   Úclip©ro   rQ  rR  rž  Ú	bit_countrp   s        €r   rT  z'TestLoopTypesIntLeftShift._arg_for_typeN  s[   ø€ Ü�D—N‘N DÑ7¸Ø>Cð 8ó Eˆð �AŠ:ØŸ	™	×*Ñ*¨QÑ.ˆIÜ—'‘'˜#˜q )¨a¡-Ó0ˆCØˆ
r$   rŒ  )r,   r�   r‚   rI   r’  rŠ  r`  r>  r]  rT  r„   r…   s   @r   r£  r£  I  s.   ø„ Ø�}‰}ˆo€GØ"€OØÐ.×:Ñ:Ñ:€K÷ñ r$   r£  c                   ó\   ‡ — e Zd Zej                  gZdZdej                  z   Zdˆ fd„	Z	ˆ xZ
S )ÚTestLoopTypesIntRightShiftr›  r�  c                 óâ   •— t         | j                  | �  ||¬«      }|dk(  r3|j                  j                  dz  }t        j                  |d|dz
  «      }|dk(  rt        j                  |«      }|S r¥  )r`   rp   rT  rJ   r§  rI   r¨  rH  r©  s        €r   rT  z(TestLoopTypesIntRightShift._arg_for_typee  sq   ø€ Ü�D—N‘N DÑ7¸Ø>Cð 8ó Eˆð �AŠ:ØŸ	™	×*Ñ*¨QÑ.ˆIÜ—'‘'˜#˜q )¨a¡-Ó0ˆCð �AŠ:Ü—&‘&˜“+ˆCØˆ
r$   rŒ  )r,   r�   r‚   rI   r“  rŠ  r`  r>  r]  rT  r„   r…   s   @r   r¬  r¬  `  s/   ø„ Ø�~‰~Ð€GØ"€OØÐ.×:Ñ:Ñ:€K÷ñ r$   r¬  c                   óz   — e Zd Zej                  ej
                  ej                  gZdZde	j                  z   Z
d„ Zy)ÚTestLoopTypesFloorDivider™  r–  c                 óª   — |j                   dk(  rAt        j                  |«      t        j                  |«      z  }||dk(  |dk(  z  z  }||   ||<   ||fS )Nrã   rV   )r–   rI   rÓ  r×  )ro   rJ   r{  r|  Úpreds        r   rp  z'TestLoopTypesFloorDivide._fixup_results‡  sY   € Ø�:‰:˜Òô —H‘H˜U“O¤b§h¡h¨vÓ&6Ñ6ˆDà�V˜s‘] u°¡|Ñ4Ñ4ˆDØ  ™,ˆE�$‰KØ�uˆ}Ðr$   N)r,   r�   r‚   rI   rï   r  ÚdivmodrŠ  r`  r>  r]  rp  r@   r$   r   r¯  r¯  ‚  s5   „ Ø�‰ §¡¨b¯i©iÐ8€GØ&€OØÐ*×6Ñ6Ñ6€Kór$   r¯  c                   óJ  — e Zd Zedd Zerej                  ej                  «       ej                  ej                  «       ej                  ej                  «       ej                  ej                  «       ej                  ej                  «       dZdej                  z   Zy)ÚTestLoopTypesFloatNrK  ÚFDmMO)r,   r�   r‚   r   rŠ  Ú	iswindowsr‘  rI   rÚ  rï   r  r²  r  r`  r>  r]  r@   r$   r   r´  r´  •  su   „ Ø™qÐ!€GÙØ�‰�r—z‘zÔ"Ø‡N�N�2—?‘?Ô#Ø‡N�N�2—<‘<Ô Ø‡N�N�2—9‘9ÔØ‡N�N�2—6‘6ÔØ€OØÐ,×8Ñ8Ñ8�Kr$   r´  c                   ó8   — e Zd Zedd ZdZdej                  z   Zy)ÚTestLoopTypesComplexNrM  r–  )r,   r�   r‚   r   rŠ  r`  r>  r]  r@   r$   r   r¸  r¸  ¤  s$   „ Ø™qÐ!€Gð €OØÐ*×6Ñ6Ñ6�Kr$   r¸  c                   óz   — e Zd Zedd Zej                  ej                  «       dZd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd	„ Zy)
ÚTestLoopTypesDatetimeNÚmMc                 ó`  — t         j                  }t        |«      }| j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       | j	                  t
        «      5  | j                  ||g d¢«       d d d «       y # 1 sw Y   y xY w)N)úm8[s]úm8[m]r½  )r¾  r½  r½  )r½  r¾  úm8[ms])r¾  r½  r¿  )r¾  r½  r¾  )rI   rÐ   r4   rc  ÚassertRaisesr	   ©ro   r/   r'   s      r   Útest_addzTestLoopTypesDatetime.test_addÂ  s‘   € Ü—‘ˆÜ  Ó'ˆà×%Ñ% b¨%Ò1LÔMØ×%Ñ% b¨%Ò1LÔMà×%Ñ% b¨%Ò1MÔNØ×%Ñ% b¨%Ò1MÔNà×Ñœ}Õ-Ø×)Ñ)¨"¨eÚ*EôG÷ .×-Ñ-úó   ÂB$Â$B-c                 ó`  — t         j                  }t        |«      }| j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       | j	                  t
        «      5  | j                  ||g d¢«       d d d «       y # 1 sw Y   y xY w)N)úM8[s]úM8[m]r½  )rÆ  rÅ  r½  )rÅ  rÆ  r¿  )rÆ  rÅ  r¿  )rÆ  rÅ  r¾  )rI   rÔ   r4   rc  rÀ  r	   rÁ  s      r   Útest_subtractz#TestLoopTypesDatetime.test_subtractÐ  s‘   € Ü—‘ˆÜ  Ó'ˆà×%Ñ% b¨%Ò1LÔMØ×%Ñ% b¨%Ò1LÔMà×%Ñ% b¨%Ò1MÔNØ×%Ñ% b¨%Ò1MÔNà×Ñœ}Õ-Ø×)Ñ)¨"¨eÚ*EôG÷ .×-Ñ-úrÃ  c                 ó  — t         j                  }t        |«      }| j                  ||g d¢«       | j                  ||g d¢«       | j	                  t
        «      5  | j                  ||g d¢«       d d d «       y # 1 sw Y   y xY w)N)r½  Úqúm8[us])rÉ  r½  rÊ  ©r½  rÉ  r¾  )rI   rØ   r4   rc  rÀ  r	   rÁ  s      r   Útest_multiplyz#TestLoopTypesDatetime.test_multiplyÞ  sh   € Ü—‘ˆÜ  Ó'ˆà×%Ñ% b¨%Ò1IÔJØ×%Ñ% b¨%Ò1IÔJà×Ñœ}Õ-Ø×)Ñ)¨"¨eÒ5LÔM÷ .×-Ñ-úó   ÁA:Á:Bc                 ó`  — t         j                  }t        |«      }| j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       | j	                  t
        «      5  | j                  ||g d¢«       d d d «       y # 1 sw Y   y xY w)N)r¾  r½  rA  )r½  r¾  rA  ©r¾  rÉ  r½  ©r¾  rA  r½  rË  )rI   rì   r4   rc  rÀ  r	   rÁ  s      r   Útest_true_dividez&TestLoopTypesDatetime.test_true_divideè  sŽ   € Ü—‘ˆÜ  Ó'ˆà×%Ñ% b¨%Ò1HÔIØ×%Ñ% b¨%Ò1HÔIà×%Ñ% b¨%Ò1HÔIØ×%Ñ% b¨%Ò1HÔIà×Ñœ}Õ-Ø×)Ñ)¨"¨eÒ5LÔM÷ .×-Ñ-úrÃ  c                 ó  — t         j                  }t        |«      }| j                  ||g d¢«       | j                  ||g d¢«       | j	                  t
        «      5  | j                  ||g d¢«       d d d «       y # 1 sw Y   y xY w)NrÏ  rÐ  rË  )rI   rï   r4   rc  rÀ  r	   rÁ  s      r   Útest_floor_dividez'TestLoopTypesDatetime.test_floor_divideõ  sh   € Ü—‘ˆÜ  Ó'ˆà×%Ñ% b¨%Ò1HÔIØ×%Ñ% b¨%Ò1HÔIà×Ñœ}Õ-Ø×)Ñ)¨"¨eÒ5LÔM÷ .×-Ñ-úrÍ  c                 óÂ   — t        |«      }| j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       | j                  ||g d¢«       y )N)r¾  r½  rE  )r½  r¾  rE  )rÆ  rÅ  rE  )rÅ  rÆ  rE  )r4   rc  rÁ  s      r   Ú_check_comparisonz'TestLoopTypesDatetime._check_comparisonÿ  sX   € Ü  Ó'ˆà×%Ñ% b¨%Ò1HÔIØ×%Ñ% b¨%Ò1HÔIà×%Ñ% b¨%Ò1HÔIØ×%Ñ% b¨%Ò1HÕIr$   c                 óè   — t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  fD ]  }| j                  |«       Œ y r   )rI   r¯  r¬  r¦  r©  r   r£  rÕ  r‰   s     r   Útest_comparisonsz&TestLoopTypesDatetime.test_comparisons  sD   € Ü—h‘h¤§¡¬b¯g©g´r·}±}Ü—j‘j¤"×"2Ñ"2ó4ˆEà×"Ñ" 5Õ)ñ4r$   )r,   r�   r‚   r   rŠ  r‘  rI   r²  r`  rÂ  rÇ  rÌ  rÑ  rÓ  rÕ  r×  r@   r$   r   rº  rº  °  sL   „ Ø™qÐ!€Gà‡N�N�2—9‘9Ôð €Oò
GòGòNòNòNòJó*r$   rº  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestUFuncBadArgsc                 óÄ   — d„ }| j                  t        «      5   t        t        j                  t        j                  «      g«      |«       d d d «       y # 1 sw Y   y xY w)Nc                 ó0   — t        j                  | «      }|S )zerror: np.add requires two argsr  )rA   rÇ   s     r   r   z0TestUFuncBadArgs.test_missing_args.<locals>.func  s   € ä—V‘V˜A“YˆFØˆMr$   ©rÀ  r
   r   r   rg   ©ro   r   s     r   Útest_missing_argsz"TestUFuncBadArgs.test_missing_args  sB   € ò	ð
 ×Ñœ{Õ+Ø0ŒD”%—-‘-¤§¡Ó.Ð/Ó0°Ô6÷ ,×+Ñ+úó   ™4AÁAc                 óÞ   — d„ }t        j                  t         j                  dd«      } ||||«      }| j                  t        «      5   t        |«      |«       d d d «       y # 1 sw Y   y xY w)Nc                 ó6   — t        j                  | | ||«      }|S )zerror: too many argsr  )rA   ÚoutÚout2rÇ   s       r   r   z1TestUFuncBadArgs.test_too_many_args.<locals>.func  s   € ä—V‘V˜A˜q # tÓ,ˆFØˆMr$   rS   rZ   )r   ri   rg   rÀ  r
   r   )ro   r   Ú
array_typer#  s       r   Útest_too_many_argsz#TestUFuncBadArgs.test_too_many_args  sT   € ò	ô
 —[‘[¤§¡°°3Ó7ˆ
Ù˜ Z°Ó<ˆà×Ñœ{Õ+ØŒD�‹I�dŒO÷ ,×+Ñ+ús   ÁA#Á#A,c                 óÄ   — d„ }| j                  t        «      5   t        t        j                  t        j                  «      g«      |«       d d d «       y # 1 sw Y   y xY w)Nc                 ó6   — d}t        j                  | | |«       y)z0error: scalar as a return value is not supportedr   Nr  r&  s     r   r   zATestUFuncBadArgs.test_no_scalar_result_by_reference.<locals>.func(  s   € àˆAÜ�F‰F�1�a˜�Or$   rÜ  rÝ  s     r   Ú"test_no_scalar_result_by_referencez3TestUFuncBadArgs.test_no_scalar_result_by_reference'  sB   € ò	ð
 ×Ñœ{Õ+Ø0ŒD”%—-‘-¤§¡Ó.Ð/Ó0°Ô6÷ ,×+Ñ+úrß  N)r,   r�   r‚   rÞ  rå  rè  r@   r$   r   rÙ  rÙ    s   „ ò7ò
ó7r$   rÙ  c                   ó   — e Zd Zd„ Zy)Ú TestUFuncCompilationThreadSafetyc                 ó  ‡‡— g Št         d„ «       Šˆˆfd„}t        d«      D �cg c]  }t        j                  |¬«      ‘Œ }}|D ]  }|j	                  «        Œ |D ]  }|j                  «        Œ | j                  ‰«       yc c}w )z{
        Test that (lazy) compiling from several threads at once doesn't
        produce errors (see issue #2403).
        c                 ó   — | dz   S )NrS   r@   r  s    r   r4  z7TestUFuncCompilationThreadSafety.test_lock.<locals>.foo:  s   € à�q‘5ˆLr$   c                  ó<  •— 	 t        j                  dt         j                  ¬«      } t        j                  dt         j                  ¬«      dz   }t         j                  j	                   ‰| «      |«       y # t
        $ r}‰j                  |«       Y d }~y d }~ww xY w)N)rU  rY   g      ð?)rI   Úonesrg   r¤   r)  Ú	Exceptionrl  )rÅ   rµ   ÚeÚerrorsr4  s      €€r   r    z;TestUFuncCompilationThreadSafety.test_lock.<locals>.wrapper>  sl   ø€ ð!Ü—G‘G˜E¬¯©Ô4�ÜŸ7™7 5´·
±
Ô;¸bÑ@�Ü—
‘
×-Ñ-©c°!«f°hÕ?øÜò !Ø—‘˜a× Ñ ûð!ús   ƒA3A7 Á7	BÂ BÂBr  )ÚtargetN)r   r)   Ú	threadingÚThreadÚstartr(   ÚassertFalse)ro   r    r1   Úthreadsr  rñ  r4  s        @@r   Ú	test_lockz*TestUFuncCompilationThreadSafety.test_lock3  s�   ù€ ð
 ˆä	ñ	ó 
ð	õ	!ô >CÀ2¼YÓG¹Y¸”9×#Ñ#¨7Ö3¸YˆÐGÛˆAØ�G‰G�Ið ãˆAØ�F‰F�Hð à×Ñ˜Õ ùò Hs   ¤BN)r,   r�   r‚   rø  r@   r$   r   rê  rê  1  s   „ ó!r$   rê  c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestUfuncOnContextc                 óØ  — t         j                  }|j                  t        j                  «      }| j                  |t        «       t        j                  t        j                  «      }| j                  ||«       t        «       }| j                  t        «      5 }t        j                  |«       d d d «       | j                  j                  j                  |f«       y # 1 sw Y   Œ1xY wr   )r   Útarget_contextÚget_ufunc_inforI   rÐ   ÚassertIsInstanceÚdictr   r  ÚobjectrÀ  ÚKeyErrorÚ	exceptionr   )ro   Ú	targetctxÚadd_inforµ   ÚbadkeyÚraisess         r   Útest_cpu_get_ufunc_infoz*TestUfuncOnContext.test_cpu_get_ufunc_infoO  s¨   € ô ×-Ñ-ˆ	à×+Ñ+¬B¯F©FÓ3ˆØ×Ñ˜h¬Ô-ä×*Ñ*¬2¯6©6Ó2ˆØ×Ñ˜ 8Ô,ä“ˆØ×ÑœxÔ(¨FÜ×#Ñ# FÔ+÷ )à×Ñ˜×)Ñ)×.Ñ.°°	Õ:÷ )Ð(ús   ÂC Ã C)c                 ó  — t        t        j                  d«      }| j                  t        «      5 }|j                  t        j                  «       d d d «       | j                  t        j                  «      d«       y # 1 sw Y   Œ/xY w)NÚcpuz<<numba\..*\.BaseContext object at .*> does not support ufunc)r   r   Útyping_contextrÀ  ÚNotImplementedErrorrý  rI   rÐ   ÚassertRegexrE   r  )ro   r  r  s      r   Útest_base_get_ufunc_infoz+TestUfuncOnContext.test_base_get_ufunc_info_  sd   € ä¤
× 9Ñ 9¸5ÓAˆ	Ø×ÑÔ2Ô3°vØ×$Ñ$¤R§V¡VÔ,÷ 4à×ÑÜ�× Ñ Ó!ØKõ	
÷ 4Ð3ús   ° A>Á>BN)r,   r�   r‚   r  r  r@   r$   r   rú  rú  N  s   „ ò;ó 
r$   rú  c                   ó   — e Zd Zd„ Zy)ÚTestUfuncWriteInputc                 óp  — t        dgd«      d„ «       }t        j                  j                  dd«      }t        j                  |t        j
                  ¬«      } |||«       t        j                  j                  t        j                  g d¢t        j                  ¬«      |j                  d¬	«      «       y )
Nzvoid(float64[:], uint8[:])z(n)->(n)c                 óT   — t        | j                  «      D ]  }|dz  dk(  sŒd||<   Œ y )Nr   r   rS   )r)   rü  )rA   râ  r1   s      r   r   z6TestUfuncWriteInput.test_write_input_arg.<locals>.funcl  s*   € ô ˜1Ÿ6™6–]�à�q‘5˜A“:Ø�C˜’Fñ #r$   rU  rŽ   rY   )TFFFTr   )Úaxis)r   rI   rV  ÚrandrÂ   rj   r¤   r)  rh   rÁ   r•   )ro   r   rA   râ  s       r   Útest_write_input_argz(TestUfuncWriteInput.test_write_input_argk  s…   € Ü	Ð2Ð3°ZÓ	@ñ	ó 
Að	ô �I‰I�N‰N˜2˜qÓ!ˆÜ�m‰m˜A¤R§W¡WÔ-ˆáˆQ�ŒÜ
�
‰
×%Ñ%Ü�H‰HÒ6¼b¿h¹hÔGØ�G‰G˜ˆG‹Oõ	r$   N)r,   r�   r‚   r  r@   r$   r   r  r  j  s   „ ór$   r  Ú__main__)Er!   rú  r   rœ   ró  rP  ÚnumpyrI   r   Únumbar   r   r   r   Ú
numba.corer   Únumba.np.numpy_supportr   Únumba.core.errorsr	   r
   Únumba.tests.supportr   r   Únumba.core.typing.npydeclr   Únumba.npr   Únumba.core.registryr   Únumba.core.baser   r   r“   Ú__itemsize__Úis32bitsrO  r£   r¶  r#   r4   r;   r=   rF   rO   rQ   r‡   rË   rJ  r
  r/  r>  r�  r‹  r•  r˜  r   r£  r¬  r¯  r´  r¸  rº  rÙ  rê  rú  r  r,   Úmainr@   r$   r   Ú<module>r#     sH  ðÛ Û Û 
Û Û Û ã ã ß 6Ó 6Ý Ý -ß 8ß 9Ý 6Ý "Ý *Ý 'Ý à×Ñ Ñ"€Ø�L‰L×#Ñ# GÓ,€	ò	*òòòòò"JôF�Oô FôRW6�]ô W6ôtb	<� ô b	<ôJK"˜¨ô K"ô\
W6�xô W6ôt!*�hô !*ôH[*�xô [*ô|;Ð'ô ;ð × Ñ Ô ô=Ð'7ô =ð !× -Ñ -Ô /ôÐ.ô ð  × $Ñ $Ô &ôÐ)ô ð  × Ñ Ô !ôÐ 0ô ð( × &Ñ &Ô (ôÐ!1ô ð> × 'Ñ 'Ô )ôÐ/ô ð  × %Ñ %Ô 'ô	9Ð)ô 	9ð × Ñ Ô !ô7Ð+ô 7ð × !Ñ !Ô #ô[*Ð,ô [*ð| × "Ñ "Ô $ô7�xô 7ô@! xô !ô:
˜ô 
ô8˜(ô ð& ˆzÒØ€H‡M�M…Oð r$   