
    sh                        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  S SK	J
r
JrJr  S SKJr  S SKJrJrJr  S SKJrJrJr  SS0rS	S0rS
 r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r#\$S:X  a  \RJ                  " 5         gg)    N)jitnjit)typesutilserrors)_header_lead)TestCasetag
needs_blas)matmul_usecaseimatmul_usecase
DumbMatrixnopythonTforceobjc                    ^  U 4S jnU$ )Nc                    > U T-  $ N )xexps    n/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_operators.pypow_usecase&make_static_power.<locals>.pow_usecase   s    Cx    r   )r   r   s   ` r   make_static_powerr      s    r   c                      \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\(       a  \" \5      r\" \5      r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r!\S 5       r"\S 5       r#\S 5       r$\S  5       r%\S! 5       r&\S" 5       r'\S# 5       r(\S$ 5       r)\S% 5       r*\S& 5       r+\S' 5       r,S(r-g))*LiteralOperatorImpl   c                 
    X-   $ r   r   r   ys     r   add_usecaseLiteralOperatorImpl.add_usecase   	    ur   c                     X-  n U $ r   r   r    s     r   iadd_usecase LiteralOperatorImpl.iadd_usecase        	r   c                 
    X-
  $ r   r   r    s     r   sub_usecaseLiteralOperatorImpl.sub_usecase%   r$   r   c                     X-  n U $ r   r   r    s     r   isub_usecase LiteralOperatorImpl.isub_usecase)   r(   r   c                 
    X-  $ r   r   r    s     r   mul_usecaseLiteralOperatorImpl.mul_usecase.   r$   r   c                     X-  n U $ r   r   r    s     r   imul_usecase LiteralOperatorImpl.imul_usecase2   r(   r   c                 
    X-  $ r   r   r    s     r   floordiv_usecase$LiteralOperatorImpl.floordiv_usecase7   	    vr   c                     X-  n U $ r   r   r    s     r   ifloordiv_usecase%LiteralOperatorImpl.ifloordiv_usecase;       	r   c                 
    X-  $ r   r   r    s     r   truediv_usecase#LiteralOperatorImpl.truediv_usecase@   r$   r   c                     X-  n U $ r   r   r    s     r   itruediv_usecase$LiteralOperatorImpl.itruediv_usecaseD   r(   r   c                 
    X-  $ r   r   r    s     r   mod_usecaseLiteralOperatorImpl.mod_usecaseM   r$   r   c                     X-  n U $ r   r   r    s     r   imod_usecase LiteralOperatorImpl.imod_usecaseQ   r(   r   c                 
    X-  $ r   r   r    s     r   r   LiteralOperatorImpl.pow_usecaseV   r8   r   c                     X-  n U $ r   r   r    s     r   ipow_usecase LiteralOperatorImpl.ipow_usecaseZ   r<   r   c                 
    X-  $ r   r   r    s     r   bitshift_left_usecase)LiteralOperatorImpl.bitshift_left_usecase_   r8   r   c                     X-  n U $ r   r   r    s     r   bitshift_ileft_usecase*LiteralOperatorImpl.bitshift_ileft_usecasec   r<   r   c                 
    X-	  $ r   r   r    s     r   bitshift_right_usecase*LiteralOperatorImpl.bitshift_right_usecaseh   r8   r   c                     X-  n U $ r   r   r    s     r   bitshift_iright_usecase+LiteralOperatorImpl.bitshift_iright_usecasel   r<   r   c                 
    X-  $ r   r   r    s     r   bitwise_and_usecase'LiteralOperatorImpl.bitwise_and_usecaseq   r$   r   c                     X-  n U $ r   r   r    s     r   bitwise_iand_usecase(LiteralOperatorImpl.bitwise_iand_usecaseu   r(   r   c                 
    X-  $ r   r   r    s     r   bitwise_or_usecase&LiteralOperatorImpl.bitwise_or_usecasez   r$   r   c                     X-  n U $ r   r   r    s     r   bitwise_ior_usecase'LiteralOperatorImpl.bitwise_ior_usecase~   r(   r   c                 
    X-  $ r   r   r    s     r   bitwise_xor_usecase'LiteralOperatorImpl.bitwise_xor_usecase   r$   r   c                     X-  n U $ r   r   r    s     r   bitwise_ixor_usecase(LiteralOperatorImpl.bitwise_ixor_usecase   r(   r   c                     U ) $ r   r   r   _unuseds     r   bitwise_not_usecase_binary.LiteralOperatorImpl.bitwise_not_usecase_binary   	    r	r   c                     U ) $ r   r   r   s    r   bitwise_not_usecase'LiteralOperatorImpl.bitwise_not_usecase   rq   r   c                     U (       + $ r   r   rs   s    r   not_usecaseLiteralOperatorImpl.not_usecase   s	    vr   c                     U * $ r   r   rs   s    r   negate_usecase"LiteralOperatorImpl.negate_usecase   rq   r   c                     U 7$ r   r   rs   s    r   unary_positive_usecase*LiteralOperatorImpl.unary_positive_usecase   rq   r   c                 
    X:  $ r   r   r    s     r   
lt_usecaseLiteralOperatorImpl.lt_usecase   r$   r   c                 
    X:*  $ r   r   r    s     r   
le_usecaseLiteralOperatorImpl.le_usecase   r8   r   c                 
    X:  $ r   r   r    s     r   
gt_usecaseLiteralOperatorImpl.gt_usecase   r$   r   c                 
    X:  $ r   r   r    s     r   
ge_usecaseLiteralOperatorImpl.ge_usecase   r8   r   c                 
    X:H  $ r   r   r    s     r   
eq_usecaseLiteralOperatorImpl.eq_usecase   r8   r   c                 
    X:g  $ r   r   r    s     r   
ne_usecaseLiteralOperatorImpl.ne_usecase   r8   r   c                 
    X;   $ r   r   r    s     r   
in_usecaseLiteralOperatorImpl.in_usecase   r8   r   c                 
    X;  $ r   r   r    s     r   not_in_usecase"LiteralOperatorImpl.not_in_usecase   s
    zr   c                     XL $ r   r   r    s     r   
is_usecaseLiteralOperatorImpl.is_usecase   s	    vr   r   N).__name__
__module____qualname____firstlineno__staticmethodr"   r&   r*   r-   r0   r3   r6   r:   r>   rA   r   r   rD   rG   r   rL   rO   rR   rU   rX   r[   r^   ra   rd   rg   rj   ro   rt   rw   rz   r}   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      s                       %n5&7                                                       r   r   c                      \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r!\S 5       r"\S  5       r#\S! 5       r$\S" 5       r%\S# 5       r&\S$ 5       r'\S% 5       r(\S& 5       r)\S' 5       r*\S( 5       r+\S) 5       r,S*r-g+),FunctionalOperatorImpl   c                 .    [         R                  " X5      $ r   )operatoraddr    s     r   r"   "FunctionalOperatorImpl.add_usecase       ||A!!r   c                 .    [         R                  " X5      $ r   )r   iaddr    s     r   r&   #FunctionalOperatorImpl.iadd_usecase       }}Q""r   c                 .    [         R                  " X5      $ r   )r   subr    s     r   r*   "FunctionalOperatorImpl.sub_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   isubr    s     r   r-   #FunctionalOperatorImpl.isub_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   mulr    s     r   r0   "FunctionalOperatorImpl.mul_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   imulr    s     r   r3   #FunctionalOperatorImpl.imul_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   floordivr    s     r   r6   'FunctionalOperatorImpl.floordiv_usecase         &&r   c                 .    [         R                  " X5      $ r   )r   	ifloordivr    s     r   r:   (FunctionalOperatorImpl.ifloordiv_usecase   s    !!!''r   c                 .    [         R                  " X5      $ r   )r   truedivr    s     r   r>   &FunctionalOperatorImpl.truediv_usecase       %%r   c                 .    [         R                  " X5      $ r   )r   itruedivr    s     r   rA   'FunctionalOperatorImpl.itruediv_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   modr    s     r   rD   "FunctionalOperatorImpl.mod_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   imodr    s     r   rG   #FunctionalOperatorImpl.imod_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   powr    s     r   r   "FunctionalOperatorImpl.pow_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   ipowr    s     r   rL   #FunctionalOperatorImpl.ipow_usecase   r   r   c                 .    [         R                  " X5      $ r   )r   matmulr    s     r   r   %FunctionalOperatorImpl.matmul_usecase       q$$r   c                 .    [         R                  " X5      $ r   )r   imatmulr    s     r   r   &FunctionalOperatorImpl.imatmul_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   lshiftr    s     r   rO   ,FunctionalOperatorImpl.bitshift_left_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   ilshiftr    s     r   rR   -FunctionalOperatorImpl.bitshift_ileft_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   rshiftr    s     r   rU   -FunctionalOperatorImpl.bitshift_right_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   irshiftr    s     r   rX   .FunctionalOperatorImpl.bitshift_iright_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   and_r    s     r   r[   *FunctionalOperatorImpl.bitwise_and_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   iandr    s     r   r^   +FunctionalOperatorImpl.bitwise_iand_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   or_r    s     r   ra   )FunctionalOperatorImpl.bitwise_or_usecase  r   r   c                 .    [         R                  " X5      $ r   )r   iorr    s     r   rd   *FunctionalOperatorImpl.bitwise_ior_usecase#  r   r   c                 .    [         R                  " X5      $ r   )r   xorr    s     r   rg   *FunctionalOperatorImpl.bitwise_xor_usecase'  r   r   c                 .    [         R                  " X5      $ r   )r   ixorr    s     r   rj   +FunctionalOperatorImpl.bitwise_ixor_usecase+  r   r   c                 .    [         R                  " U 5      $ r   r   invertrm   s     r   ro   1FunctionalOperatorImpl.bitwise_not_usecase_binary/      q!!r   c                 .    [         R                  " U 5      $ r   r   rs   s    r   rt   *FunctionalOperatorImpl.bitwise_not_usecase3  r   r   c                 .    [         R                  " U 5      $ r   )r   not_rs   s    r   rw   "FunctionalOperatorImpl.not_usecase7  s    }}Qr   c                 .    [         R                  " U 5      $ r   )r   negrs   s    r   rz   %FunctionalOperatorImpl.negate_usecase;      ||Ar   c                 .    [         R                  " U 5      $ r   )r   posrs   s    r   r}   -FunctionalOperatorImpl.unary_positive_usecase?  r  r   c                 .    [         R                  " X5      $ r   )r   ltr    s     r   r   !FunctionalOperatorImpl.lt_usecaseC      {{1  r   c                 .    [         R                  " X5      $ r   )r   ler    s     r   r   !FunctionalOperatorImpl.le_usecaseG  r  r   c                 .    [         R                  " X5      $ r   )r   gtr    s     r   r   !FunctionalOperatorImpl.gt_usecaseK  r  r   c                 .    [         R                  " X5      $ r   )r   ger    s     r   r   !FunctionalOperatorImpl.ge_usecaseO  r  r   c                 .    [         R                  " X5      $ r   )r   eqr    s     r   r   !FunctionalOperatorImpl.eq_usecaseS  r  r   c                 .    [         R                  " X5      $ r   )r   ner    s     r   r   !FunctionalOperatorImpl.ne_usecaseW  r  r   c                 .    [         R                  " X5      $ r   r   containsr    s     r   r   !FunctionalOperatorImpl.in_usecase[  r   r   c                 8    [         R                  " X5      (       + $ r   r  r    s     r   r   %FunctionalOperatorImpl.not_in_usecase_  s    $$Q***r   c                 .    [         R                  " X5      $ r   )r   is_r    s     r   r   !FunctionalOperatorImpl.is_usecasec  r   r   r   N).r   r   r   r   r   r"   r&   r*   r-   r0   r3   r6   r:   r>   rA   rD   rG   r   rL   r   r   rO   rR   rU   rX   r[   r^   ra   rd   rg   rj   ro   rt   rw   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    " " # # " " # # " " # # ' ' ( ( & & ' ' " " # # " " # # % % & & % % & & % % & & # # # # " " " " " " # # " " " "         ! ! ! ! ! ! ! ! ! ! ! ! ' ' + + " "r   r   c                   (   \ rS rSrSr\r\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                   \R"                  \R$                  S.r\4S jr\4S jrS r\S4S jr/ S	Qr\R6                  \R8                  \R:                  \R<                  \R>                  \R@                  /r!\RD                  \RF                  /r$\4S
 jr%S r&\4S jr'S r(\4S jr)S r*\4S jr+S r,\4S jr-S r.\4S jr/S r0S r1S r2\4S jr3\4S jr4\4S jr5\4S jr6\4S jr7S`S jr8\8" \9" 5       SS S!S"S#.5        \8" \9" 5       S$S S!S"S#.5        \8" \9" 5       S%S S&S'.5        \S4S( jr:\4S) jr;S* r<\4S+ jr=S, r>\4S- jr?S. r@\4S/ jrA\4S0 jrB\8" \9" 5       S1S2S3S'.5        \4S4 jrCS5 rD\4S6 jrES7 rF\4S8 jrGS9 rH\4S: jrIS; rJ\4S< jrKS= rLS> rMS? rNS@ rO\PSA 5       rQSB rRSC rS\4SD jrT\8" \9" 5       SESFSG05        \4SH jrU\8" \9" 5       SISFSJ05        \4SK jrV\8" \9" 5       SLSMSNSO.5        \4SP jrWSQ rXSR rYSS rZST r[SU r\SV r]SW r^SX r_SY r`\4SZ jraS[ rb\4S\ jrcS] rdS^reg_)aTestOperatorsih  zk
Test standard Python operators on scalars.

NOTE: operators on array are generally tested in test_ufuncs.
rO   rR   rU   rX   r[   r^   ra   rd   rg   rj   ro   c                    U H  n[        U40 UD6" U5      n[        R                  " X#5       H  u  p[        R                  " U5      n
[        R                  " U5      nU" X5      nU" X5      nU R	                  XSU< SU	< SU< SU< SU< 3
S9  U R	                  XSU< SU	< SU< SU
< SU< 3
S9  M     M     g )Nmismatch for (, ) with types :  != msg)r   	itertoolsproductcopyassertPreciseEqualselfpyfunc
x_operands
y_operands
types_listflags	arg_typescfuncr   r!   x_got
x_expectedgotexpecteds                 r   run_test_intsTestOperators.run_test_ints  s    #I	+U+F3E!))*A 		!!YYq\
Eo!*0''aC; ( < '':aE:? ( @ B $r   c                 h   U H  n[        U40 UD6" U5      n[        R                  " X#5       H}  u  p[        R                  " U5      n
[        R                  " U5      nU" X5      nU" X5      n[        R
                  R                  XSS9  [        R
                  R                  XSS9  M     M     g )Ngh㈵>)rtol)r   r/  r0  r1  nptestingassert_allcloser3  s                 r   run_test_floatsTestOperators.run_test_floats  s    #I	+U+F3E!))*A 		!!YYq\
Eo!*0

**3t*D

**54*H B $r   c                 R   [        US5      (       a  UR                  U5      $ U[        R                  ;   a  [	        [        UR                  5      5      $ U[        R                  ;   a  [        UR                  5      $ U[        R                  ;   a  [        UR                  5      $ U$ )Ndtype)
hasattrcast_python_valuer   unsigned_domainabsintrealinteger_domainreal_domainfloat)r4  op
numba_types      r   coerce_operandTestOperators.coerce_operand  s~    2w//335000s277|$$5///rww<5,,,>!Ir   Tc                    U R                   nU R                  nU(       d  XPR                  -   nU H  n[        Xf440 UD6" U5      n[        R
                  " XD5       Hz  u  pU R                  X5      nU R                  X5      n	U" X5      n
U" X5      nU R                  [        U5      [        U
5      5        U R                  XSU< SU< SU	< S35        M|     M     g )Nzmismatch with z (r)  ))
compare_scalar_operandscompare_typescompare_unordered_typesr   r/  r0  rV  assertIstypeassertEqual)r4  r5  r9  orderedopsr8  typr;  r   r!   r?  r>  s               r   run_test_scalar_compare%TestOperators.run_test_scalar_compare  s    **''
#&B&BBJC
,e,V4E!))#3''/''/!!<Akd3ih8  h$'A"/0 4 r   )g      y            ?y             @y            ?      ?c                 P    U R                  U R                  R                  U5        g r   )rc  rT  r   r4  r9  s     r   test_lt_scalarTestOperators.test_lt_scalar      $$TWW%7%7?r   c                 *    U R                  [        S9  g Nr9  )rh  Noflagsr4  s    r   test_lt_scalar_npm TestOperators.test_lt_scalar_npm      '*r   c                 P    U R                  U R                  R                  U5        g r   )rc  rT  r   rg  s     r   test_le_scalarTestOperators.test_le_scalar  rj  r   c                 *    U R                  [        S9  g rl  )rt  rn  ro  s    r   test_le_scalar_npm TestOperators.test_le_scalar_npm  rr  r   c                 P    U R                  U R                  R                  U5        g r   )rc  rT  r   rg  s     r   test_gt_scalarTestOperators.test_gt_scalar  rj  r   c                 *    U R                  [        S9  g rl  )rz  rn  ro  s    r   test_gt_scalar_npm TestOperators.test_gt_scalar_npm  rr  r   c                 P    U R                  U R                  R                  U5        g r   )rc  rT  r   rg  s     r   test_ge_scalarTestOperators.test_ge_scalar  rj  r   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_ge_scalar_npm TestOperators.test_ge_scalar_npm  rr  r   c                 N    U R                  U R                  R                  USS9  g NF)r`  )rc  rT  r   rg  s     r   test_eq_scalarTestOperators.test_eq_scalar  !    $$TWW%7%7$Nr   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_eq_scalar_npm TestOperators.test_eq_scalar_npm  rr  r   c                 N    U R                  U R                  R                  USS9  g r  )rc  rT  r   rg  s     r   test_ne_scalarTestOperators.test_ne_scalar  r  r   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_ne_scalar_npm TestOperators.test_ne_scalar_npm  rr  r   c                     [        [        R                  [        R                  45      " U R                  R                  5      nU R                  U" [        [        5      5        g r   )r   r   ellipsisrT  r   
assertTrueEllipsis)r4  r;  s     r   test_is_ellipsisTestOperators.test_is_ellipsis  s;    ennenn56tww7I7IJh12r   c                   ^ [        [        R                  [        R                  4SS9" U R                  R                  5      m[        SS9U4S j5       nU R                  U" SS5      5        U R                  U" SS5      5        g )NTr   c                    > T" X5      $ r   r   )r   r!   
cfunc_voids     r   r;  -TestOperators.test_is_void_ptr.<locals>.cfunc  s    a##r         )r   r   voidptrrT  r   r  assertFalse)r4  r;  r  s     @r   test_is_void_ptrTestOperators.test_is_void_ptr  sr    ]]EMM*T

''



 
d		$ 
	$ 	a$q!%r   c                 x    / SQn/ SQn[         R                  [         R                  4/nU R                  XXEUS9  g )NFFTT)FTFTrm  )r   booleanr@  r4  r5  r9  r6  r7  r8  s         r   run_binop_boolsTestOperators.run_binop_bools  s;    /
/
}}emm45
6z!& 	 	(r   c                    / SQn/ SQn[         R                  [         R                  4[         R                  [         R                  4/nU R                  XXEUS9  SS/nSS/n[         R                  [         R                  4[         R
                  [         R
                  4[         R                  [         R                  4/nU R                  XXEUS9  g )N)r   r  r  )r     rm  r  r  r  r   int32int64r@  byteuint32uint64r  s         r   run_binop_intsTestOperators.run_binop_ints  s    "
#
{{EKK0{{EKK02
 	6z!& 	 	( V
V
zz5::.||U\\2||U\\24
 	6z!& 	 	(r   c                     / SQn/ SQn[         R                  [         R                  4[         R                  [         R                  4/nU R                  XXEUS9  g )N)g        g?)g      g?g @rm  r   float32float64rG  r  s         r   run_binop_floatsTestOperators.run_binop_floats"  sO    %
%
}}emm4}}emm46
 	V#( 	 	*r   c                 "    U R                  XS9  g rl  )r  )r4  r5  r9  s      r   run_binop_floats_floordiv'TestOperators.run_binop_floats_floordiv,  s    f2r   c                     / SQn/ SQn[         R                  [         R                  4[         R                  [         R                  4/nU R                  XXEUS9  g )N)y333333?y                y        ?)y      ffffffy        ?y @       rm  )r   	complex64
complex128rG  r  s         r   run_binop_complexTestOperators.run_binop_complex/  sS    4
4
8'')9)9:<
 	V#( 	 	*r   Fc                 D  ^ U H  nUR                  5        H  u  pVS Hw  nSU< SU< 3nU(       a  US-  nU(       a  [        O[        n	SU-  n
UX4S jmU(       a  SU;   a  U(       d  U4S jnOTnXl        U(       a  [	        S	5      " U5      nXU'   My     M     M     g )
NFTtest___npmz
%s_usecasec                 V    [        X5      n[        U R                  U5      nU" XS5        g r   )getattrrT  )r4  runner_nameusecase_namer9  runner
op_usecases         r   inner1TestOperators.generate_binop_tests.<locals>.innerC  s$    !(!;%,TWWl%C
z1r   arrayc                 h   > U R                  5          T" 5         S S S 5        g ! , (       d  f       g = fr   )assertTypingError)r4  r  s    r   	test_meth5TestOperators.generate_binop_tests.<locals>.test_methJ  s     !%!7!7!9 % ":!9!9s   #
1	important)itemsrn  force_pyobj_flagsr   r
   )nsusecases
tp_runners	npm_arrayusecasetp_namer  r   	test_namer9  r  r  r  s               @r   generate_binop_tests"TestOperators.generate_binop_tests9  s    G(2(8(8(:$ -H07 AI!V+	'/G5FE#/'#9L0;+72  Gw$6y( %*	)2&$'$4Y$?	$-yM3 !. );  r   )r   r   r   r   r   r   r  r  r  )intsfloatscomplex)r   r   )r   r   r   r   r  )r  r  c                    [        U R                  U5      n[        R                  [        R                  [        R
                  /nU(       a  UR                  [        R                  5        U Hm  n[        Xw440 UD6" U5      nU R                  [        5       n	U" SS5        S S S 5        U[        Ld  MH  U R                  U[        W	R                  5      5        Mo     g ! , (       d  f       NC= f)Nr  r   )r  rT  r   r  r  r  appendr  r   assertRaisesZeroDivisionErrorr  assertInstr	exception)
r4  r  r.  r9  allow_complexr5  r:  tpr;  cms
             r   check_div_errorsTestOperators.check_div_errorsm  s    ,/ [[%,,>	U--.B*E*62E""#45a 6 --c3r||#45 55s   
C  
C.	c                 (    U R                  SSUSS9  g )Nr>   division by zeroT)r9  r  r  rg  s     r   test_truediv_errors!TestOperators.test_truediv_errors}  s     /1C5,0 	 	2r   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_truediv_errors_npm%TestOperators.test_truediv_errors_npm  s      w /r   c                 &    U R                  SSUS9  g )Nr6   r  rm  r  rg  s     r   test_floordiv_errors"TestOperators.test_floordiv_errors  s    02DERr   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_floordiv_errors_npm&TestOperators.test_floordiv_errors_npm      !!!0r   c                 &    U R                  SSUS9  g )NrD   zmodulo by zerorm  r  rg  s     r   test_mod_errorsTestOperators.test_mod_errors  s    m-=UKr   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_mod_errors_npm!TestOperators.test_mod_errors_npm  s    7+r   c                    / SQn/ SQn[         R                  [         R                  4[         R                  [         R                  4/nU R                  XXEUS9  / SQn/ SQn[         R                  [         R                  4[         R
                  [         R
                  4[         R                  [         R                  4/nU R                  XXEUS9  g )Nr  r   r  r  r   r  r  rm  r  r  s         r   run_pow_intsTestOperators.run_pow_ints  s    &

{{EKK0{{EKK02
 	6z!& 	 	( 

zz5::.||U\\2||U\\24
 	6z!& 	 	(r   c                 f   / SQn/ SQn[         R                  [         R                  4[         R                  [         R                  4/nU R                  XXEUS9  S/n/ SQn[         R                  [         R                  4[         R                  [         R                  4/nU R                  XXEUS9  g )N)gvkgv[gv[@gvk@r	  rm  r  r  r  r  s         r   run_pow_floatsTestOperators.run_pow_floats  s    ;
&
}}emm4}}emm46
 	V#( 	 	* U

}}emm4}}emm46
 	V#( 	 	*r   )r   r   r  r  c                     U R                   R                  n/ SQnUn[        R                  [        R                  4[        R                  [        R                  4/nU R                  X#XEUS9  g )Ny      ?        y              ?y            rm  )rT  r"   r   r  r  rG  r4  r9  r5  r6  r7  r8  s         r   test_add_complexTestOperators.test_add_complex  sb    $$&

8'')9)9:=
 	V#( 	 	*r   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_add_complex_npm"TestOperators.test_add_complex_npm      G,r   c                     U R                   R                  n/ SQn/ SQn[        R                  [        R                  4[        R                  [        R                  4/nU R                  X#XEUS9  g Nr  )r  r  r  rm  )rT  r*   r   r  r  rG  r  s         r   test_sub_complexTestOperators.test_sub_complex  b    $$&

8'')9)9:=
 	V#( 	 	*r   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_sub_complex_npm"TestOperators.test_sub_complex_npm  r  r   c                     U R                   R                  n/ SQn/ SQn[        R                  [        R                  4[        R                  [        R                  4/nU R                  X#XEUS9  g r  )rT  r0   r   r  r  rG  r  s         r   test_mul_complexTestOperators.test_mul_complex  r  r   c                 *    U R                  [        S9  g rl  )r#  rn  ro  s    r   test_mul_complex_npm"TestOperators.test_mul_complex_npm  r  r   c                     U R                   R                  n/ SQn/ SQn[        R                  [        R                  4[        R                  [        R                  4/nU R                  X#XEUS9  g r  )rT  r>   r   r  r  rG  r  s         r   test_truediv_complex"TestOperators.test_truediv_complex  sb    ((&

8'')9)9:=
 	V#( 	 	*r   c                 *    U R                  [        S9  g rl  )r)  rn  ro  s    r   test_truediv_complex_npm&TestOperators.test_truediv_complex_npm  r  r   c                    U R                   R                  n[        [        R                  [        R                  440 UD6" U5      nU R                  [        5       nU" SS5        S S S 5        [        R                  S;   a  SnO[        [        R                  5      eU R                  U[        WR                  5      5        g ! , (       d  f       Nd= f)Ny              @y               @))r  
   r     )r     )r     z!unsupported operand type(s) for %)rT  rD   r   r   r  r  	TypeErrorr   	PYVERSIONNotImplementedErrorr  r  r  )r4  r9  r5  cresraisesr.  s         r   test_mod_complexTestOperators.test_mod_complex  s    $$EOOU__5??Gy)VRL * ??BB5C%eoo66c3v//01 *)s   
C
Cc                     U R                   R                  nU R                  5          [        [        R
                  [        R
                  45      " U5        S S S 5        g ! , (       d  f       g = fr   )rT  rD   r  r   r   r  )r4  r5  s     r   test_mod_complex_npm"TestOperators.test_mod_complex_npm  sC    $$##%%//5??34V< &%%s   0A  
A.c                    [        S0 [        D6" U5      n[        S5      n[        S5      nU" XE5      nU R                  UR                  S5        U(       a  U R                  Xd5        g U R                  Xd5        U R                  Xe5        g )Nr     r2  r   )r   r  r   r_  valuer]  assertIsNot)r4  r5  inplacer;  abr>  s          r   check_matmul_objmode"TestOperators.check_matmul_objmode  so    ,+,V4qMqMAkB'MM#!S$S$r   c                 L    U R                  U R                  R                  SS9  g )NFrC  )rF  rT  r   ro  s    r   test_matmulTestOperators.test_matmul  s    !!$''"8"8%!Hr   c                 L    U R                  U R                  R                  SS9  g )NTrI  )rF  rT  r   ro  s    r   test_imatmulTestOperators.test_imatmul"  s    !!$''"9"94!Hr   c                 t   [         R                  " [         R                  SS5      n[        X"45      " U5      n[        R                  " SS/5      n[        R                  " SS/5      nU" XE5      nU R                  U[        R                  " XE5      5        U R                  Xd5        U R                  Xe5        g )Nr  Cr  r  r?  )r   Arrayr  r   rD  r2  dotrB  )r4  r5  arrtyr;  rD  rE  r>  s          r   check_matmul_npmTestOperators.check_matmul_npm%  s    EMM1c2e^$V,JJ1vJJ1vAkRVVA\2  r   c                 N    U R                  U R                  R                  5        g r   )rT  rT  r   ro  s    r   test_matmul_npmTestOperators.test_matmul_npm1  s    dgg445r   c                     U R                  5        nU R                  U R                  R                  5        S S S 5        g ! , (       d  f       g = fr   )r  rT  rT  r   )r4  r8  s     r   test_imatmul_npmTestOperators.test_imatmul_npm4  s4    ##%!!$''"9"9: &%%s   &A  
Ac                    SS/n/ SQn[         R                  [         R                  4/nU R                  XXEUS9  SS/n/ SQn[         R                  [         R                  4/nU R                  XXEUS9  SS/n/ SQn[         R                  [         R                  4/nU R                  XXEUS9  SS/n/ SQn[         R
                  [         R
                  4/nU R                  XXEUS9  g )Nr   r  r   r  r  r?           rm  r   r  r  r?  r^  r_      ?   r  r   r  r@  r  r  r  r  s         r   run_bitshift_leftTestOperators.run_bitshift_left<  s    V
,
||U\\23
6z!& 	 	( V
0
||U\\23
6z!& 	 	( W
,
{{EKK01
6z!& 	 	( W
0
{{EKK01
6z!& 	 	(r   )bitshift_leftbitshift_ileftr  re  c                    / SQn/ SQn[         R                  [         R                  4/nU R                  XXEUS9  / SQn/ SQn[         R                  [         R                  4/nU R                  XXEUS9  / SQn/ SQn[         R                  [         R                  4/nU R                  XXEUS9  / SQn/ SQn[         R
                  [         R
                  4/nU R                  XXEUS9  g )N)r   r      r]  rm  )r   r      ra  )r   r     )r   r  rl  rd  r  s         r   run_bitshift_right TestOperators.run_bitshift_rightb  s    &
,
||U\\23
6z!& 	 	( '
0
||U\\23
6z!& 	 	( &
,
{{EKK01
6z!& 	 	( '
0
{{EKK01
6z!& 	 	(r   )bitshift_rightbitshift_irightrm  c                 ,   [        [        SS5      5      S/-   n[        [        SS5      5      S/-   n[        R                  [        R                  4/nU R	                  XXEUS9  [        [        SS5      5      S/-   n[        [        SS5      5      S/-   n[        R
                  [        R
                  4/nU R	                  XXEUS9  [        [        SS5      5      SS	/-   n[        [        SS5      5      SS	/-   n[        R                  [        R                  4/nU R	                  XXEUS9  [        [        SS5      5      S
S/-   n[        [        SS5      5      S
S/-   n[        R                  [        R                  4/nU R	                  XXEUS9  g )Nr   r^  rj  rm  rk  r?  rl               )listranger   r  r@  r  r  r  r  s         r   run_logicalTestOperators.run_logical  s   %1+&)4
%1+&)4
||U\\23
6z!& 	 	( %1+&)4
%1+&)4
||U\\23
6z!& 	 	( %A,'8Y*??
%A,'8Y*??
{{EKK01
6z!& 	 	( %A,'8Y*??
%A,'8Y*??
{{EKK01
6z!& 	 	(r   )bitwise_andbitwise_iand
bitwise_orbitwise_iorbitwise_xorbitwise_ixorrx  r  )r  boolsc                 Z   U R                   R                  n[        [        SS5      5      S/-   nU Vs/ s H  n[        R
                  " U5      PM     nnS/n[        R
                  [        R
                  4/nU R                  X#XVUS9  [        [        SS5      5      SS/-   nS/n[        R                  [        R                  4/nU R                  X#XVUS9  [        [        SS5      5      S	/-   nU Vs/ s H  n[        R                  " U5      PM     nnS/n[        R                  [        R                  4/nU R                  X#XVUS9  [        [        SS5      5      S
S/-   nS/n[        R                  [        R                  4/nU R                  X#XVUS9  / SQn[        [        [        R                  U5      5      nU R                   R                  n[        [        R                  440 UD6" U5      nU H!  n	U R!                  U" U	5      U" U	5      5        M#     g s  snf s  snf )Nr   r^  rj  rm  rr  r?  rl  rs  rk  rt  ru  r  )rT  ro   rv  rw  rD  r  r   r@  r  r  r  mapbool_rt   r   r  r2  )
r4  r9  r5  r6  r   r7  r8  valuesr;  vals
             r   test_bitwise_notTestOperators.test_bitwise_not  s   33%1+&)4
,67JqbiilJ
7S
||U\\23
6z!& 	 	( %A,'8Y*??
S
{{EKK01
6z!& 	 	( %1+&)4
,67JqbiilJ
7S
||U\\23
6z!& 	 	( %A,'8Y*??
S
{{EKK01
6z!& 	 	(
 ,c"((F+,,,U]]$..v6C##F3Ks< Q 8" 8s    H#7 H(c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_bitwise_not_npm"TestOperators.test_bitwise_not_npm  r  r   c                    ^  U 4S jn/ SQnU HL  n[        T R                  U5      nU" U[        R                  [        R                  4T R                  U   S9  MN     g)z9
Make sure that bitwise float operations are not allowed
c                   > SR                  U 5      nTR                  [        R                  US9 n[	        U5      " U 5        S S S 5        [
        S-   nUR                  [        U[        5      (       a  UOSR                  U5      5      nTR                  U[        WR                  5      5        g ! , (       d  f       Nt= f)Nz'expecting TypingError when compiling {}r-  z {}zFunction({}))
formatr  r   TypingErrorr   r   
isinstancer  r  r  )r5  argtypesopnamer.  r8  fmt	expectingr4  s          r   assert_reject_compile?TestOperators.test_bitwise_float.<locals>.assert_reject_compile  s    ;BB6JC""6#5#53"?6Xv& @ &C

&0&=&= $*(6(=(=f(EGI MM)S)9)9%:; @?s   B11
B?r&  )r  N)r  rT  r   r  _bitwise_opnames)r4  r  methodsnamer5  s   `    r   test_bitwise_float TestOperators.test_bitwise_float  sS    		<
 DTWWd+F!&5==%--*H)-)>)>t)DF r   c                     U R                   R                  n/ SQn[        S0 [        D6" U5      nU H!  nU R	                  U" U5      U" U5      5        M#     g )Nr  r  r  333333?        333333@r@  )rT  rw   r   r  r_  r4  r5  r  r;  r  s        r   test_notTestOperators.test_not	  sO    $$
 ,+,V4CVC[%*5 r   c                    U R                   R                  n[        R                  [        R                  [        R
                  [        R                  [        R                  /n/ SQn[        X#5       Hl  u  pE[        U45      " U5      nU R                  UR                  S   R                  [        R                  5        U R                  U" U5      U" U5      5        Mn     g )Nr  r   )rT  rw   r   int8r  r  r  r  zipr   r_  nopython_signaturesreturn_typer  r4  r5  argtysr  tyr  r;  s          r   test_not_npmTestOperators.test_not_npm  s    $$ JJKKKKMM

 6*GB"K'EU66q9EE"]],VC[%*5	 +r   c                    U R                   R                  n[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  /n/ SQn[        X#5       H5  u  pE[        U45      " U5      nU R                  U" U5      U" U5      5        M7     g N)r  r  r  r  g333333@r  TF)rT  rz   r   r  r  r  r  r  r  r  r  r   assertAlmostEqualr  s          r   test_negate_npmTestOperators.test_negate_npm1  s    '' JJKKKKMMMMMMMM	
	
 6*GB"K'E""6#;c
; +r   c                     U R                   R                  n/ SQn[        S0 [        D6" U5      nU H!  nU R	                  U" U5      U" U5      5        M#     g N)r  r  r  r  r  TFr@  )rT  rz   r   r  r_  r  s        r   test_negateTestOperators.test_negateM  sO    ''
 ,+,V4CVC[%*5 r   c                    U R                   R                  n[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  /n/ SQn[        X#5       H5  u  pE[        U45      " U5      nU R                  U" U5      U" U5      5        M7     g r  )rT  r}   r   r  r  r  r  r  r  r  r  r   r  r  s          r   test_unary_positive_npm%TestOperators.test_unary_positive_npm\  s    // JJKKKKMMMMMMMM	
	
 6*GB"K'E""6#;c
; +r   c                     U R                   R                  n/ SQn[        S0 [        D6" U5      nU H!  nU R	                  U" U5      U" U5      5        M#     g r  )rT  r}   r   r  r_  r  s        r   test_unary_positive!TestOperators.test_unary_positivew  sO    //
 ,+,V4CVC[%*5 r   c                     [         R                  n[        U[         R                  " US5      440 UD6" U5      nS H#  nSnU R	                  U" XV5      U" XV5      5        M%     g )Nr  )r  r?        *   )r  r  r  )r   r  r   UniTupler2  )r4  r5  r9  rJ  r;  itups          r   	_check_inTestOperators._check_in  sV    UENN5!45??G!AC##F1NE!MB "r   c                 P    U R                  U R                  R                  U5        g r   )r  rT  r   rg  s     r   test_inTestOperators.test_in  s    tww))51r   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_in_npmTestOperators.test_in_npm  s    7#r   c                 P    U R                  U R                  R                  U5        g r   )r  rT  r   rg  s     r   test_not_inTestOperators.test_not_in  s    tww--u5r   c                 *    U R                  [        S9  g rl  )r  rn  ro  s    r   test_not_in_npmTestOperators.test_not_in_npm  s    w'r   r   N)F)fr   r   r   r   __doc__r   rT  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r@  rG  rV  rc  rZ  r   r  r  r  r  r  r  r[  r  r  r\  rh  rp  rt  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  localsr  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r)  r,  r9  r<  rF  rJ  rM  r   rT  rW  rZ  re  rm  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r%  r%  h  s    
B "*"*"2"2"*//#+#3#3'}} (&ll'||'|| (&.oo .@* 0I
 5F(,00 K[[%++\\5<<]]EMM3M  %0@0@A#4 @+ $5 @+ $5 @+ $5 @+ $5 O+ $5 O+3&$ -> ( ,= (( .? * 7H 3 /@ *.> F"2$6%8 0"2$6%8 A"2$? 9J',6  ): 20 *; S1 %6 L, *; (( ,= *( ("0$4 &7 
*- &7 
*- &7 
*- *; 
*1 &7 2=%II 	! 	!6; /@ (B < "5 
 0A (B > "6 
 ): (B 9 #0#4	 &7 -=^- FD662<86<66C . 2$ !2 6(r   r%  c                      \ rS rSr\r\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                   \R"                  S.rSrg)TestOperatorModulei  r&  r   N)r   r   r   r   r   rT  r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r  r    sb    	B "*"*"2"2"*//#+#3#3'}} (&ll'||'|| (&.oor   r  c                   .   \ rS rSrSr\r/ SQr\R                  \R                  \R                  \R                  /r\ V Vs/ s H  oR                  (       d  M  UPM     snn r\ V Vs/ s H  oR                  (       a  M  UPM     snn r\" \R&                  " \\5      5      r\ V VVs/ s H,  u  p#UR                  (       d  UR                  (       d  M)  X#4PM.     snnn r\ V VVs/ s H.  u  p#UR                  (       a  M  UR                  (       a  M+  X#4PM0     snnn rS rS rS rS rS rS	 r\S
 4S jr\4S jr\S 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 r0Sr1g s  snn f s  snn f s  snnn f s  snnn f )!TestMixedIntsi  z4
Tests for operator calls with mixed integer types.
)r   r  r  r/  r     i'  r  r  iiiic                     [         R                  " UR                  5      nUR                  Us=:*  =(       a    UR                  :*  $ s  $ r   )rD  iinfokeyminmax)r4  r  r  tp_infos       r   int_in_dtype_range TestMixedInts.int_in_dtype_range  s5    ((266"{{c00W[[0000r   c                     [        S U 5       5      n[        U[        R                  R                  5      n[	        [
        SU-  5      $ )Nc              3   R   #    U  H  oR                   R                  S -  v   M     g7fr^  NrJ  itemsize.0vs     r   	<genexpr>8TestMixedInts.get_numpy_signed_upcast.<locals>.<genexpr>       :Tww''!+T   %'zint%dr  r   intpbitwidthr  rD  r4  valsr  s      r   get_numpy_signed_upcast%TestMixedInts.get_numpy_signed_upcast  s:    :T::x!4!45r7X-..r   c                     [        S U 5       5      n[        U[        R                  R                  5      n[	        [
        SU-  5      $ )Nc              3   R   #    U  H  oR                   R                  S -  v   M     g7fr  r  r  s     r   r  :TestMixedInts.get_numpy_unsigned_upcast.<locals>.<genexpr>  r  r  zuint%dr  r  s      r   get_numpy_unsigned_upcast'TestMixedInts.get_numpy_unsigned_upcast  s:    :T::x!4!45r8h.//r   c                 B    [        [        UR                  5      " U5      $ r   )r  rD  r  )r4  rb  r  s      r   get_typed_intTestMixedInts.get_typed_int  s    r388$S))r   c                 8   ^ ^ [        [        U5      mUU 4S jnU$ )Nc                 P   > TR                  X5      nT" U" U 5      U" U5      5      $ r   r  rD  rE  r  rT  r4  s      r   control_signed8TestMixedInts.get_control_signed.<locals>.control_signed  s(    --a3BbeRU##r   r  r   )r4  r  r  rT  s   `  @r   get_control_signed TestMixedInts.get_control_signed  s    Xv&	$ r   c                 8   ^ ^ [        [        U5      mUU 4S jnU$ )Nc                 P   > TR                  X5      nT" U" U 5      U" U5      5      $ r   r  r  s      r   control_unsigned<TestMixedInts.get_control_unsigned.<locals>.control_unsigned  s(    //5BbeRU##r   r   )r4  r  r  rT  s   `  @r   get_control_unsigned"TestMixedInts.get_control_unsigned  s    Xv&	$  r   c                     U $ r   r   rs   s    r   <lambda>TestMixedInts.<lambda>  s    1r   c           	         U H  u  p[        X45      " U5      n
[        R                  " X35       H  u  pU R                  X5      (       a  U R                  X5      (       d  M3  U R	                  X5      nU R	                  X5      nU" X5      nU
" X5      nU R                  X5        SU< SU< SX4< 3nU" U5      U" U5      pU R                  " X4SU0UD6  M     M     g )Nr(  r)  r*  r.  )r   r/  r0  r  r  assertIsInstancer2  )r4  r5  control_funcoperandsr   expected_type
force_typeassertPreciseEqualArgsxtytr;  r   r!   r?  r>  r.  s                   r   
run_binaryTestMixedInts.run_binary  s     FB"N6*E!))(=..q55T=T=TUV=[=[&&r-&&r-'-Ak%%c9Q* *3H1EX'' B3 B*@B > r   c                     U H  n[        U45      " U5      nU Hm  nU R                  X5      (       d  M  U R                  Xh5      nU" U5      n	U" U5      n
U R                  X5        U R	                  XSU< SU< SU
< SU	< 3S9  Mo     M     g )Nzmismatch for z with type r+  r,  r-  )r   r  r  r  r2  )r4  r5  r  r  r   r  r  r;  r   r?  r>  s              r   	run_unaryTestMixedInts.run_unary  s    B"K'E..q55&&r-'?Ah%%c9''b#x1 ( 2  r   c                     U $ r   r   rs   s    r   r  r    s    r   c                     U R                   " XR                  U5      X0R                  U4SU0UD6  U R                   " XR                  U5      X0R                  U4SU0UD6  g )Nr  )r  r  signed_pairsr  unsigned_pairs)r4  r5  r  samplesr  r  r  s          r   run_arith_binopTestMixedInts.run_arith_binop  sr     	 7 7 ?!2!2M	2#-	2 1	2 	 9 9& A!4!4m	2#-	2 1	2r   c                 f    U R                  U R                  R                  SU R                  5        g )Nr   )r   rT  r"   int_samplesro  s    r   test_addTestMixedInts.test_add  $    TWW00%9I9IJr   c                 f    U R                  U R                  R                  SU R                  5        g )Nr   )r   rT  r*   r#  ro  s    r   test_subTestMixedInts.test_sub  r&  r   c                 f    U R                  U R                  R                  SU R                  5        g )Nr   )r   rT  r0   r#  ro  s    r   test_mulTestMixedInts.test_mul  r&  r   c                     U R                    Vs/ s H  oS:w  d  M
  UPM     nnU R                  U R                  R                  SU5        g s  snf )Nr   r   )r#  r   rT  r6   r4  r   r  s      r   test_floordivTestMixedInts.test_floordiv  sC    "..9.q&1.9TWW55z7K :
   	AAc                     U R                    Vs/ s H  oS:w  d  M
  UPM     nnU R                  U R                  R                  SU5        g s  snf )Nr   r   )r#  r   rT  rD   r.  s      r   test_modTestMixedInts.test_mod  sC    "..9.q&1.9TWW00%A :r1  c                   ^  0 n[         R                  S:X  a	  [        US'   T R                  R                  nT R
                   Vs/ s H  o3S:  d  M
  UPM     nnT R                  " USU40 UD6  U 4S jnT R
                   Vs/ s H  o3S:w  d  M
  UPM     nnT R                   VVs/ s H.  u  pgUR                  (       d  M  UR                  (       d  M+  Xg4PM0     nnnT R                  " X%XH40 UD6  g s  snf s  snf s  snnf )Nr0  r  r   r   c                    > TR                  X5      nUS:  a  U" U 5      U" U5      -  $ U" U 5      U" U* 5      -  nUS:X  a  g[        R                  " SU-  5      $ )Nr   g      ?)r  rD  r  )rD  rE  r  invr4  s       r   r  .TestMixedInts.test_pow.<locals>.control_signed+  s\    --a3BAv!u1~%er1"vo!8wwsSy))r   )
r   r5  rS  rT  r   r#  r   
type_pairssignedr  )	r4  
extra_castr5  r   r  r  ur  r  s	   `        r   test_powTestMixedInts.test_pow   s    
??g%',J|$$$ #..9.q&1.9VUGBzB		* #..9.q&1.9+/?? 2?4188 () ? 2	=1;	=# : :2s*   	C4C4	C9C9'C>C>C>c           	         S nU R                    Vs/ s H  o"S:w  d  M
  UPM     nnU R                  R                  nU R                  XAX0R                  [
        SS9  U R                  XAX0R                  [
        SS9  g s  snf )Nc                 0    [        U 5      [        U5      -  $ r   )rS  rD  rE  s     r   control+TestMixedInts.test_truediv.<locals>.control=  s    8eAh&&r   r   double)r  prec)r#  rT  r>   r  r  rS  r  )r4  rB  r   r  r5  s        r   test_truedivTestMixedInts.test_truediv;  s}    	'"..9.q&1.9((
 	2C2C&+( 	 	<2E2E&+( 	 	< :s
   	A>A>c                 f    U R                  U R                  R                  SU R                  5        g )Nr   )r   rT  r[   r#  ro  s    r   test_andTestMixedInts.test_andJ  s$    TWW88&$BRBRSr   c                 f    U R                  U R                  R                  SU R                  5        g )Nr   )r   rT  ra   r#  ro  s    r   test_orTestMixedInts.test_orM  s$    TWW77@P@PQr   c                 f    U R                  U R                  R                  SU R                  5        g )Nr   )r   rT  rg   r#  ro  s    r   test_xorTestMixedInts.test_xorP  s$    TWW88%AQAQRr   c                   ^ ^^^ [        [        U5      mUU 4S jnUU 4S jnT R                  mUUU 4S jnT R                   VVs/ s H  u  pgUR                  (       d  M  Xg4PM     nnnT R                   VVs/ s H  u  pgUR                  (       a  M  Xg4PM     n	nnU H  u  pU" XU5        M     U	 H  u  pU" XU5        M     g s  snnf s  snnf )Nc                 P   > TR                  X5      nT" U" U 5      U" U5      5      $ r   r  rD  rE  r  opfuncr4  s      r   r  5TestMixedInts.run_shift_binop.<locals>.control_signedU  s(    --a3B"Q%A''r   c                 P   > TR                  X5      nT" U" U 5      U" U5      5      $ r   r  rS  s      r   r  7TestMixedInts.run_shift_binop.<locals>.control_unsignedX  s(    //5B"Q%A''r   c           	      |  > [        X45      " T
5      nT H  nU R                  S-
  nSSSSUS-
  U4 H  nTR                  X@5      (       a  TR                  Xa5      (       d  M1  TR                  X5      nTR                  X5      nU" XF5      nU" XF5      nSU< SU< SX4< 3n	TR	                  XU	S9  M     M     g )	Nr  r   r  r  r(  r)  r*  r-  )r   r  r  r  r2  )r  r  r  r;  r   maxshiftr!   r?  r>  r.  r5  r  r4  s             r   check,TestMixedInts.run_shift_binop.<locals>.check^  s    "N6*E ;;?Q1hlH=A22199AXAXYZA_A_ **21A**21A+A1H+CRH.C++Cs+C >	 r   )r  r   r#  r9  r:  )r4  r5  r  r  r  rZ  r<  r  r  r  r  r  rT  r  s   ``          @@r   run_shift_binopTestMixedInts.run_shift_binopS  s    6*	(	( ""	D( ,0?? %?4188 ? %-1__ +_TQ!" !1&_ + #FB".) #$FB"*+ %%+s   C!C:CCc                 P    U R                  U R                  R                  S5        g )Nr   )r\  rT  rO   ro  s    r   test_lshiftTestMixedInts.test_lshift|  s    TWW::HEr   c                 P    U R                  U R                  R                  S5        g )Nr   )r\  rT  rU   ro  s    r   test_rshiftTestMixedInts.test_rshift  s    TWW;;XFr   c                     S nU R                   nU R                  R                  nU R                  X1X R                  5        g )Nc                     U $ r   r   )rD  s    r   rB  2TestMixedInts.test_unary_positive.<locals>.control  s    Hr   )r#  rT  r}   r  	int_types)r4  rB  r  r5  s       r   r  !TestMixedInts.test_unary_positive  s3    	""//v@r   c                    ^  U 4S jnU 4S jnT R                   nT R                  R                  nT R                  XAUT R                  5        T R                  XBUT R
                  5        g )Nc                 8   > TR                  U 5      nU" U * 5      $ r   r  rD  r  r4  s     r   r  9TestMixedInts.test_unary_negative.<locals>.control_signed      --a0Bqb6Mr   c                 8   > TR                  U 5      nU" U * 5      $ r   r  rk  s     r   r  ;TestMixedInts.test_unary_negative.<locals>.control_unsigned      //2Bqb6Mr   )r#  rT  rz   r  signed_typesunsigned_typesr4  r  r  r  r5  s   `    r   test_unary_negative!TestMixedInts.test_unary_negative  sU    		 ""''vw8I8IJv$:M:MNr   c                    ^  U 4S jnU 4S jnT R                   nT R                  R                  nT R                  XAUT R                  5        T R                  XBUT R
                  5        g )Nc                 8   > TR                  U 5      nU" U ) 5      $ r   r  rk  s     r   r  1TestMixedInts.test_invert.<locals>.control_signed  rm  r   c                 8   > TR                  U 5      nU" U ) 5      $ r   r  rk  s     r   r  3TestMixedInts.test_invert.<locals>.control_unsigned  rp  r   )r#  rT  rt   r  rq  rr  rs  s   `    r   test_invertTestMixedInts.test_invert  sU    		 "",,vw8I8IJv$:M:MNr   r   N)2r   r   r   r   r  r   rT  r#  r   r  uint8r  r  rg  r:  rq  rr  rv  r/  r0  r9  r  r  r  r  r  r  r  r  rO  r  r  r   r$  r(  r+  r/  r3  r=  rF  rI  rL  rO  r\  r_  rb  r  rt  r{  r   )r  r  r<  r  s   0000r   r  r    s    
BOKU[[%++u||DI!*82iiB8L#,>9RIIb9>Ni''	9=>J'1 -ztqxx188 QFz -L)3 5hh *+(( qf 5N1/
0
*  "%B, !$2" '*k
2KKKLB=6<TRS',RFGAOOA 9>-5s6   E=E=)FF*(F	F	(FFFr  c                       \ rS rSr\rSrg)TestMixedIntsOperatorModulei  r   N)r   r   r   r   r   rT  r   r   r   r   r  r    s    	Br   r  c                   *    \ rS rSrSrS rS rS rSrg)TestStaticPoweri  zT
Test the ** operator with a static exponent, to exercise a
dedicated optimization.
c           	      p   U Hf  n[         R                  n[        U5      n[        SS9" U5      n[        SS9" U5      nU H$  n U" X5      n	U" U5      n
U R	                  XSS9  M&     Mh     g ! [
         a=    U R                  [
        5         U" U5        S S S 5         M`  ! , (       d  f        Mp  = ff = f)NTr  rD  )rE  )r   r   r   r   r2  r  r  )r4  	exponentsr  r   regular_funcstatic_funcstatic_cfuncregular_cfuncr  r?  r>  s              r   
_check_powTestStaticPower._check_pow  s    C.::L+C0K-k:L.|<MJ,Q4H
 'q/C++H+I   ) (**+<=$Q >===(s*   A..B5	B!	B5!
B1+B51B5c           	          / SQnSSSSS[         R                  " S5      [         R                  " S5      /nU R                  X5        g )	N)	r  r  r  r     r   r  r
  r  r   r  r  r  rr  r  r?  )rD  r  uint16r  r4  r  r  s      r   test_int_valuesTestStaticPower.test_int_values  s7    3	1aRbiil;	(r   c                     / SQnSSS[         R                  " S5      [        S5      [        S5      /nU R                  X5        g )N)r  r  r  r  r  r   r  r
  r  i ire  g      
@g      g       infnan)rD  r  rS  r  r  s      r   test_real_values TestStaticPower.test_real_values  s6    H	T5"**T"2E%L%,O	(r   r   N)	r   r   r   r   r  r  r  r  r   r   r   r   r  r    s    
J$))r   r  c                   $    \ rS rSrSrS rS rSrg)TestStringConstComparisoni  z%
Test comparison of string constants
c                     S nS n[        SS9" U5      n[        SS9" U5      nU R                  U" 5       U" 5       5        U R                  U" 5       U" 5       5        g )Nc                      Sn U S:H  $ Ntestr   ss    r   
test_impl15TestStringConstComparison.test_eq.<locals>.test_impl1      A;r   c                      Sn U S:H  $ Ntest1r  r   r  s    r   
test_impl25TestStringConstComparison.test_eq.<locals>.test_impl2      A;r   Tr  r   r_  r4  r  r  cfunc1cfunc2s        r   test_eq!TestStringConstComparison.test_eq  T    		 d#J/d#J/vx0vx0r   c                     S nS n[        SS9" U5      n[        SS9" U5      nU R                  U" 5       U" 5       5        U R                  U" 5       U" 5       5        g )Nc                      Sn U S:g  $ r  r   r  s    r   r  6TestStringConstComparison.test_neq.<locals>.test_impl1  r  r   c                      Sn U S:g  $ r  r   r  s    r   r  6TestStringConstComparison.test_neq.<locals>.test_impl2  r  r   Tr  r  r  s        r   test_neq"TestStringConstComparison.test_neq  r  r   r   N)r   r   r   r   r  r  r  r   r   r   r   r  r    s    11r   r  c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)TestBooleanLiteralOperatorsi  z'
Test operators with Boolean constants
c                   ^	^
 U	4S jnU
4S jnS n[         R                  " SS/SS9 H3  u  m	n[        SS9" U5      nU R                  U" U5      U" U5      5        M5     [         R                  " SS/SS9 H3  u  nm
[        SS9" U5      nU R                  U" U5      U" U5      5        M5     [        SS9" U5      nU R                  U" 5       U" 5       5        g )	Nc                    > TU :H  $ r   r   rE  a_vals    r   r  7TestBooleanLiteralOperators.test_eq.<locals>.test_impl1      A:r   c                    > U T:H  $ r   r   rD  b_vals    r   r  7TestBooleanLiteralOperators.test_eq.<locals>.test_impl2      :r   c                  2    SS:H  n SS:H  nSS:H  nSS:H  nXX#4$ NTFr   r1r2r3r4s       r   
test_impl37TestBooleanLiteralOperators.test_eq.<locals>.test_impl3  1    BB$B%BB##r   TFr  repeatr  r/  r0  r   r_  r4  r  r  r  rE  r  rD  r  cfunc3r  r  s            @@r   r  #TestBooleanLiteralOperators.test_eq      			$ "))4-BHE1$'
3FZ]F1I6 C "))4-BHAu$'
3FZ]F1I6 C d#J/vx0r   c                   ^	^
 U	4S jnU
4S jnS n[         R                  " SS/SS9 H3  u  m	n[        SS9" U5      nU R                  U" U5      U" U5      5        M5     [         R                  " SS/SS9 H3  u  nm
[        SS9" U5      nU R                  U" U5      U" U5      5        M5     [        SS9" U5      nU R                  U" 5       U" 5       5        g )	Nc                    > TU :g  $ r   r   r  s    r   r  7TestBooleanLiteralOperators.test_ne.<locals>.test_impl1  r  r   c                    > U T:g  $ r   r   r  s    r   r  7TestBooleanLiteralOperators.test_ne.<locals>.test_impl2  r  r   c                  2    SS:g  n SS:g  nSS:g  nSS:g  nXX#4$ r  r   r  s       r   r  7TestBooleanLiteralOperators.test_ne.<locals>.test_impl3  r  r   TFr  r  r  r  r  s            @@r   test_ne#TestBooleanLiteralOperators.test_ne  r  r   c                 
  ^ U4S jnS n[         R                  " SS/SS9 H3  u  mn[        SS9" U5      nU R                  U" U5      U" U5      5        M5     [        SS9" U5      nU R                  U" 5       U" 5       5        g )Nc                    > TU L $ r   r   r  s    r   r  7TestBooleanLiteralOperators.test_is.<locals>.test_impl1(  s    A:r   c                  *    SSL n SSL nSSL nSSL nXX#4$ r  r   r  s       r   r  7TestBooleanLiteralOperators.test_is.<locals>.test_impl2+  s1    BB$B%BB##r   TFr  r  r  r  )r4  r  r  rE  r  r  r  s         @r   test_is#TestBooleanLiteralOperators.test_is&  s{    		$ "))4-BHE1$'
3FZ]F1I6 C d#J/vx0r   c                 `    S n[        SS9" U5      nU R                  U" 5       U" 5       5        g )Nc                  &    Su  pU (       + U(       + 4$ Nr  r   rA  s     r   	test_impl7TestBooleanLiteralOperators.test_not.<locals>.test_impl;  s    DAEq5>!r   Tr  r  r4  r  r;  s      r   r  $TestBooleanLiteralOperators.test_not9  s,    	" T"9-eg.r   c                 `    S n[        SS9" U5      nU R                  U" 5       U" 5       5        g )Nc                  6    Su  p[        U 5      [        U5      4$ r  )boolrA  s     r   r  8TestBooleanLiteralOperators.test_bool.<locals>.test_implD  s    DAGT!W%%r   Tr  r  r  s      r   	test_bool%TestBooleanLiteralOperators.test_boolB  s,    	& T"9-eg.r   c                 `    S n[        SS9" U5      nU R                  U" 5       U" 5       5        g )Nc                  6    Su  p[        U 5      [        U5      4$ r  )r  rA  s     r   r  ?TestBooleanLiteralOperators.test_bool_to_str.<locals>.test_implM  s    DAFCF##r   Tr  r  r  s      r   test_bool_to_str,TestBooleanLiteralOperators.test_bool_to_strK  s,    	$ T"9-eg.r   r   N)r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r  r    s%    14141&///r   r  __main__)&r1  r/  r   unittestnumpyrD  numbar   r   
numba.corer   r   r   numba.core.types.functionsr   numba.tests.supportr	   r
   r   numba.tests.matmul_usecaser   r   r   rn  r  r   objectr   r   r%  r  r  r  r  r  r  r   mainr   r   r   <module>r     s          + + 3 9 95 5 t
& h& hV`"V `"Fo(H o(d &uOH uOp -  
")h ")H1 1@d/( d/N zMMO r   