
    sh_                       S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
JrJrJr  S SKJr  S SKJr  S SKJrJr  S SKJrJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJ r   \!RD                  S:H  r#\RH                  RK                  S5      r&S r'S r(S r)S r*S r+S r, " S S\5      r- " S S\-5      r. " S S\.\5      r/ " S S\-\5      r0 " S S\5      r1 " S S\5      r2 " S  S!\5      r3 " S" S#\35      r4\4Rk                  5          " S$ S%\35      r6\6Rk                  5          " S& S'\35      r7\7Rk                  5          " S( S)\35      r8\8Rk                  5          " S* S+\35      r9\9Rk                  5          " S, S-\35      r:\:Rk                  5          " S. S/\35      r;\;Rk                  5          " S0 S1\35      r<\<Rk                  5          " S2 S3\35      r=\=Rk                  5          " S4 S5\35      r>\>Rk                  5          " S6 S7\5      r? " S8 S9\5      r@ " S: S;\5      rA " S< S=\5      rB\CS>:X  a  \R                  " 5         gg)?    N)guvectorizenjittypeof	vectorize)types)
from_dtype)LoweringErrorTypingError)TestCaseMemoryLeakMixin)supported_ufuncs)numpy_support)
cpu_target)BaseContext)ufunc_db   win32c                 D   ^  [         R                  " T 5      U 4S j5       ng)zAn 'expectedFailure' like decorator that only expects compilation errors
caused by unimplemented functions that fail in no-python modec                     >  T" U 0 UD6  [        R
                  e! [          a*    [        R                  " [        R                  " 5       5      ef = fN)r
   unittest_ExpectedFailuresysexc_info_UnexpectedSuccess)argskwargsfuncs     k/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_ufuncs.pywrapper_unimplemented.<locals>.wrapper   sK    	<$!&! )))  	<++CLLN;;	<s	    4AN)	functoolswraps)r   r    s   ` r   _unimplementedr$      s      __T* *    c                 F   0 nSR                  [        U R                  5       Vs/ s H  nSR                  U5      PM     sn5      nSR                  X0R                  5      n[        U[        5       U5        US   nSR                  U R                  5      Ul        U$ s  snf )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_usecaser5   &   s    Ehh%2DE2DQa(2DEFG.55g~~NH79e$	tB&&u~~6BKI Fs   Bc                     0 n[        SR                  U 5      [        5       U5        US   nSR                  [        U 5      5      Ul        U$ )Nzdef fn(x):
    return {0}(x)r(   usecase_{0}r.   r,   r/   hashr-   ufunc_opr1   r(   s      r   _make_unary_ufunc_op_usecaser<   0   sE    E	(	/	/	979eL	tB&&tH~6BKIr%   c                     0 n[        SR                  U 5      [        5       U5        US   nSR                  [        U 5      5      Ul        U$ )Nzdef fn(x,y):
    return x{0}yr(   r7   r8   r:   s      r   _make_binary_ufunc_op_usecaser>   8   sE    E	)	0	0	:GIuM	tB&&tH~6BKIr%   c                    ^  [        T [        5      (       aL  0 n[        SR                  T 5      [	        5       U5        US   nSR                  [        T 5      5      Ul        U$ U 4S jnUnU$ )zGenerates 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(   r7   c                    > T" X5        g r    )xyr;   s     r   
inplace_op2_make_inplace_ufunc_op_usecase.<locals>.inplace_opK   s
    QNr%   )
isinstancestrr.   r,   r/   r9   r-   )r;   r1   r(   rD   s   `   r   _make_inplace_ufunc_op_usecaserH   @   sf    
 (C  &--h7EJ4[#**4>:
 I	Ir%   c           	          [        X5       VVs/ s H3  u  p#[        R                  " [        U5      5      R	                  U5      PM5     snn$ s  snnf )z5Convert python values into numpy scalar objects.
    )zipnpdtyperG   type)tyargsr   tyvals       r   _as_dtype_valuerQ   Q   s=     8;67HI7HGBBHHSW""3'7HIIIs   :Ac                   f   ^  \ rS rSrU 4S jr\R                  " SS9SS j5       r  S	S jrSr	U =r
$ )
BaseUFuncTestW   c                 	  > [         [        U ]  5         [        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " S5      [
        R                  4[        R                  " SS/SS9[
        R                  " [
        R                  SS	5      4[        R                  " SS/S
S9[
        R                  " [
        R                  SS	5      4[        R                  " / SQSS9[
        R                  " [
        R                  SS	5      4[        R                  " / SQSS9[
        R                  " [
        R                  SS	5      4[        R                  " / SQSS9[
        R                  " [
        R                  SS	5      4[        R                  " / SQSS9[
        R                  " [
        R                  SS	5      4[        R                  " SS/[        R                  S9[
        R                  " [
        R                  SS	5      4[        R                  " SS/[        R                  S9[
        R                  " [
        R                  SS	5      4[        R                  " SS/[        R                  S9[
        R                  " [
        R                  SS	5      4[        R                  " SS/[        R                   S9[
        R                  " [
        R                   SS	5      4/U l        g )Nr                          ?u4rL   Cu8)rW   r   rV   i4i8)rX   rY   rZ   f4f8)superrS   setUprK   uint32r   int32uint64int64float32float64arrayArrayint8int16uint8uint16inputs)self	__class__s    r   rd   BaseUFuncTest.setUpY   s   mT(*YYq\5<<(YYq\5<<(XXb\5;;'XXa[%++&XXa[%++&YYq\5<<(YYq\5<<(XXb\5;;'XXa[%++&XXa[%++&ZZu}}-ZZ_emm,ZZ_emm,ZZu}}-ZZ_emm,ZZ_emm,XXqe4(%++ellAs*KLXXqe4(%++ellAs*KLXXhd+U[[a-MNXXhd+U[[a-MNXX&d3[[3/1XX&d3[[3/1 XXqe277+U[[Q-LMXXqe288,ekk%++q#.NOXXqe288,ekk%++q#.NOXXqe299-[[q#.0A"
r%   N)maxsizec                 "    [        X#SS9" U5      $ )NT)_nrtno_rewrites)r   )rr   pyfuncr   nrts       r   _compileBaseUFuncTest._compile   s     D5f==r%   c                 $   Un[        U[        R                  5      (       a  UR                  nUR                  nOSnU[        R
                  ;   a:  U(       a  [        R                  " X%S5      nU$ [        R                  " XES5      n U$ U[        R                  ;   a:  U(       a  [        R                  " X%S5      nU$ [        R                  " XES5      n U$ U(       a  [        R                  " X5S5      nU$ [        R                  " XES5      nU$ )NrV   r]   )rF   r   rl   ndimrL   signed_domainunsigned_domain)rr   
input_typeint_output_typefloat_output_typerO   r~   output_types          r   _determine_output_type$BaseUFuncTest._determine_output_type   s    b%++&&77DBD$$$#kk/E  $kk"C8  5(((#kk/E  $kk"C8 	 !#kk*;3G  $kk"C8r%   rq   )F)NN)r-   
__module____qualname____firstlineno__rd   r"   	lru_cacher{   r   __static_attributes____classcell__rs   s   @r   rS   rS   W   s<    $
L &> '>
 BF15 r%   rS   c                   6    \ rS rSrS r/ / SSSS4S jrS rSrg)	BasicUFuncTest   c                     [        U5      $ r   )r5   rr   r0   s     r   r5   "BasicUFuncTest._make_ufunc_usecase   s    "5))r%   NifcFc                 2   U R                  [        5        U R                  U5      n[        U R                  5      U-   n	U	 GH  n
U
S   nU
S   n[        U[        5      nU(       a  UnOU4UR                  -  nX;   a  M?  U(       a#  [        R                  " US   S:  5      (       a  Mi  US   R                  R                  U;  a  M  U R                  XU5      nU4UR                  -  nU4UR                  -  nUU-   nU R                  UU5      n[        US   [        R                  5      (       a  U Vs/ s H9  n[        R                   " US   R"                  UR                  R$                  S9PM;     nnU Vs/ s H9  n[        R                   " US   R"                  UR                  R$                  S9PM;     nnOrU Vs/ s H,  n[        R                   " SUR                  R$                  S9PM.     nnU Vs/ s H,  n[        R                   " SUR                  R$                  S9PM.     nnSn[&        R(                  " SS9 n[&        R*                  " S5        U" / UQUQ76   SnU HQ  n[-        UR.                  [0        5      (       d  M$  [3        UR4                  5      R7                  U5      (       d  MO  SnMS     S S S 5        U" / UQUQ76   [9        UU5       Hb  u  nnS	R;                  / S
Q5      R=                  UR                  XUUUR                  U5      n [        R>                  RA                  UUSUS9  Md     GM	     g s  snf s  snf s  snf s  snf ! , (       d  f       N= f! [B         a    U(       a  [E        SU
UU5         M  e f = f)Nr   rV   r\   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-   r5   listrq   rF   tupleninrK   anyrL   kindr   noutr{   ndarrayzerosshapenamewarningscatch_warningssimplefilter
issubclasscategoryRuntimeWarningrG   message
startswithrJ   r)   r,   testingassert_array_almost_equalAssertionErrorprint)rr   r0   skip_inputsadditional_inputsr   r   kindspositive_onlyry   rq   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_testBasicUFuncTest.basic_ufunc_test   sc    	""8,))%0dkk"%66!K'NM$QJ!-7H$%'%))3(Q!!4!4 Q""%/55->@K &-%))3K'>EJJ6L </FMM&&1E$q'2::.. #/ #/ HHT!W]]#)<<#4#46".   #/". HHT!W]]&,,2C2CD".   #/". HHQfll&7&78".   #/". HHQfll&7&78".  
 !L((5%%h/((x(5 (H"8#4#4nEE #H$4$4 5 @ @ I I'+	 !) 6 "4"'"(+Hg(>$
Hii !# $ %+F5>>+5+6+5+;+;Z%I	 JJ88"H ! # 9 % )?{ "8

 656 & #A)8ZA sE   8A M>A M3M>3M	AM!'M!=M!# M2!
M/	2NNc                    U R                  U5        [        R                  S:  a  g [        R                  " S5      [        R
                  " S5      4[        R                  " S5      [        R
                  " S5      4[        R                  " S5      [        R
                  " S5      4[        R                  " S5      [        R
                  " S5      4[        R                  " S5      [        R
                  " S5      4[        R                  " S5      [        R
                  " S5      4[        R
                  " S5      [        R                  " S5      4[        R
                  " S5      [        R                  " S5      4[        R
                  " S5      [        R                  " S5      4[        R
                  " S5      [        R                  " S5      4[        R
                  " S5      [        R                  " S5      4[        R
                  " S5      [        R                  " S5      4[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R
                  S94[        R                  " / SQ[        R
                  S9[        R                  " / SQ[        R                  S944nU R                  U5      nU GH  u  pE[        U5      [        U5      4n[        R                  " [        R                  SS5      nXg4-   nU R                  X85      n	[        U[        R                  5      (       a.  [        R                  " UR                   [        R                  S9n
O#[        R                  " S[        R                  S9n
[        R"                  " U
5      nU" XEU5        U	" XEU
5        [        R$                  R'                  X5        GM     g )	N)rV      rW   r   rV   )rW   rW   r   r   rV   rV   r\   )r   rV   r   rV   r   rV   r]   )r   r   numpy_versionrK   rh   rg   rk   r5   r   r   rl   bool_r{   rF   r   r   r   
zeros_liker   assert_equal)rr   comparison_ufuncr   ry   abr   r   r   r   resultr   s               r   signed_unsigned_cmp_test'BasicUFuncTest.signed_unsigned_cmp_test  st   ./&&0 XXb\299Q<(XXb\299Q<(XXa["))A,'XXa["))A,'XXa["))A,'XXa["))A,'YYq\288B<(YYq\288A;'YYq\288A;'YYq\288B<(YYq\288A;'YYq\288A;'XX*"((;XX(		:< XX(		:XX*"((;=%
, ))*:;%DA!!9fQi0K++ekk1c:K >1FMM&1E!RZZ((!'':!2884}}V,H1"!JJ##H5 &r%   rA   )r-   r   r   r   r5   r   r   r   rA   r%   r   r   r      s$    * 35)-$E]~06r%   r   c                   n   \ rS rSrS`S jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS r\R.                  4S jrS rS rS rS rS rS rS rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S' r*S( r+S) r,S* r-S+ r.S, r/S- r0S. r1S/ r2S0 r3S1 r4S2 r5S3 r6S4 r7S5 r8S6 r9S7 r:S8 r;S9 r<S: r=S; r>S< r?S= r@S> rAS? rBS@ rCSA rDSB rESC rFSD rGSE rHSF rISG rJSH rKSI rLSJ rMSK rNSL rOSM rPSN rQSO rRSP rSSQ rTSR rU\VSS 5       rW\VST 5       rXSU rYSV rZSW r[SX r\SY r]SZ r^S[ r_S\ r`S] raS^ rbS_rcg)a
TestUFuncsi6  Nc                     [         R                  [         R                  [         R                  " [         R                  SS5      [         R                  " [         R                  SS5      /nU R	                  XS9  g NrV   r]   )r   )r   ri   rj   rl   r   )rr   r   r   s      r   basic_int_ufunc_testTestUFuncs.basic_int_ufunc_test7  sR    MMMMKKq#.KKq#.	
 	d<r%   c                 B    U R                  [        R                  5        g r   )r   rK   addrr   s    r   test_add_ufuncTestUFuncs.test_add_ufuncC  s    bff%r%   c                 B    U R                  [        R                  5        g r   )r   rK   subtractr   s    r   test_subtract_ufuncTestUFuncs.test_subtract_ufuncF      bkk*r%   c                 B    U R                  [        R                  5        g r   )r   rK   multiplyr   s    r   test_multiply_ufuncTestUFuncs.test_multiply_ufuncI  r   r%   c                 d    S n[         R                  nU R                  [        R                  US9  g Nr   )r   rj   r   rK   dividerr   int_out_types     r   test_divide_ufuncTestUFuncs.test_divide_ufuncL  s.     }}bii.: 	 	<r%   c                 @    U R                  [        R                  SS9  g Nfr   )r   rK   	logaddexpr   s    r   test_logaddexp_ufuncTestUFuncs.test_logaddexp_ufuncU      bll#6r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   
logaddexp2r   s    r   test_logaddexp2_ufunc TestUFuncs.test_logaddexp2_ufuncX  s    bmm37r%   c                 \    U R                  [        R                  [        R                  S9  g r   )r   rK   true_divider   rj   r   s    r   test_true_divide_ufunc!TestUFuncs.test_true_divide_ufunc[  s"    bnn.3mm 	 	=r%   c                 B    U R                  [        R                  5        g r   )r   rK   floor_divider   s    r   test_floor_divide_ufunc"TestUFuncs.test_floor_divide_ufunc_  s    boo.r%   c                     [         R                  " [         R                  SS5      [         R                  /nU R                  [        R
                  [         R                  US9  g )NrV   r]   )r   r   )r   rl   re   r   rK   negativerh   )rr   r   s     r   test_negative_ufuncTestUFuncs.test_negative_ufuncb  sE     {{5<<C8%,,Gbkk5;;*5 	 	7r%   c                 B    U R                  [        R                  5        g r   )r   rK   positiver   s    r   test_positive_ufuncTestUFuncs.test_positive_ufunci  r   r%   c                 @    U R                  [        R                  SS9  g )NT)r   )r   rK   powerr   s    r   test_power_ufuncTestUFuncs.test_power_ufuncl  s    bhhd;r%   c                 @    U R                  [        R                  SS9  g )Nfcr   )r   rK   float_powerr   s    r   test_float_power_ufunc!TestUFuncs.test_float_power_ufunco  s    bnnD9r%   c                 @    U R                  [        R                  SS9  g Niur   )r   rK   gcdr   s    r   test_gcd_ufuncTestUFuncs.test_gcd_ufuncr      bffD1r%   c                 @    U R                  [        R                  SS9  g r  )r   rK   lcmr   s    r   test_lcm_ufuncTestUFuncs.test_lcm_ufuncu  r  r%   c                 B    U R                  [        R                  5        g r   )r   rK   	remainderr   s    r   test_remainder_ufuncTestUFuncs.test_remainder_ufuncx      bll+r%   c                    [         R                  " [         R                  " [         R                  5      R                  5      [         R                  " S5      4[        R                  4/nU R                  [         R                  SUS9  g )N   ifcur   r   )rK   rg   iinfomaxr   r   mod)rr   r   s     r   test_mod_ufuncTestUFuncs.test_mod_ufunc{  s`    ii+//0"))B-@%,,O
 	bffF0A 	 	Cr%   c                 B    U R                  [        R                  5        g r   )r   rK   fmodr   s    r   test_fmod_ufuncTestUFuncs.test_fmod_ufunc      bgg&r%   c                    [         R                  " [         R                  " [         R                  5      R                  5      [        R                  4[         R
                  " [         R                  " [         R
                  5      R                  5      [        R
                  4[         R                  " [         R                  " [         R                  5      R                  5      [        R                  4[         R                  " [         R                  " [         R                  5      R                  5      [        R                  4/nU R                  UUS9  g )N)r   )rK   re   r,  r-  r   rg   ri   finfominrj   r   )rr   r0   r   s      r   test_abs_ufuncTestUFuncs.test_abs_ufunc  s    YYrxx		*../>YYrxx		*../>ZZ,0015==AZZ,0015==A	
 	e0A 	 	Cr%   c                 >    U R                  [        R                  S9  g )N)r0   )r9  rK   absoluter   s    r   test_absolute_ufuncTestUFuncs.test_absolute_ufunc  s    "++.r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   fabsr   s    r   test_fabs_ufuncTestUFuncs.test_fabs_ufunc      bggS1r%   c                 @    U R                  [        R                  SS9  g Ncfr   )r   rK   rintr   s    r   test_rint_ufuncTestUFuncs.test_rint_ufunc      bggT2r%   c                 B    U R                  [        R                  5        g r   )r   rK   signr   s    r   test_sign_ufuncTestUFuncs.test_sign_ufunc  r5  r%   c                 B    U R                  [        R                  5        g r   )r   rK   conjr   s    r   test_conj_ufuncTestUFuncs.test_conj_ufunc  r5  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   expr   s    r   test_exp_ufuncTestUFuncs.test_exp_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   exp2r   s    r   test_exp2_ufuncTestUFuncs.test_exp2_ufunc  rJ  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   logr   s    r   test_log_ufuncTestUFuncs.test_log_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   log2r   s    r   test_log2_ufuncTestUFuncs.test_log2_ufunc  rJ  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   log10r   s    r   test_log10_ufuncTestUFuncs.test_log10_ufunc      bhhd3r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   expm1r   s    r   test_expm1_ufuncTestUFuncs.test_expm1_ufunc  rg  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   log1pr   s    r   test_log1p_ufuncTestUFuncs.test_log1p_ufunc  rg  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   sqrtr   s    r   test_sqrt_ufuncTestUFuncs.test_sqrt_ufunc  rJ  r%   c                 B    U R                  [        R                  5        g r   )r   rK   squarer   s    r   test_square_ufuncTestUFuncs.test_square_ufunc  s    bii(r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   cbrtr   s    r   test_cbrt_ufuncTestUFuncs.test_cbrt_ufunc  rC  r%   c                    [         R                  " [         R                  SS5      [         R                  [         R                  " [         R                  SS5      [         R                  [         R                  " [         R                  SS5      [         R                  [         R                  " [         R
                  SS5      [         R
                  /nU R                  [        R                  US9  g r   )	r   rl   re   rf   rg   rh   r   rK   
reciprocalrr   to_skips     r   test_reciprocal_ufunc TestUFuncs.test_reciprocal_ufunc  s     ;;u||Q4ell;;u{{As3U[[;;u||Q4ell;;u{{As3U[[B 	bmmAr%   c                 B    U R                  [        R                  5        g r   )r   rK   	conjugater   s    r   test_conjugate_ufuncTestUFuncs.test_conjugate_ufunc  r'  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   sinr   s    r   test_sin_ufuncTestUFuncs.test_sin_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   cosr   s    r   test_cos_ufuncTestUFuncs.test_cos_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   tanr   s    r   test_tan_ufuncTestUFuncs.test_tan_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   arcsinr   s    r   test_arcsin_ufuncTestUFuncs.test_arcsin_ufunc      biit4r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   arccosr   s    r   test_arccos_ufuncTestUFuncs.test_arccos_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   arctanr   s    r   test_arctan_ufuncTestUFuncs.test_arctan_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   arctan2r   s    r   test_arctan2_ufuncTestUFuncs.test_arctan2_ufunc      bjj5r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   hypotr   s    r   test_hypot_ufuncTestUFuncs.test_hypot_ufunc      bhhc2r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   sinhr   s    r   test_sinh_ufuncTestUFuncs.test_sinh_ufunc  rJ  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   coshr   s    r   test_cosh_ufuncTestUFuncs.test_cosh_ufunc  rJ  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   tanhr   s    r   test_tanh_ufuncTestUFuncs.test_tanh_ufunc  rJ  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   arcsinhr   s    r   test_arcsinh_ufuncTestUFuncs.test_arcsinh_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g rE  )r   rK   arccoshr   s    r   test_arccosh_ufuncTestUFuncs.test_arccosh_ufunc  r  r%   c                    [         R                  " [         R                  SS5      [         R                  [         R                  " [         R                  SS5      [         R                  [         R                  " [         R                  SS5      [         R                  [         R                  " [         R
                  SS5      [         R
                  /nU R                  [        R                  USS9  g )NrV   r]   rF  )r   r   )	r   rl   re   rf   rg   rh   r   rK   arctanhr~  s     r   test_arctanh_ufuncTestUFuncs.test_arctanh_ufunc  s     ;;u||Q4ell;;u{{As3U[[;;u||Q4ell;;u{{As3U[[B
 	bjjgTJr%   c                 @    U R                  [        R                  SS9  g r   )r   rK   deg2radr   s    r   test_deg2rad_ufuncTestUFuncs.test_deg2rad_ufunc      bjj4r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   rad2degr   s    r   test_rad2deg_ufuncTestUFuncs.test_rad2deg_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   degreesr   s    r   test_degrees_ufuncTestUFuncs.test_degrees_ufunc	  r  r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   radiansr   s    r   test_radians_ufuncTestUFuncs.test_radians_ufunc  r  r%   c                 B    U R                  [        R                  5        g r   )r   rK   bitwise_andr   s    r   test_bitwise_and_ufunc!TestUFuncs.test_bitwise_and_ufunc      !!"..1r%   c                 B    U R                  [        R                  5        g r   )r   rK   
bitwise_orr   s    r   test_bitwise_or_ufunc TestUFuncs.test_bitwise_or_ufunc  s    !!"--0r%   c                 B    U R                  [        R                  5        g r   )r   rK   bitwise_xorr   s    r   test_bitwise_xor_ufunc!TestUFuncs.test_bitwise_xor_ufunc  r  r%   c                 B    U R                  [        R                  5        g r   )r   rK   invertr   s    r   test_invert_ufuncTestUFuncs.test_invert_ufunc  s    !!")),r%   c                 B    U R                  [        R                  5        g r   )r   rK   bitwise_notr   s    r   test_bitwise_not_ufunc!TestUFuncs.test_bitwise_not_ufunc  r  r%   c                 B    U R                  [        R                  5        g r   )r   rK   greaterr   s    r   test_greater_ufuncTestUFuncs.test_greater_ufunc-  s    %%bjj1r%   c                 B    U R                  [        R                  5        g r   )r   rK   greater_equalr   s    r   test_greater_equal_ufunc#TestUFuncs.test_greater_equal_ufunc0  s    %%b&6&67r%   c                 B    U R                  [        R                  5        g r   )r   rK   lessr   s    r   test_less_ufuncTestUFuncs.test_less_ufunc3  s    %%bgg.r%   c                 B    U R                  [        R                  5        g r   )r   rK   
less_equalr   s    r   test_less_equal_ufunc TestUFuncs.test_less_equal_ufunc6  s    %%bmm4r%   c                 B    U R                  [        R                  5        g r   )r   rK   	not_equalr   s    r   test_not_equal_ufuncTestUFuncs.test_not_equal_ufunc9  s    %%bll3r%   c                 B    U R                  [        R                  5        g r   )r   rK   equalr   s    r   test_equal_ufuncTestUFuncs.test_equal_ufunc<  s    %%bhh/r%   c                 B    U R                  [        R                  5        g r   )r   rK   logical_andr   s    r   test_logical_and_ufunc!TestUFuncs.test_logical_and_ufunc?      bnn-r%   c                 B    U R                  [        R                  5        g r   )r   rK   
logical_orr   s    r   test_logical_or_ufunc TestUFuncs.test_logical_or_ufuncB  s    bmm,r%   c                 B    U R                  [        R                  5        g r   )r   rK   logical_xorr   s    r   test_logical_xor_ufunc!TestUFuncs.test_logical_xor_ufuncE  r  r%   c                 B    U R                  [        R                  5        g r   )r   rK   logical_notr   s    r   test_logical_not_ufunc!TestUFuncs.test_logical_not_ufuncH  r  r%   c                 B    U R                  [        R                  5        g r   )r   rK   maximumr   s    r   test_maximum_ufuncTestUFuncs.test_maximum_ufuncK      bjj)r%   c                 B    U R                  [        R                  5        g r   )r   rK   minimumr   s    r   test_minimum_ufuncTestUFuncs.test_minimum_ufuncN  r  r%   c                 B    U R                  [        R                  5        g r   )r   rK   fmaxr   s    r   test_fmax_ufuncTestUFuncs.test_fmax_ufuncQ  r5  r%   c                 B    U R                  [        R                  5        g r   )r   rK   fminr   s    r   test_fmin_ufuncTestUFuncs.test_fmin_ufuncT  r5  r%   c                     [         R                  " SS/[         R                  S9[        R                  " [        R                  SS5      4/$ )NTFr\   rV   r]   )rK   rk   r   r   rl   r   s    r   bool_additional_inputs!TestUFuncs.bool_additional_inputsZ  s;    XXtUm2884[[a-/
 	
r%   c                 ^    U R                  [        R                  SU R                  5       S9  g Nifcbr+  )r   rK   isfiniter"  r   s    r   test_isfinite_ufuncTestUFuncs.test_isfinite_ufunc`  s*    KKv"99; 	 	
r%   c                 ^    U R                  [        R                  SU R                  5       S9  g r%  )r   rK   isinfr"  r   s    r   test_isinf_ufuncTestUFuncs.test_isinf_ufuncf  *    HHF"99; 	 	
r%   c                 ^    U R                  [        R                  SU R                  5       S9  g r%  )r   rK   isnanr"  r   s    r   test_isnan_ufuncTestUFuncs.test_isnan_ufuncl  r.  r%   c                 B    U R                  [        R                  5        g r   )r   rK   signbitr   s    r   test_signbit_ufuncTestUFuncs.test_signbit_ufuncr  r  r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   copysignr   s    r   test_copysign_ufuncTestUFuncs.test_copysign_ufuncu  s    bkk5r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   	nextafterr   s    r   test_nextafter_ufuncTestUFuncs.test_nextafter_ufuncx  r   r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   modfr   s    r   test_modf_ufuncTestUFuncs.test_modf_ufunc{  s    bggS1r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   frexpr   s    r   test_frexp_ufuncTestUFuncs.test_frexp_ufunc  s    bhhc2r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   floorr   s    r   test_floor_ufuncTestUFuncs.test_floor_ufunc  r  r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   ceilr   s    r   test_ceil_ufuncTestUFuncs.test_ceil_ufunc  rC  r%   c                 @    U R                  [        R                  SS9  g r   )r   rK   truncr   s    r   test_trunc_ufuncTestUFuncs.test_trunc_ufunc  r  r%   c                    [         R                  " [         R                  [         R                  * /[         R                  S9[        R
                  " [        R                  SS5      4/nU R                  [         R                  SUS9  g )Nr\   rV   r]   r   r+  )rK   rk   infrj   r   rl   r   spacing)rr   
additionals     r   test_spacing_ufuncTestUFuncs.test_spacing_ufunc  sc     xx"&& 1D{{5==!S9; =
bjj0: 	 	<r%   c                 	   UR                   n[        U5      nS[        R                  4S[        R                  4S[        R
                  4[        R                  " SS/SS9[        R                  " [        R                  SS5      4[        R                  " SS/SS9[        R                  " [        R                  SS5      4[        R                  " S	S/S
S9[        R                  " [        R
                  SS5      4/nUn[        R                  " [        R                  SS5      [        R                  " [        R
                  SS5      /nUn[        R                  " X4U5       GH  nUu  pn
US   nUS   nU	S   nU	S   nUS:X  aV  U[        R                  " [        R                  SS5      :X  d*  U[        R                  " [        R                  SS5      :X  a  My  US:X  ak  U[        R                  " [        R                  SS5      :X  aA  U[        R                  :X  a-  [        R                  " [        R                  SS5      (       a  M  US:X  al  U[        R                  " [        R                  SS5      :X  aB  U[        R                  :X  a.  [        R                  " [        R                  SS5      (       a  GM\  [        U[        R                  5      (       d  [        U[        R                  5      (       a"  [        U
[        R                  5      (       d  GM  XU
4nU R                  Xo5      n[        U[        R                  5      (       ag  [        R                  " UR                   U
R"                  R$                  S9n[        R                  " UR                   U
R"                  R$                  S9nO[        U[        R                  5      (       ag  [        R                  " UR                   U
R"                  R$                  S9n[        R                  " UR                   U
R"                  R$                  S9nOR[        R                  " SU
R"                  R$                  S9n[        R                  " SU
R"                  R$                  S9nU" XU5        U" XU5        ['        U
SU
5      nU[        R(                  [        R*                  4;   a  SOSnU R-                  UUUS9  GM     g )NrV   rW   rZ   r   r^   r\   r]   r`   rX   rb   r   r   rL   singledouble)prec)r-   r5   r   rg   rh   rj   rK   rk   rl   	itertoolsproductre   rF   r{   r   r   sizerL   r   getattrri   	complex64assertPreciseEqual)rr   r0   
ufunc_nameinputs1inputs2r   ry   valsinput1input2r   input1_operandinput1_typeinput2_operandinput2_typer   r   r   r   scalar_typer\  s                        r   binary_ufunc_mixed_types_test(TestUFuncs.binary_ufunc_mixed_types_test  s   ^^
#E*%-- XXq!fD)5;;u||Q+LMXXr1gT*EKKQ,LMXXtSk.[[3/12 EKKC8EMM1c:< %%gED*.'FK#AYN )K#AYN )K X%5;;u||Q#DD5;;u||Q#DD j(#u{{5<<C'HH#u||3EKKC88j(#u{{5<<C'HH#u||3EKKC88K55{EKK88";<<k:DMM&/E."**55."5"5(3(9(9(>(>@88N$7$7*5*;*;*@*@BNBJJ77."5"5(3(9(9(>(>@88N$7$7*5*;*;*@*@B !;+<+<+A+AB88A[->->-C-CD.&9>8<!+wDK"u}}eoo&FF !  ##Hf4#@q Fr%   c                 B
   [        [        R                  5      n[        R                  " SSS9[        R                  " SSS9R	                  SS5      [        R                  " SSS9R	                  SS5      [        R                  " SSS9R	                  SS5      [        R                  " SSS9R	                  SS5      [        R                  " SSS9R	                  SS5      /n[        R
                  " SSS9R	                  SS5      [        R
                  " SSS9R	                  SS5      [        R
                  " SSS9R	                  SS5      [        R
                  " SSS9R	                  SSS5      [        R
                  " SSS9R	                  SSS5      [        R
                  " SSS9R	                  SSS5      /n[        X#5       H  u  pE[        R                  " [        R                  UR                  S5      n[        R                  " [        R                  UR                  S5      nXg4nU R                  X5      n	[        R
                  " UR                  UR                  S9n
[        R                  " XJ5        U	" XE5        U R                  XZ5        M     [        [        R                   5      n[        R                  " SSS9[        R                  " SSS9R	                  SS5      [        R                  " SSS9R	                  SSS5      [        R                  " SSS9R	                  SS5      [        R                  " SSS9R	                  SS5      [        R                  " SSS9R	                  SSS5      [        R                  " SSS9R	                  SSS5      [        R                  " SSS9R	                  SSS5      [        R                  " SSS9R	                  SSS5      /	nUn["        R$                  " X5       GH  u  pM[        R                  " [        R                  UR                  S5      n[        R                  " [        R                  UR                  S5      n[        R                  " [        R                  ['        UR                  UR                  5      S5      nXU4nU R                  X5      n	[        R                   " XM5      n
[        R
                  " U
R                  SS9nU	" XMU5        U R                  XZ5        GM     g )	N   r^   r\   rV   	   r`      r]   )r5   rK   r  arangereshaper   rJ   r   rl   rg   r~   rh   r{   r   rL   rb  r   r]  r^  r-  )rr   ry   input_operandsoutput_operandsrB   r   r   r   r   r   r   input1_operandsinput2_operandsrC   rj  rl  s                   r   test_broadcastingTestUFuncs.test_broadcasting  s    %R[[1 IIat$IIat$,,Qq1IIat$,,Qq1IIat$,,Qq1IIat$,,Qq1IIe4(00157 HHU$'//!4HHU$'//!4HHU$'//!4HHYd+33Aa:HHYd+33Aa:HHYd+33Aa:< ^=IAU\\1663?J++ekk6;;DK,DMM&/ExxFLLAHKK$!##F5 >  %RVV, IIat$IIe4(0015IIit,44Qq;IIat$,,Qq1IIat$,,Qq1IIat$,,Qq3IIe4(001Q7IIe4(001Q7IIe4(001Q7	9 *%%oGDA++ellAFFC@K++ellAFFC@K++ellC4GMKk:DMM&/Evva|HXXhnnD9F!##F5 Hr%   c                     [         R                  " [         R                  SS5      nX4n[        X45      S 5       nU R	                  UR
                  U   R                  R                  U5        g )NrV   r]   c                 .    [         R                  " X5      $ r   rK   r   a0a1s     r   myadd2TestUFuncs.test_implicit_output_npm.<locals>.myadd2  s    66">!r%   )r   rl   rg   r   assertEqual	overloads	signaturereturn_type)rr   arr_tysigr  s       r   test_implicit_output_npm#TestUFuncs.test_implicit_output_npm,  sc     U\\1c2	v		" 
 	" 	-77CCVLr%   c                 "   S n[         R                  " SSS9[         R                  " SSS9R                  SS5      [         R                  " SSS9R                  SSS5      [         R                  " SSS9R                  SS5      [         R                  " SSS9R                  SS5      [         R                  " SSS9R                  SSS5      [         R                  " SSS9R                  SSS5      [         R                  " SSS9R                  SSS5      [         R                  " SSS9R                  SSS5      /	nUn[        R                  " X#5       H  u  pE[
        R                  " [
        R                  UR                  S5      n[
        R                  " [
        R                  UR                  S5      nXg4nU R                  XS	S
9n	[         R                  " XE5      n
U	" XE5      n[         R                  R                  X5        M     g )Nc                 .    [         R                  " X5      $ r   r~  r  s     r   ry   ATestUFuncs.test_broadcast_implicit_output_npm_nrt.<locals>.pyfunc9      66">!r%   rq  r^   r\   rr  rs  rV   r]   Trz   )rK   rt  ru  r]  r^  r   rl   rg   r~   r{   r   r   assert_array_equal)rr   ry   rx  ry  rB   rC   rj  rl  r   r   r   r   s               r   &test_broadcast_implicit_output_npm_nrt1TestUFuncs.test_broadcast_implicit_output_npm_nrt8  s   	" IIat$IIe4(0015IIit,44Qq;IIat$,,Qq1IIat$,,Qq1IIat$,,Qq3IIe4(001Q7IIe4(001Q7IIe4(001Q7	9 *%%oGDA++ellAFFC@K++ellAFFC@K-DMM&DM9Evva|H1[FJJ))(; Hr%   c                 f   S n[         R                  " SSS5      R                  SS5      n[         R                  " USS9nUR                  SS5      R                  S   n[        U5      nUR                  R                  (       a  UR                  S	:X  d   e[        U5      nUR                  R                  (       a  UR                  S:X  d   e[        U5      nUR                  S
:X  d   eUR                  R                  (       a   eUR                  R                  (       a   e[        [        R                  " X#U/S5      5      nXU4/-  nXU4/-  nXU4/-  nU H  u  p[        U	5      [        U
5      4nU R                  XSS9nU" X5      nU" X5      nU R                  UR                  R                  UR                  R                  5        U R                  UR                  R                  UR                  R                  5        [         R                  R!                  X5        M     g )Nc                 .    [         R                  " X5      $ r   r~  r  s     r   ry   =TestUFuncs.test_implicit_output_layout_binary.<locals>.pyfuncV  r  r%   r   rV      r   r   Forderr]   A   Tr  )rK   linspaceru  rk   Tr   flagsc_contiguouslayoutf_contiguousr   r]  permutationsr{   r  r   r  )rr   ry   XYZXtyYtyZty	testcasesarg0arg1r   r   r   r   s                  r   "test_implicit_output_layout_binary-TestUFuncs.test_implicit_output_layout_binaryU  s   	" KK1b!))!Q/HHQc"IIaOa Qiww##

c(999Qiww##

c(999QizzS   77''''77''''//q	1=>	!fX	!fX	!fX	#JD4L&,/DMM&DM9Ed)H4&FX^^88#\\668X^^88#\\668JJ))(; $r%   c                    S n[         R                  " SSS5      R                  SS5      n[         R                  " USS9nUR                  SS5      R                  S   n[        U5      nUR                  R                  (       a  UR                  S	:X  d   e[        U5      nUR                  R                  (       a  UR                  S:X  d   e[        U5      nUR                  S
:X  d   eUR                  R                  (       a   eUR                  R                  (       a   eX#U4 H  n[        U5      4n	U R                  XSS9n
U" U5      nU
" U5      nU R                  UR                  R                  UR                  R                  5        U R                  UR                  R                  UR                  R                  5        [         R                  R                  X5        M     g )Nc                 .    [         R                  " U 5      $ r   rK   rq  )r  s    r   ry   <TestUFuncs.test_implicit_output_layout_unary.<locals>.pyfunc{  s    772;r%   r   rV   r  r   r   r  r  r]   r  Tr  )rK   r  ru  rk   r  r   r  r  r  r  r{   r  r   r  )rr   ry   r  r  r  r  r  r  r  r   r   r   r   s                r   !test_implicit_output_layout_unary,TestUFuncs.test_implicit_output_layout_unaryz  s~   	 KK1b!))!Q/HHQc"IIaOa Qiww##

c(999Qiww##

c(999QizzS   77''''77''''1ID4L?DMM&DM9Ed|H4[FX^^88#\\668X^^88#\\668JJ))(; r%   rA   r   )dr-   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r!  r%  r/  r3  rK   absr9  r=  rA  rH  rM  rQ  rU  rY  r]  ra  re  rj  rn  rr  rv  rz  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,  r1  r5  r9  r=  r$   rA  rE  rI  rM  rQ  rW  rn  rz  r  r  r  r  r   rA   r%   r   r   r   6  s    =&++<78=/7+<:22,C' $&66 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6F
M<:#<J<r%   r   c                   F   \ rS rSrS rS/ / SS4S jrS/ / SSS4S jrS rS	 rS
 r	 S2S jr
 S2S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS  rS! r S" r!S# r"S$ r#S% r$S& r%S' r&S( r'S) r(S* r)S+ r*S, r+S- r,S. r-S/ r.S0 r/S1r0g)3TestArrayOperatorsi  c                     U R                  UR                  R                  UR                  R                  5        [        R                  R                  X5        g r   )r  rL   r   rK   r   r   )rr   r   gots      r   _check_results!TestArrayOperators._check_results  s6    ,,ciinn=


,,X;r%   TNc                 4   [        U5      n[        U R                  5      nUR                  U5        Un	U H_  n
U
u  pX;   d  [	        U[
        R                  5      (       d  M-  U R                  X4US9nU	" U5      nU" U5      nU R                  X5        Ma     g )Nr  )	r<   r   rq   extendrF   r   rl   r{   r  )rr   operatorrz   r   r   r   r   operator_funcrq   ry   r   r   r   r   r   r  s                   r   unary_op_test TestArrayOperators.unary_op_test  s     5X>dkk"'(!K(3%M*#J<<MM&-SMAEm,H&C. "r%   Fc                    [        U5      n[        U R                  5      n	U	R                  U5        Un
[        R
                  R                  S5      nU	 GH  nUu  p[        R                  " [        USU5      5      nUnX;   a  M2  U(       a  [        R                  " SUS9S   n[        U[        R                  5      (       a,  UnUnU(       a   [        R                  " UW:  5      (       a  M  O<UR                  SSS5      R!                  U5      n[#        U5      nU(       a  UW:  a  M  UU4nU R%                  U
UUS9nU
" UU5      nU" UU5      nU R'                  UU5        GM     g )NrV   rL   r\   r   d   
   r  )r>   r   rq   r  rK   randomRandomStater   as_dtyper`  r   rF   r   rl   r   uniformastyper   r{   r  )rr   r  rz   r   r   r   r   positive_rhsr  rq   ry   random_stater   input_operand1r   input_dtypeinput_type1zeroinput_operand0input_type0r   r   r   r  s                           r   binary_op_test!TestArrayOperators.binary_op_test  sN    6h?dkk"'( yy,,Q/!K)4&N'00
GZ8:K$K(xx5a8 *ekk22!/(BFF>D+@$A$A"."6"6q#r"B!J!J"!$^4NT$9-DMM&$CM8Enn=H7C#.; "r%   c                     S[         R                  4S[         R                  4[        R                  " SS/5      [         R                  " [         R                  SS5      4/$ )NTFrV   r]   )r   booleanrK   rk   rl   r   s    r   bitwise_additional_inputs,TestArrayOperators.bitwise_additional_inputs  sL     5==!EMM"XXtUm$ekk%--C&HI
 	
r%   c           	      $   UR                  S/ 5      nU[        R                  [        R                  [        R                  " [        R                  SS5      [        R                  " [        R                  SS5      /-  nU R
                  " U0 UD6$ )Nr   rV   r]   )
setdefaultr   ri   rj   rl   r  )rr   r   kwsr   s       r   binary_int_op_test%TestArrayOperators.binary_int_op_test  sn    nn]B7MM5==KKq#.KKq#.
 	

 ""D0C00r%   c                 n    UR                  S/ 5      nX0R                  5       -  nU R                  " U0 UD6$ )Nr   )r  r  r  )rr   r   r  r   s       r   binary_bitwise_op_test)TestArrayOperators.binary_bitwise_op_test  s<    NN+>C;;==&&444r%   c                    [        U5      nUnU(       a  U R                  n	O[        R                  R                  n	U V
s/ s H  n
[        R
                  " X*S9PM     nn
U V
s/ s H  n
[        R
                  " X:S9PM     nn
U VV
s/ s H  o  H
  o" U5      PM     M     nnn
X-   n[        R                  " X5       Hm  u  nn[        U5      n[        U5      nUU4nU R                  UU5      nUR                  5       nU" UU5        UR                  5       nU" UU5        U	" UU5        Mo     g s  sn
f s  sn
f s  sn
nf )Nr\   )rH   rb  rK   r   assert_allcloserk   r]  r^  r   r{   copy)rr   r  
lhs_values
rhs_values
lhs_dtypes
rhs_dtypespreciser  ry   	assertionrL   
lhs_inputs
rhs_arraysvrhs_scalars
rhs_inputslhsrhslhs_typerhs_typer   r   r   r  s                           r   inplace_op_test"TestArrayOperators.inplace_op_test  s2   6x@//I

22I
 $./#-% hhz7#- 	 / $./#-% hhz7#- 	 /)3LAuQxxL-
!))*AHCc{Hc{Hh'DMM&$/ExxzH8S!((*C#sOc8$ B//Ls    D2$D7	D<c           	          U R                  XU[        R                  [        R                  4[        R                  [        R                  [        R                  4US9$ )Nr  )r  rK   ri   rj   rh   )rr   r  r  r  r  s        r   inplace_float_op_test(TestArrayOperators.inplace_float_op_test  sI     ##H*%'ZZ$<%'ZZRXX$F,3 $ 5 	5r%   c                     U R                  XU[        R                  [        R                  [        R                  4[        R                  [        R
                  45        g r   )r  rK   rn   rf   rh   re   rr   r  r  r  s       r   inplace_int_op_test&TestArrayOperators.inplace_int_op_test  s:    X: hh"((; hh		2	4r%   c                     U R                  XU5        U R                  XU[        R                  4[        R                  [        R                  45        g r   )r  r  rK   r   r  s       r   inplace_bitwise_op_test*TestArrayOperators.inplace_bitwise_op_test"  s=      zBX: hh[288RXX*>	@r%   c                 &    U R                  S5        g N+r  r   s    r   test_unary_positive_array_op/TestArrayOperators.test_unary_positive_array_op*      3r%   c                 &    U R                  S5        g N-r  r   s    r   test_unary_negative_array_op/TestArrayOperators.test_unary_negative_array_op-  r  r%   c                    U R                  S[        R                  [        R                  [        R                  " [        R                  SS5      [        R                  " [        R                  SS5      /U R                  5       S9  g )N~rV   r]   )r   r   )r  r   ri   rj   rl   r  r   s    r   test_unary_invert_array_op-TestArrayOperators.test_unary_invert_array_op0  sa    3(-u}}(-EMM1c(J(-EMM1c(J(L .2-K-K-M	 	 	Or%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz+=rW         ?rq  r         @)r  r  iaddr   s    r   test_inplace_add#TestArrayOperators.test_inplace_add:  *    ""4|D""8==,Mr%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz-=r  r  )r  r  isubr   s    r   test_inplace_sub#TestArrayOperators.test_inplace_sub>  r  r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz*=r  r  )r  r  imulr   s    r   test_inplace_mul#TestArrayOperators.test_inplace_mulB  r  r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz//=r  r  g      ?r  )r  r  	ifloordivr   s    r   test_inplace_floordiv(TestArrayOperators.test_inplace_floordivF  s/    ""5,H""8#5#5|#2	4r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz/=r  r  r"  )r  r  itruedivr   s    r   test_inplace_div#TestArrayOperators.test_inplace_divK  s/    ""4|D""8#4#4l#2	4r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz%=r  r  r  r  )r  r  imodr   s    r   test_inplace_remainder)TestArrayOperators.test_inplace_remainderP  r  r%   c                 x    U R                  S/ SQ/ SQSS9  U R                  [        R                  / SQ/ SQSS9  g )Nz**=r  r+  Fr  )r  r  ipowr   s    r   test_inplace_pow#TestArrayOperators.test_inplace_powT  s>    ""5,+0 	# 	2""8==,+0 	# 	2r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz&=r   rV   r  rq  3   r      r)  *      )r  r  iandr   s    r   test_inplace_and#TestArrayOperators.test_inplace_andZ  2    $$T+;%9	;$$X]]4D%9	;r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz|=r4  r6  )r  r  iorr   s    r   test_inplace_or"TestArrayOperators.test_inplace_or`  s2    $$T+;%9	;$$X\\3C%9	;r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz^=r4  r6  )r  r  ixorr   s    r   test_inplace_xor#TestArrayOperators.test_inplace_xorf  r=  r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz<<=r   r   iir   rV   r      )r  r  ilshiftr   s    r   test_inplace_lshift&TestArrayOperators.test_inplace_lshiftl  1      (8-H  !1!13C!.	0r%   c                 |    U R                  S/ SQ/ SQ5        U R                  [        R                  / SQ/ SQ5        g )Nz>>=rG  rH  )r  r  irshiftr   s    r   test_inplace_rshift&TestArrayOperators.test_inplace_rshiftq  rM  r%   c                    S n[         R                  " S5      nU" U5      nU R                  US   US   :g  =(       a    US   US   :g  5        [         R                  " S5      n[        U5      " U5      nU R                  US   US   :g  =(       a    US   US   :g  5        [         R                  R                  X$5        [         R                  R                  X55        g)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                      U 7nSU S'   SUS'   U$ )Nrq  r   r   rV   rA   )r  a2s     r   r   <TestArrayOperators.test_unary_positive_array_op_2.<locals>.f}  s     BBqEBqEIr%   r  r   rV   N)rK   r   
assertTruer   r   r  )rr   r   r  rT  a3a4s         r   test_unary_positive_array_op_21TestArrayOperators.test_unary_positive_array_op_2v  s    	 XXb\rU1A92a5BqE>:XXb\!WR[1A92a5BqE>:


%%b-


%%b-r%   c                 &    U R                  S5        g r   r  r   s    r   test_add_array_op$TestArrayOperators.test_add_array_op      C r%   c                 &    U R                  S5        g r  r\  r   s    r   test_subtract_array_op)TestArrayOperators.test_subtract_array_op  r_  r%   c                 &    U R                  S5        g )N*r\  r   s    r   test_multiply_array_op)TestArrayOperators.test_multiply_array_op  r_  r%   c                 H    S n[         R                  nU R                  SUS9  g )N/r   )r   rj   r  r   s     r   test_divide_array_op'TestArrayOperators.test_divide_array_op  s#    }}C>r%   c                    [         R                  " S5      [        R                  4[         R                  " S5      [        R                  4[         R                  " S5      [        R                  4[         R                  " S5      [        R                  4[         R
                  " S5      [        R
                  4[         R
                  " S5      [        R
                  4[         R                  " S5      [        R                  4[         R                  " S5      [        R                  4[         R                  " S5      [        R                  4[         R                  " S	5      [        R                  4[         R                  " SS
/SS9[        R                  " [        R                  SS5      4[         R                  " SS/SS9[        R                  " [        R                  SS5      4[         R                  " / SQSS9[        R                  " [        R                  SS5      4[         R                  " / SQSS9[        R                  " [        R
                  SS5      4[         R                  " SS/SS9[        R                  " [        R                  SS5      4[         R                  " SS	/SS9[        R                  " [        R                  SS5      4/U l
        U R                  S5        g )NrV   r   r   r  rX   r  g      g      @r  r[   r\   r]   rq  r^   )rW   rV   r   r_   )rW   rV      r`   ra   rb   z//)rK   re   r   rf   rg   rh   ri   rj   rk   rl   rq   r  r   s    r   test_floor_divide_array_op-TestArrayOperators.test_floor_divide_array_op  s    YYq\5<<(XXb\5;;'XXa[%++&YYq\5<<(XXb\5;;'XXa[%++&ZZu}}-ZZ_emm,ZZu}}-ZZ_emm,XXqe4(%++ellAs*KLXXqe4(%++ellAs*KLXXhd+U[[a-MNXXhd+U[[a-MNXXtSk.[[3/1XXtSk.[[3/1)
. 	D!r%   c                 &    U R                  S5        g )N%r\  r   s    r   test_remainder_array_op*TestArrayOperators.test_remainder_array_op  r_  r%   c                 $    U R                  SSS9  g )Nz**Tr  r\  r   s    r   test_power_array_op&TestArrayOperators.test_power_array_op  s    Dt4r%   c                 $    U R                  SSS9  g )Nz<<Tru  r  r   s    r   test_left_shift_array_op+TestArrayOperators.test_left_shift_array_op      48r%   c                 $    U R                  SSS9  g )Nz>>Tru  ry  r   s    r   test_right_shift_array_op,TestArrayOperators.test_right_shift_array_op  r|  r%   c                 &    U R                  S5        g )N&r  r   s    r   test_bitwise_and_array_op,TestArrayOperators.test_bitwise_and_array_op      ##C(r%   c                 &    U R                  S5        g )N|r  r   s    r   test_bitwise_or_array_op+TestArrayOperators.test_bitwise_or_array_op  r  r%   c                 &    U R                  S5        g )N^r  r   s    r   test_bitwise_xor_array_op,TestArrayOperators.test_bitwise_xor_array_op  r  r%   c                 &    U R                  S5        g )Nz==r\  r   s    r   test_equal_array_op&TestArrayOperators.test_equal_array_op      D!r%   c                 &    U R                  S5        g )N>r\  r   s    r   test_greater_array_op(TestArrayOperators.test_greater_array_op  r_  r%   c                 &    U R                  S5        g )Nz>=r\  r   s    r   test_greater_equal_array_op.TestArrayOperators.test_greater_equal_array_op  r  r%   c                 &    U R                  S5        g )N<r\  r   s    r   test_less_array_op%TestArrayOperators.test_less_array_op  r_  r%   c                 &    U R                  S5        g )Nz<=r\  r   s    r   test_less_equal_array_op+TestArrayOperators.test_less_equal_array_op  r  r%   c                 &    U R                  S5        g )Nz!=r\  r   s    r   test_not_equal_array_op*TestArrayOperators.test_not_equal_array_op  r  r%   r   )T)1r-   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r$  r(  r-  r1  r;  r@  rD  rK  rP  rY  r]  ra  re  ri  rn  rr  rv  rz  r~  r  r  r  r  r  r  r  r  r  r   rA   r%   r   r  r    s   < +/"$&*d/& ,0#%'+t$)(/T
15 9=%@ '+54
@  ONNN4
4
N2;;;0
0
.2!!!?
"8!599)))"!"!""r%   r  c                   0    \ rS rSrSrS rS rS rS rSr	g)	TestScalarUFuncsi  a	  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                    [        X#5       GH2  u  pE[        U5      " U5      nU" U6 nU" [        XE5      6 nSR                  XT5      n	[	        [
        R                  [
        R                  4[
        R                  [
        R                  4[
        R                  [
        R                  4[
        R                  [
        R                  4/5      n
XJ;   a  [        U5      nO[        R                  " UR                  [        R                  5      (       a  [        U5      nO[        R                  " UR                  [        R                  5      (       a  [        U5      nO?[        R                  " UR                  [        R                   5      (       a  [#        U5      nXFR$                  U   R&                  R(                  4-   n[+        U Vs/ s H  o[
        R,                  :H  PM     sn5      (       a  SnO6[+        U Vs/ s H  o[
        R.                  :H  PM     sn5      (       a  SnOSnU R1                  XxXS9  GM5     g s  snf s  snf )Nzfor args {0} typed {1}rZ  r[  exact)r   r\  )rJ   r   rQ   r,   setr   rf   rg   rh   floatrK   
issubdtyperL   inexactintegerintr   boolr  r  r  r   ri   rj   rb  )rr   ry   	arg_types
arg_valuesrN   r   r   r  r   r   specialalltypestr\  s                 r   	run_ufuncTestScalarUFuncs.run_ufunc  s   	6LFL(E,Cv<=H*11$?C ell+u{{+ell+u{{+	 G   ? ==<<$XH]]8>>2::>>"8}H]]8>>288<<#H~H!8!B!B!N!N PPH 91&9::(;(Q5==((;<<##Cs#Fa 7R :;s   I
I	
c                     S n/ SQn[         R                  4[         R                  4[         R                  4[         R                  4[         R
                  4[         R                  4/nU R                  XU5        g )Nc                 .    [         R                  " U 5      $ r   r  rB   s    r   _func7TestScalarUFuncs.test_scalar_unary_ufunc.<locals>._func  s    771:r%   )r  r  )rV   r  )皙?)皙?)r   rf   re   rh   rg   ri   rj   r  rr   r  rf  tyss       r   test_scalar_unary_ufunc(TestScalarUFuncs.test_scalar_unary_ufunc  sZ    	 6~~%--!13 	u4(r%   c                    S n/ SQn[         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  /nU R                  U[        X35      [        X"5      5        g )Nc                 .    [         R                  " X5      $ r   r~  rB   rC   s     r   r  @TestScalarUFuncs.test_scalar_binary_uniform_ufunc.<locals>._func'      66!;r%   r  r  rV   r  r  r  )	r   rf   re   rh   rg   ri   rj   r  rJ   r  s       r    test_scalar_binary_uniform_ufunc1TestScalarUFuncs.test_scalar_binary_uniform_ufunc&  sT    	 ${{ELL{{ELL%--Huc#mS_=r%   c                 @   S n/ SQn[         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  /nU R                  U[        R                  " X35      [        R                  " X"5      5        g )Nc                 .    [         R                  " X5      $ r   r~  r  s     r   r  >TestScalarUFuncs.test_scalar_binary_mixed_ufunc.<locals>._func0  r  r%   r  )
r   rf   re   rh   rg   ri   rj   r  r]  r^  r  s       r   test_scalar_binary_mixed_ufunc/TestScalarUFuncs.test_scalar_binary_mixed_ufunc/  sg    	 ${{ELL{{ELL}}emm- 	ui//9 ((4	6r%   rA   N)
r-   r   r   r   __doc__r  r  r  r  r   rA   r%   r   r  r    s    1Gf)>	6r%   r  c                        \ rS rSrS rS rSrg)TestUfuncIssuesi;  c                     [        S/5      S 5       n[        R                  " SSS9n[        R                  " SSS9nU R                  U" X#5      X#-   X#-   -   5        g )Nz(float64,float64)c                 \    [         R                  " X5      [         R                  " X5      -   $ r   r~  )x1x2s     r   foo+TestUfuncIssues.test_issue_651.<locals>.foo?  s    66">BFF2N22r%   r  rb   r\   )r   rK   rt  rb  )rr   r  r   r   s       r   test_issue_651TestUfuncIssues.test_issue_651=  s\    	'(	)	3 
*	3 IIb%IIb%A	AEae+<=r%   c                 6  ^ ^^ S nUm[        T5      mUUU 4S jn[        R                  " / SQ5      [        R                  " / SQ5      /nU HH  nU" US5        U" U[        R                  " S5      5        U" U[        R
                  " / SQ5      5        MJ     g)z6
<float32 ** int> should return float32, not float64.
c                 .    [         R                  " X5      $ r   )rK   r  r  s     r   r  ,TestUfuncIssues.test_issue_2006.<locals>.fooK  s    88A>!r%   c                    > T" X5      n[         R                  R                  UT" X5      5        TR                  UR                  U R                  5        g r   )rK   r   r   r  rL   )rB   rC   r  r   ry   rr   s      r   check.TestUfuncIssues.test_issue_2006.<locals>.checkP  s>    +CJJ00fQlC SYY0r%   )rV   r  rq  )              ?r  y      @      rq  )r  r  rq  N)r   rK   ri   ra  rg   rh   )rr   r  r  xsrB   r   ry   s   `    @@r   test_issue_2006TestUfuncIssues.test_issue_2006G  sq    	"V	1 jj#R\\/%BCA!QK!RYYq\"!RXXi() r%   rA   N)r-   r   r   r   r  r  r   rA   r%   r   r  r  ;  s    >*r%   r  c                   |    \ rS rSrSrSrSSSSSSSS.rSS jrS	 rS
 r	S r
\S 5       r\S 5       r\S 5       rSrg)_LoopTypesTesteri_  aj  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'.
OegGr  r   r   ))r  r  )r  D)r  r  )rd  r  )r  r  )ry  d)r   r  c                 l   US;   a  [         R                  " / SQUS9$ US;   a  [         R                  " / SQUS9$ US;   a  [         R                  " / SQUS9$ US   S	:X  a(  [        U5      S
:X  a  Sn[         R                  " / SQUS9$ US   S:X  a(  [        U5      S
:X  a  Sn[         R                  " / SQUS9$ US;   a"  [         R                  " SSS[        S5      /US9$ US;   a>  [        R
                  S:w  a  SnOSn[         R                  " USS[        S5      -  S/US9$ [        SU< S35      e)z<return a suitable array argument for testing the letter typebhilq)rV   r   r   rl  r\   BHILQ)rV   r  r   r   ?)TFFTr   mrV   zm8[D])r  NaTr   MzM8[D])NatrV   r   r   fdr  g      rY   nanFDr   y             y              y      ?      ?r  y                ztype z not understood)rK   rk   lenr  r   platformRuntimeError)rr   a_letter_typeindexnegzeros       r   _arg_for_type_LoopTypesTester._arg_for_type  s5    G#88M??G#88L>>c!886mLL1$=!Q& '88-]CC1$=!Q& '88-]CCd"88S$U5\:"/1 1d"||w& ($88Wj"uU|2CRH"/1 1 =JKKr%   c                 x  ^^^ US UR                    X2R                  * S  -   m[        U S/ 5      mT(       a  [        U4S jT 5       5      (       a  g [        U S/ 5      m[        U4S jT 5       5      (       a  g [        U S/ 5      nU(       a  [        U4S jU 5       5      (       d  g U R	                  XT5        g )N_supported_typesc              3   ,   >#    U  H	  oT;  v   M     g 7fr   rA   ).0lsupported_typess     r   	<genexpr>/_LoopTypesTester._check_loop.<locals>.<genexpr>  s     Cl_,l   _skip_typesc              3   ,   >#    U  H	  oT;   v   M     g 7fr   rA   )r  r   
skip_typess     r   r  r    s     51Jr  _required_typesc              3   .   >#    U  H
  nUT;   v   M     g 7fr   rA   )r  r   letter_typess     r   r  r    s      &?/=! '(<&7/=s   )r   r   r`  r   _check_ufunc_with_dtypes)rr   r(   r0   looprequired_typesr
  r  r  s        @@@r   _check_loop_LoopTypesTester._check_loop  s    JUYY'$

{|*<<
 "$(:B?ClCCCT="5
5555 !'8"=# &?/=&? #? #?%%b>r%   c           
         / nU H  nUS;   a  US-   nUR                  U5        M!     U Vs/ s H  n[        R                  " U5      PM     nn[        U Vs/ s H$  n[        R
                  " [        U5      SS5      PM&     sn5      n[        U5      " U5      n[        U5       V	Vs/ s H#  u  pU R                  XYS9R                  S5      PM%     n
n	nU
 H  nU R                  R                  U5        M      U
 Vs/ s H  oR                  5       PM     nnU" U
6   U" U6   [        XmU
5       H  u  pnU R                  XU5      u  nnUR                  R                   nU R"                  R%                  UR&                  U4S5      nUS;   a  SOS	nUS
;   a  SOUnSR)                  / SQ5      nUR+                  UR&                  U
UUU5      nU R-                  UUUUUS9  M     g s  snf s  snf s  snn	f s  snf )N)r  r  z8[D]rV   r]   r  r  fFrZ  r  dDr[  r   )z ufunc '{0}' arrays differ ({1}):z	args: {2}zexpected {3}zgot {4})r\  r   ulps)appendrK   rL   r   r   rl   r   r   	enumerater  repeatr  shuffler  rJ   _fixup_resultschar_ulpsgetr-   r)   r,   rb  )rr   r(   r0   dtypesdtypes_with_unitsr  arg_dtyarg_nbtyr   r  c_argsarrr   py_argsrL   py_argc_argtypecharr  r\  r   s                        r   r  )_LoopTypesTester._check_ufunc_with_dtypes  s    AJJ$$Q' 
 )::(91288A;(9:gNg%++jmQ<gNOXr" #,F"35"3he $$Q$4;;A>"3 	 5CKK$ %+,V668V,v
G %(&$A E5 //uEMFE{{''H::>>5>>8"<a@D'4/8WD'4/8TD)) E FC**U^^VT65IC##FE#)- $ / %B! ;N5 -s    G%+G*(*G/=G5c                     X#4$ r   rA   )rr   rL   r$  r%  s       r   r  _LoopTypesTester._fixup_results  s
    }r%   c                 L    UR                    H  nU R                  X5        M     g r   )r   _inject_test)clsr0   r  s      r   _check_ufunc_loops#_LoopTypesTester._check_ufunc_loops  s    KKDU)  r%   c           
         ^^ UU4S jn[        U SR                  TR                  TR                  SS5      5      U5        g )Nc                 B   > [        T5      nU R                  UTT5        g r   )r5   r  )rr   r(   r  r0   s     r   test_template4_LoopTypesTester._inject_test.<locals>.test_template  s    $U+BR-r%   ztest_{0}_{1}z->_)setattrr,   r-   replace)r,  r0   r  r1  s    `` r   r+  _LoopTypesTester._inject_test  s9    	. 	^**5>>+/<<c+BD	r%   c                 L    U R                    H  nU R                  U5        M     g r   )_ufuncsr-  )r,  r0   s     r   autogenerate_LoopTypesTester.autogenerate  s    [[E""5) !r%   rA   Nr   )r-   r   r   r   r  r  r  r  r  r  r  classmethodr-  r+  r9  r   rA   r%   r   r  r  _  s    ( K  "#E%LN?.&/P * *   * *r%   r  c                      \ rS rSr\SS r\R                  \R                  5        \R                  \R                  5        \R                  \R                  5        \R                  \R                  5        \R                  \R                  5        \R                  \R                  5        SrS\R                   -   rSrg)TestLoopTypesInti  Nz?bBhHiIlLqQfdFDmMOrA   )r-   r   r   r   r   r8  removerK   r  r}  
left_shiftright_shiftr   r  r  r  r  r   rA   r%   r   r>  r>    s    q!GNN288NN2==!NN2==!NN2>>"NN2;;NN2;;#O.:::Kr%   r>  c                   l    \ rS rSr\R
                  \R                  /rSrS\	R                  -   S-   r
Srg) TestLoopTypesSubtractAndNegativei  z?bBhHiIlLqQfdFDmMOr  rA   N)r-   r   r   r   rK   r   r  r8  r  r  r  r   rA   r%   r   rD  rD    s/    {{BKK(G'O*666<Kr%   rD  c                   h   ^  \ rS rSr\R
                  /rSrS\R                  -   r	SU 4S jjr
SrU =r$ )TestLoopTypesReciprocali  bBhHiIlLqQfdFDrE  c                 R   > [         U R                  U ]  UUS9nUS;   a  SX3S:H  '   U$ )Nr  
bBhHiIlLqQr8  r   rc   rs   r  rr   r  r  resrs   s       r   r  %TestLoopTypesReciprocal._arg_for_type  s=    DNND7>C 8 EL( CqM
r%   rA   r;  )r-   r   r   r   rK   r}  r8  r  r  r  r  r   r   r   s   @r   rG  rG    s.    }}oG&O*666K r%   rG  c                   h   ^  \ rS rSr\R
                  /rSrS\R                  -   r	SU 4S jjr
SrU =r$ )TestLoopTypesPoweri*  rH  rE  c                 ^   > [         U R                  U ]  UUS9nUS;   a  US:X  a  SX3S:  '   U$ )Nr  rJ  rV   rq  r   rK  rL  s       r   r   TestLoopTypesPower._arg_for_type/  sC    DNND7>C 8 EL(UaZ CaL
r%   rA   r;  )r-   r   r   r   rK   r  r8  r  r  r  r  r   r   r   s   @r   rP  rP  *  s.    xxjG&O*666K r%   rP  c                   h   ^  \ rS rSr\R
                  /rSrS\R                  -   r	SU 4S jjr
SrU =r$ )TestLoopTypesIntLeftShifti=  rJ  r?  c                    > [         U R                  U ]  UUS9nUS:X  a4  UR                  R                  S-  n[
        R                  " USUS-
  5      nU$ Nr  rV      r   )rc   rs   r  rL   itemsizerK   cliprr   r  r  rM  	bit_countrs   s        r   r  'TestLoopTypesIntLeftShift._arg_for_typeB  s[    DNND7>C 8 E A:		**Q.I''#q)a-0C
r%   rA   r;  )r-   r   r   r   rK   rA  r8  r  r  r  r  r   r   r   s   @r   rT  rT  =  s.    }}oG"O.:::K r%   rT  c                   h   ^  \ rS rSr\R
                  /rSrS\R                  -   r	SU 4S jjr
SrU =r$ )TestLoopTypesIntRightShiftiT  rJ  r?  c                    > [         U R                  U ]  UUS9nUS:X  a4  UR                  R                  S-  n[
        R                  " USUS-
  5      nUS:X  a  [
        R                  " U5      nU$ rV  )rc   rs   r  rL   rX  rK   rY  r  rZ  s        r   r  (TestLoopTypesIntRightShift._arg_for_typeY  sq    DNND7>C 8 E A:		**Q.I''#q)a-0C A:&&+C
r%   rA   r;  )r-   r   r   r   rK   rB  r8  r  r  r  r  r   r   r   s   @r   r^  r^  T  s/    ~~G"O.:::K r%   r^  c                       \ rS rSr\R
                  \R                  \R                  /rSr	S\
R                  -   rS rSrg)TestLoopTypesFloorDivideiv  rH  rE  c                     UR                   S:X  a@  [        R                  " U5      [        R                  " U5      -  nXBS:H  US:H  -  -  nX$   X4'   X#4$ )Nr   rY   )r   rK   r+  r0  )rr   rL   r$  r%  preds        r   r  'TestLoopTypesFloorDivide._fixup_results{  sQ    :: HHUObhhv&66Ds]u|44D ,EK}r%   rA   N)r-   r   r   r   rK   r  r$  divmodr8  r  r  r  r  r   rA   r%   r   rb  rb  v  s5    bii8G&O*666Kr%   rb  c                   \   \ rS rSr\SS r\(       a  \R                  \R                  5        \R                  \R                  5        \R                  \R                  5        \R                  \R                  5        \R                  \R                  5        SrS\R                   -   rSrg)TestLoopTypesFloati  Nr  FDmMOrA   )r-   r   r   r   r   r8  	iswindowsr@  rK   r4  r  r$  rf  r.  r  r  r  r   rA   r%   r   rh  rh    su    q!Grzz"NN2??#NN2<< NN299NN266O,888Kr%   rh  c                   @    \ rS rSr\SS rSrS\R                  -   rSr	g)TestLoopTypesComplexi  Nr  rE  rA   )
r-   r   r   r   r   r8  r  r  r  r   rA   r%   r   rl  rl    s$    q!G O*666Kr%   rl  c                       \ rS rSr\SS r\R                  \R                  5        Sr	S r
S rS rS rS rS	 rS
 rSrg)TestLoopTypesDatetimei  NmMc                 `   [         R                  n[        U5      nU R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        U R	                  [
        5         U R                  X!/ SQ5        S S S 5        g ! , (       d  f       g = f)N)m8[s]m8[m]rq  )rr  rq  rq  )rq  rr  m8[ms])rr  rq  rs  )rr  rq  rr  )rK   r   r5   r  assertRaisesr	   rr   r0   r(   s      r   test_addTestLoopTypesDatetime.test_add  s     '%%b1LM%%b1LM%%b1MN%%b1MN}-))"*EG .--   B
B-c                 `   [         R                  n[        U5      nU R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        U R	                  [
        5         U R                  X!/ SQ5        S S S 5        g ! , (       d  f       g = f)N)M8[s]M8[m]rq  )r{  rz  rq  )rz  r{  rs  )r{  rz  rs  )r{  rz  rr  )rK   r   r5   r  rt  r	   ru  s      r   test_subtract#TestLoopTypesDatetime.test_subtract  s     '%%b1LM%%b1LM%%b1MN%%b1MN}-))"*EG .--rx  c                    [         R                  n[        U5      nU R                  X!/ SQ5        U R                  X!/ SQ5        U R	                  [
        5         U R                  X!/ SQ5        S S S 5        g ! , (       d  f       g = f)N)rq  qm8[us])r  rq  r  rq  r  rr  )rK   r   r5   r  rt  r	   ru  s      r   test_multiply#TestLoopTypesDatetime.test_multiply  sb     '%%b1IJ%%b1IJ}-))"5LM .--   A77
Bc                 `   [         R                  n[        U5      nU R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        U R	                  [
        5         U R                  X!/ SQ5        S S S 5        g ! , (       d  f       g = f)N)rr  rq  r  )rq  rr  r  rr  r  rq  rr  r  rq  r  )rK   r   r5   r  rt  r	   ru  s      r   test_true_divide&TestLoopTypesDatetime.test_true_divide  s     '%%b1HI%%b1HI%%b1HI%%b1HI}-))"5LM .--rx  c                    [         R                  n[        U5      nU R                  X!/ SQ5        U R                  X!/ SQ5        U R	                  [
        5         U R                  X!/ SQ5        S S S 5        g ! , (       d  f       g = f)Nr  r  r  )rK   r  r5   r  rt  r	   ru  s      r   test_floor_divide'TestLoopTypesDatetime.test_floor_divide  sb     '%%b1HI%%b1HI}-))"5LM .--r  c                     [        U5      nU R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        U R                  X!/ SQ5        g )N)rr  rq  r  )rq  rr  r  )r{  rz  r  )rz  r{  r  )r5   r  ru  s      r   _check_comparison'TestLoopTypesDatetime._check_comparison  sP     '%%b1HI%%b1HI%%b1HI%%b1HIr%   c                     [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  4 H  nU R                  U5        M     g r   )rK   r  r  r  r  r  r  r  r   s     r   test_comparisons&TestLoopTypesDatetime.test_comparisons  sD    hhbggr}}jj""2"24E""5)4r%   rA   )r-   r   r   r   r   r8  r@  rK   rf  r  rv  r|  r  r  r  r  r  r   rA   r%   r   rn  rn    sL    q!GNN299 O
GGNNNJ*r%   rn  c                   &    \ rS rSrS rS rS rSrg)TestUFuncBadArgsi  c                     S nU R                  [        5         [        [        R                  " [        R                  5      /5      " U5        S S S 5        g ! , (       d  f       g = f)Nc                 2    [         R                  " U 5      nU$ )zerror: np.add requires two argsr~  )rB   r   s     r   r   0TestUFuncBadArgs.test_missing_args.<locals>.func  s    VVAYFMr%   rt  r
   r   r   rj   rr   r   s     r   test_missing_args"TestUFuncBadArgs.test_missing_args  s@    	
 {+%--./06 ,++   5A
A%c                     S n[         R                  " [         R                  SS5      nU" X"U5      nU R                  [        5         [        U5      " U5        S S S 5        g ! , (       d  f       g = f)Nc                 4    [         R                  " X X5      nU$ )zerror: too many argsr~  )rB   outout2r   s       r   r   1TestUFuncBadArgs.test_too_many_args.<locals>.func  s    VVA#,FMr%   rV   r]   )r   rl   rj   rt  r
   r   )rr   r   
array_typer  s       r   test_too_many_args#TestUFuncBadArgs.test_too_many_args  sP    	
 [[37
<{+IdO ,++s   A##
A1c                     S nU R                  [        5         [        [        R                  " [        R                  5      /5      " U5        S S S 5        g ! , (       d  f       g = f)Nc                 6    Sn[         R                  " X U5        g)z0error: scalar as a return value is not supportedr   Nr~  r  s     r   r   ATestUFuncBadArgs.test_no_scalar_result_by_reference.<locals>.func  s    AFF1Or%   r  r  s     r   "test_no_scalar_result_by_reference3TestUFuncBadArgs.test_no_scalar_result_by_reference  s@    	
 {+%--./06 ,++r  rA   N)r-   r   r   r   r  r  r  r   rA   r%   r   r  r    s    7
7r%   r  c                       \ rS rSrS rSrg) TestUFuncCompilationThreadSafetyi%  c                   ^^ / m[         S 5       mUU4S jn[        S5       Vs/ s H  n[        R                  " US9PM     nnU H  nUR	                  5         M     U H  nUR                  5         M     U R                  T5        gs  snf )zc
Test that (lazy) compiling from several threads at once doesn't
produce errors (see issue #2403).
c                     U S-   $ )NrV   rA   r  s    r   r  7TestUFuncCompilationThreadSafety.test_lock.<locals>.foo.  s    q5Lr%   c                  6  >  [         R                  " S[         R                  S9n [         R                  " S[         R                  S9S-   n[         R                  R	                  T" U 5      U5        g ! [
         a  nTR                  U5         S nAg S nAff = f)N)r  r\   g      ?)rK   onesrj   r   r  	Exceptionr  )r   r   eerrorsr  s      r   r    ;TestUFuncCompilationThreadSafety.test_lock.<locals>.wrapper2  sl    !GGE4775

;b@

--c!fh? !a  !s   A/A3 3
B=BBr)  )targetN)r   r*   	threadingThreadstartr)   assertFalse)rr   r    r2   threadsr  r  r  s        @@r   	test_lock*TestUFuncCompilationThreadSafety.test_lock'  s    
 		 
		! >C2YGY9##73YGAGGI AFFH   Hs   B	rA   N)r-   r   r   r   r  r   rA   r%   r   r  r  %  s    !r%   r  c                        \ rS rSrS rS rSrg)TestUfuncOnContextiB  c                    [         R                  nUR                  [        R                  5      nU R                  U[        5        [        R                  " [        R                  5      nU R                  X#5        [        5       nU R                  [        5       n[        R                  " U5        S S S 5        U R                  WR                  R                  U45        g ! , (       d  f       N6= fr   )r   target_contextget_ufunc_inforK   r   assertIsInstancedictr   r  objectrt  KeyError	exceptionr   )rr   	targetctxadd_infor   badkeyraisess         r   test_cpu_get_ufunc_info*TestUfuncOnContext.test_cpu_get_ufunc_infoC  s     --	++BFF3h-**2662,x(F##F+ )))..	: )(s   C!!
C/c                    [        [        R                  S5      nU R                  [        5       nUR                  [        R                  5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Ncpuz<<numba\..*\.BaseContext object at .*> does not support ufunc)r   r   typing_contextrt  NotImplementedErrorr  rK   r   assertRegexrG   r  )rr   r  r  s      r   test_base_get_ufunc_info+TestUfuncOnContext.test_base_get_ufunc_infoS  sd    
 9 95A	23v$$RVV, 4  !K	
 43s    A>>
BrA   N)r-   r   r   r   r  r  r   rA   r%   r   r  r  B  s    ; 
r%   r  c                       \ rS rSrS rSrg)TestUfuncWriteInputi^  c                 `   [        S/S5      S 5       n[        R                  R                  SS5      n[        R                  " U[        R
                  S9nU" X#5        [        R                  R                  [        R                  " / SQ[        R                  S9UR                  SS	95        g )
Nzvoid(float64[:], uint8[:])z(n)->(n)c                 Z    [        U R                  5       H  nUS-  S:X  d  M  SX'   M     g )Nr   r   rV   )r*   r_  )rB   r  r2   s      r   r   6TestUfuncWriteInput.test_write_input_arg.<locals>.func`  s(     166]q5A:CF #r%   r  r   r\   )TFFFTr   )axis)r   rK   r  randr   rm   r   r  rk   r   r   )rr   r   rB   r  s       r   test_write_input_arg(TestUfuncWriteInput.test_write_input_arg_  s    	23Z	@	 
A	 IINN2q!mmARWW-Q


%%HH6bhhGGGGO	r%   rA   N)r-   r   r   r   r  r   rA   r%   r   r  r  ^  s    r%   r  __main__)Er"   r]  r   r   r  r  numpyrK   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__is32bitsr  r   rj  r$   r5   r<   r>   rH   rQ   rS   r   r   r  r  r  r  r>  r9  rD  rG  rP  rT  r^  rb  rh  rl  rn  r  r  r  r  r-   mainrA   r%   r   <module>r     sF     
      6 6  - 8 9 6 " * ' "LL##G,		*"JFO FRS6] S6lb	< b	<JC" C"L
W6x W6t!*h !*H[*x [*|;' ;    ='7 = ! - - /.    $ $ &)      ! 0 (  & & (!1 >  ' ' )/    % % '	9) 	9    !7+ 7  ! ! #[*, [*|  " " $7x 7@!x !:
 
8( & zMMO r%   