
    xKg[                        d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
mZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ ddiZd	diZd
 Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z! G d de      Z" G d de      Z#e$dk(  r ejJ                          yy)    N)jitnjit)typesutilserrors)_header_lead)TestCasetag
needs_blas)matmul_usecaseimatmul_usecase
DumbMatrixnopythonTforceobjc                       fd}|S )Nc                     | z  S N )xexps    ^/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_operators.pypow_usecasez&make_static_power.<locals>.pow_usecase   s    Cx    r   )r   r   s   ` r   make_static_powerr      s    r   c                      e Zd Zed        Zed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zer ee      Z ee      Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Z ed        Z!ed        Z"ed        Z#ed        Z$ed         Z%ed!        Z&ed"        Z'ed#        Z(ed$        Z)ed%        Z*ed&        Z+y')(LiteralOperatorImplc                     | |z   S r   r   r   ys     r   add_usecasezLiteralOperatorImpl.add_usecase       1ur   c                     | |z  } | S r   r   r   s     r   iadd_usecasez LiteralOperatorImpl.iadd_usecase        	Qr   c                     | |z
  S r   r   r   s     r   sub_usecasezLiteralOperatorImpl.sub_usecase%   r!   r   c                     | |z  } | S r   r   r   s     r   isub_usecasez LiteralOperatorImpl.isub_usecase)   r$   r   c                     | |z  S r   r   r   s     r   mul_usecasezLiteralOperatorImpl.mul_usecase.   r!   r   c                     | |z  } | S r   r   r   s     r   imul_usecasez LiteralOperatorImpl.imul_usecase2   r$   r   c                     | |z  S r   r   r   s     r   floordiv_usecasez$LiteralOperatorImpl.floordiv_usecase7       Avr   c                     | |z  } | S r   r   r   s     r   ifloordiv_usecasez%LiteralOperatorImpl.ifloordiv_usecase;       	ar   c                     | |z  S r   r   r   s     r   truediv_usecasez#LiteralOperatorImpl.truediv_usecase@   r!   r   c                     | |z  } | S r   r   r   s     r   itruediv_usecasez$LiteralOperatorImpl.itruediv_usecaseD   r$   r   c                     | |z  S r   r   r   s     r   mod_usecasezLiteralOperatorImpl.mod_usecaseM   r!   r   c                     | |z  } | S r   r   r   s     r   imod_usecasez LiteralOperatorImpl.imod_usecaseQ   r$   r   c                     | |z  S r   r   r   s     r   r   zLiteralOperatorImpl.pow_usecaseV   r/   r   c                     | |z  } | S r   r   r   s     r   ipow_usecasez LiteralOperatorImpl.ipow_usecaseZ   r2   r   c                     | |z  S r   r   r   s     r   bitshift_left_usecasez)LiteralOperatorImpl.bitshift_left_usecase_   r/   r   c                     | |z  } | S r   r   r   s     r   bitshift_ileft_usecasez*LiteralOperatorImpl.bitshift_ileft_usecasec   r2   r   c                     | |z	  S r   r   r   s     r   bitshift_right_usecasez*LiteralOperatorImpl.bitshift_right_usecaseh   r/   r   c                     | |z  } | S r   r   r   s     r   bitshift_iright_usecasez+LiteralOperatorImpl.bitshift_iright_usecasel   r2   r   c                     | |z  S r   r   r   s     r   bitwise_and_usecasez'LiteralOperatorImpl.bitwise_and_usecaseq   r!   r   c                     | |z  } | S r   r   r   s     r   bitwise_iand_usecasez(LiteralOperatorImpl.bitwise_iand_usecaseu   r$   r   c                     | |z  S r   r   r   s     r   bitwise_or_usecasez&LiteralOperatorImpl.bitwise_or_usecasez   r!   r   c                     | |z  } | S r   r   r   s     r   bitwise_ior_usecasez'LiteralOperatorImpl.bitwise_ior_usecase~   r$   r   c                     | |z  S r   r   r   s     r   bitwise_xor_usecasez'LiteralOperatorImpl.bitwise_xor_usecase   r!   r   c                     | |z  } | S r   r   r   s     r   bitwise_ixor_usecasez(LiteralOperatorImpl.bitwise_ixor_usecase   r$   r   c                     |  S r   r   r   _unuseds     r   bitwise_not_usecase_binaryz.LiteralOperatorImpl.bitwise_not_usecase_binary   	    r	r   c                     |  S r   r   r   s    r   bitwise_not_usecasez'LiteralOperatorImpl.bitwise_not_usecase   rV   r   c                     |  S r   r   rX   s    r   not_usecasezLiteralOperatorImpl.not_usecase   s	    vr   c                     |  S r   r   rX   s    r   negate_usecasez"LiteralOperatorImpl.negate_usecase   rV   r   c                     | S r   r   rX   s    r   unary_positive_usecasez*LiteralOperatorImpl.unary_positive_usecase   rV   r   c                     | |k  S r   r   r   s     r   
lt_usecasezLiteralOperatorImpl.lt_usecase   r!   r   c                     | |k  S r   r   r   s     r   
le_usecasezLiteralOperatorImpl.le_usecase   r/   r   c                     | |kD  S r   r   r   s     r   
gt_usecasezLiteralOperatorImpl.gt_usecase   r!   r   c                     | |k\  S r   r   r   s     r   
ge_usecasezLiteralOperatorImpl.ge_usecase   r/   r   c                     | |k(  S r   r   r   s     r   
eq_usecasezLiteralOperatorImpl.eq_usecase   r/   r   c                     | |k7  S r   r   r   s     r   
ne_usecasezLiteralOperatorImpl.ne_usecase   r/   r   c                 
    | |v S r   r   r   s     r   
in_usecasezLiteralOperatorImpl.in_usecase       Avr   c                 
    | |vS r   r   r   s     r   not_in_usecasez"LiteralOperatorImpl.not_in_usecase   s    zr   c                 
    | |u S r   r   r   s     r   
is_usecasezLiteralOperatorImpl.is_usecase   rn   r   N),__name__
__module____qualname__staticmethodr    r#   r&   r(   r*   r,   r.   r1   r4   r6   r   r   r8   r:   r   r=   r?   rA   rC   rE   rG   rI   rK   rM   rO   rQ   rU   rY   r[   r]   r_   ra   rc   re   rg   ri   rk   rm   rp   rr   r   r   r   r   r      s                       %n5&7                                                       r   r   c                      e Zd Zed        Zed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Z ed        Z!ed        Z"ed         Z#ed!        Z$ed"        Z%ed#        Z&ed$        Z'ed%        Z(ed&        Z)ed'        Z*ed(        Z+y))*FunctionalOperatorImplc                 .    t        j                  | |      S r   )operatoraddr   s     r   r    z"FunctionalOperatorImpl.add_usecase       ||Aq!!r   c                 .    t        j                  | |      S r   )rz   iaddr   s     r   r#   z#FunctionalOperatorImpl.iadd_usecase       }}Q""r   c                 .    t        j                  | |      S r   )rz   subr   s     r   r&   z"FunctionalOperatorImpl.sub_usecase   r|   r   c                 .    t        j                  | |      S r   )rz   isubr   s     r   r(   z#FunctionalOperatorImpl.isub_usecase   r   r   c                 .    t        j                  | |      S r   )rz   mulr   s     r   r*   z"FunctionalOperatorImpl.mul_usecase   r|   r   c                 .    t        j                  | |      S r   )rz   imulr   s     r   r,   z#FunctionalOperatorImpl.imul_usecase   r   r   c                 .    t        j                  | |      S r   )rz   floordivr   s     r   r.   z'FunctionalOperatorImpl.floordiv_usecase         A&&r   c                 .    t        j                  | |      S r   )rz   	ifloordivr   s     r   r1   z(FunctionalOperatorImpl.ifloordiv_usecase   s    !!!Q''r   c                 .    t        j                  | |      S r   )rz   truedivr   s     r   r4   z&FunctionalOperatorImpl.truediv_usecase       1%%r   c                 .    t        j                  | |      S r   )rz   itruedivr   s     r   r6   z'FunctionalOperatorImpl.itruediv_usecase   r   r   c                 .    t        j                  | |      S r   )rz   modr   s     r   r8   z"FunctionalOperatorImpl.mod_usecase   r|   r   c                 .    t        j                  | |      S r   )rz   imodr   s     r   r:   z#FunctionalOperatorImpl.imod_usecase   r   r   c                 .    t        j                  | |      S r   )rz   powr   s     r   r   z"FunctionalOperatorImpl.pow_usecase   r|   r   c                 .    t        j                  | |      S r   )rz   ipowr   s     r   r=   z#FunctionalOperatorImpl.ipow_usecase   r   r   c                 .    t        j                  | |      S r   )rz   matmulr   s     r   r   z%FunctionalOperatorImpl.matmul_usecase       q!$$r   c                 .    t        j                  | |      S r   )rz   imatmulr   s     r   r   z&FunctionalOperatorImpl.imatmul_usecase  r   r   c                 .    t        j                  | |      S r   )rz   lshiftr   s     r   r?   z,FunctionalOperatorImpl.bitshift_left_usecase  r   r   c                 .    t        j                  | |      S r   )rz   ilshiftr   s     r   rA   z-FunctionalOperatorImpl.bitshift_ileft_usecase  r   r   c                 .    t        j                  | |      S r   )rz   rshiftr   s     r   rC   z-FunctionalOperatorImpl.bitshift_right_usecase  r   r   c                 .    t        j                  | |      S r   )rz   irshiftr   s     r   rE   z.FunctionalOperatorImpl.bitshift_iright_usecase  r   r   c                 .    t        j                  | |      S r   )rz   and_r   s     r   rG   z*FunctionalOperatorImpl.bitwise_and_usecase  r   r   c                 .    t        j                  | |      S r   )rz   iandr   s     r   rI   z+FunctionalOperatorImpl.bitwise_iand_usecase  r   r   c                 .    t        j                  | |      S r   )rz   or_r   s     r   rK   z)FunctionalOperatorImpl.bitwise_or_usecase  r|   r   c                 .    t        j                  | |      S r   )rz   iorr   s     r   rM   z*FunctionalOperatorImpl.bitwise_ior_usecase#  r|   r   c                 .    t        j                  | |      S r   )rz   xorr   s     r   rO   z*FunctionalOperatorImpl.bitwise_xor_usecase'  r|   r   c                 .    t        j                  | |      S r   )rz   ixorr   s     r   rQ   z+FunctionalOperatorImpl.bitwise_ixor_usecase+  r   r   c                 ,    t        j                  |       S r   rz   invertrS   s     r   rU   z1FunctionalOperatorImpl.bitwise_not_usecase_binary/      q!!r   c                 ,    t        j                  |       S r   r   rX   s    r   rY   z*FunctionalOperatorImpl.bitwise_not_usecase3  r   r   c                 ,    t        j                  |       S r   )rz   not_rX   s    r   r[   z"FunctionalOperatorImpl.not_usecase7  s    }}Qr   c                 ,    t        j                  |       S r   )rz   negrX   s    r   r]   z%FunctionalOperatorImpl.negate_usecase;      ||Ar   c                 ,    t        j                  |       S r   )rz   posrX   s    r   r_   z-FunctionalOperatorImpl.unary_positive_usecase?  r   r   c                 .    t        j                  | |      S r   )rz   ltr   s     r   ra   z!FunctionalOperatorImpl.lt_usecaseC      {{1a  r   c                 .    t        j                  | |      S r   )rz   ler   s     r   rc   z!FunctionalOperatorImpl.le_usecaseG  r   r   c                 .    t        j                  | |      S r   )rz   gtr   s     r   re   z!FunctionalOperatorImpl.gt_usecaseK  r   r   c                 .    t        j                  | |      S r   )rz   ger   s     r   rg   z!FunctionalOperatorImpl.ge_usecaseO  r   r   c                 .    t        j                  | |      S r   )rz   eqr   s     r   ri   z!FunctionalOperatorImpl.eq_usecaseS  r   r   c                 .    t        j                  | |      S r   )rz   ner   s     r   rk   z!FunctionalOperatorImpl.ne_usecaseW  r   r   c                 .    t        j                  ||       S r   rz   containsr   s     r   rm   z!FunctionalOperatorImpl.in_usecase[  r   r   c                 0    t        j                  ||        S r   r   r   s     r   rp   z%FunctionalOperatorImpl.not_in_usecase_  s    $$Q***r   c                 .    t        j                  | |      S r   )rz   is_r   s     r   rr   z!FunctionalOperatorImpl.is_usecasec  r|   r   N),rs   rt   ru   rv   r    r#   r&   r(   r*   r,   r.   r1   r4   r6   r8   r:   r   r=   r   r   r?   rA   rC   rE   rG   rI   rK   rM   rO   rQ   rU   rY   r[   r]   r_   ra   rc   re   rg   ri   rk   rm   rp   rr   r   r   r   rx   rx      s    " " # # " " # # " " # # ' ' ( ( & & ' ' " " # # " " # # % % & & % % & & % % & & # # # # " " " " " " # # " " " "         ! ! ! ! ! ! ! ! ! ! ! ! ' ' + + " "r   rx   c                      e Zd ZdZeZej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                   ej"                  dZefdZefdZd ZedfdZg dZej4                  ej6                  ej8                  ej:                  ej<                  ej>                  gZ ejB                  ejD                  gZ#efd	Z$d
 Z%efdZ&d Z'efdZ(d Z)efdZ*d Z+efdZ,d Z-efdZ.d Z/d Z0d Z1efdZ2efdZ3efdZ4efdZ5efdZ6d^dZ7 e7 e8       ddd d!d"        e7 e8       d#dd d!d"        e7 e8       d$dd%d&       edfd'Z9efd(Z:d) Z;efd*Z<d+ Z=efd,Z>d- Z?efd.Z@efd/ZA e7 e8       d0d1d2d&       efd3ZBd4 ZCefd5ZDd6 ZEefd7ZFd8 ZGefd9ZHd: ZIefd;ZJd< ZKd= ZLd> ZMd? ZNeOd@        ZPdA ZQdB ZRefdCZS e7 e8       dDdEdFi       efdGZT e7 e8       dHdEdIi       efdJZU e7 e8       dKdLdMdN       efdOZVdP ZWdQ ZXdR ZYdS ZZdT Z[dU Z\dV Z]dW Z^dX Z_efdYZ`dZ Zaefd[Zbd\ Zcy])_TestOperatorszw
    Test standard Python operators on scalars.

    NOTE: operators on array are generally tested in test_ufuncs.
    r?   rA   rC   rE   rG   rI   rK   rM   rO   rQ   rU   c                 v   |D ]  } t        |fi ||      }t        j                  ||      D ]  \  }}	t        j                  |      }
t        j                  |      } ||
|	      } |||	      }| j	                  ||d|d|	d|d|d|
       | j	                  |
|d|d|	d|d|
d|
         y )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_intszTestOperators.run_test_ints  s    #I+C	+U+F3E!))*jA1 		!!YYq\
E1o!*a0''aC; ( < '':aE:? ( @ B $r   c                 r   |D ]  } t        |fi ||      }t        j                  ||      D ]  \  }}	t        j                  |      }
t        j                  |      } ||
|	      } |||	      }t        j
                  j                  ||d       t        j
                  j                  |
|d         y )Ngh㈵>)rtol)r   r   r   r   nptestingassert_allcloser   s                 r   run_test_floatszTestOperators.run_test_floats  s    #I+C	+U+F3E!))*jA1 		!!YYq\
E1o!*a0

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

**5*4*H B $r   c                 <   t        |d      r|j                  |      S |t        j                  v rt	        t        |j                              S |t        j                  v rt        |j                        S |t        j                  v rt        |j                        S |S )Ndtype)
hasattrcast_python_valuer   unsigned_domainabsintrealinteger_domainreal_domainfloat)r   op
numba_types      r   coerce_operandzTestOperators.coerce_operand  s{    2w//335000s277|$$5///rww<5,,,>!Ir   Tc                    | j                   }| j                  }|s|| j                  z   }|D ]  } t        ||ffi ||      }t	        j
                  ||      D ]|  \  }}	| j                  ||      }| j                  |	|      }	 |||	      }
 |||	      }| j                  t        |      t        |
             | j                  ||
d|d|d|	d       ~  y )Nzmismatch with z (r   ))
compare_scalar_operandscompare_typescompare_unordered_typesr   r   r   r  assertIstypeassertEqual)r   r   r   orderedopsr   typr   r   r   r   r   s               r   run_test_scalar_comparez%TestOperators.run_test_scalar_compare  s    **''
#d&B&BBJC,Cc
,e,V4E!))#s31''3/''3/!!Q<Aqkd3ih8  h$'A"/0 4 r   )g      y            ?y             @y            ?      ?c                 P    | j                  | j                  j                  |       y r   )r  r   ra   r   r   s     r   test_lt_scalarzTestOperators.test_lt_scalar      $$TWW%7%7?r   c                 0    | j                  t               y Nr   )r  Noflagsr   s    r   test_lt_scalar_npmz TestOperators.test_lt_scalar_npm      '*r   c                 P    | j                  | j                  j                  |       y r   )r  r   rc   r  s     r   test_le_scalarzTestOperators.test_le_scalar  r  r   c                 0    | j                  t               y r  )r  r  r  s    r   test_le_scalar_npmz TestOperators.test_le_scalar_npm  r  r   c                 P    | j                  | j                  j                  |       y r   )r  r   re   r  s     r   test_gt_scalarzTestOperators.test_gt_scalar  r  r   c                 0    | j                  t               y r  )r   r  r  s    r   test_gt_scalar_npmz TestOperators.test_gt_scalar_npm  r  r   c                 P    | j                  | j                  j                  |       y r   )r  r   rg   r  s     r   test_ge_scalarzTestOperators.test_ge_scalar  r  r   c                 0    | j                  t               y r  )r$  r  r  s    r   test_ge_scalar_npmz TestOperators.test_ge_scalar_npm  r  r   c                 T    | j                  | j                  j                  |d       y NF)r  )r  r   ri   r  s     r   test_eq_scalarzTestOperators.test_eq_scalar  !    $$TWW%7%7$Nr   c                 0    | j                  t               y r  )r)  r  r  s    r   test_eq_scalar_npmz TestOperators.test_eq_scalar_npm  r  r   c                 T    | j                  | j                  j                  |d       y r(  )r  r   rk   r  s     r   test_ne_scalarzTestOperators.test_ne_scalar  r*  r   c                 0    | j                  t               y r  )r.  r  r  s    r   test_ne_scalar_npmz TestOperators.test_ne_scalar_npm  r  r   c                      t        t        j                  t        j                  f      | j                  j                        }| j                   |t        t                     y r   )r   r   ellipsisr   rr   
assertTrueEllipsis)r   r   s     r   test_is_ellipsiszTestOperators.test_is_ellipsis  s=    6ennenn56tww7I7IJh12r   c                     t        t        j                  t        j                  fd      | j                  j                        t        d      fd       }| j                   |dd             | j                   |dd             y )NTr   c                      | |      S r   r   )r   r   
cfunc_voids     r   r   z-TestOperators.test_is_void_ptr.<locals>.cfunc  s    a##r         )r   r   voidptrr   rr   r3  assertFalse)r   r   r9  s     @r   test_is_void_ptrzTestOperators.test_is_void_ptr  sv    
S]]EMM*T

''



 
d		$ 
	$ 	a$q!%r   c                     g d}g d}t         j                  t         j                  fg}| j                  |||||       y )NFFTT)FTFTr  )r   booleanr   r   r   r   r   r   r   s         r   run_binop_boolszTestOperators.run_binop_bools  s?    /
/
}}emm45
6:z:!& 	 	(r   c                    g d}g d}t         j                  t         j                  ft         j                  t         j                  fg}| j                  |||||       ddg}ddg}t         j                  t         j                  ft         j
                  t         j
                  ft         j                  t         j                  fg}| j                  |||||       y )N)r   r:  r;  )r:     r  r;  rH  r:  r   int32int64r   byteuint32uint64rB  s         r   run_binop_intszTestOperators.run_binop_ints  s    "
#
{{EKK0{{EKK02
 	6:z:!& 	 	( V
V
zz5::.||U\\2||U\\24
 	6:z:!& 	 	(r   c                     g d}g d}t         j                  t         j                  ft         j                  t         j                  fg}| j                  |||||       y )N)g        g?)g      g?g @r  r   float32float64r   rB  s         r   run_binop_floatszTestOperators.run_binop_floats"  sS    %
%
}}emm4}}emm46
 	VZZ#( 	 	*r   c                 *    | j                  ||       y r  )rU  )r   r   r   s      r   run_binop_floats_floordivz'TestOperators.run_binop_floats_floordiv,  s    fE2r   c                     g d}g d}t         j                  t         j                  ft         j                  t         j                  fg}| j                  |||||       y )N)y333333?y                y        ?)y      ffffffy        ?y @       r  )r   	complex64
complex128r   rB  s         r   run_binop_complexzTestOperators.run_binop_complex/  sW    4
4
8'')9)9:<
 	VZZ#( 	 	*r   Fc                    |D ]y  }|j                         D ]d  \  }}dD ]Z  }d|d|}|r|dz  }|rt        nt        }	d|z  }
||
|	fd|rd|v r|sfd}n}||_        |r t	        d	      |      }|| |<   \ f { y )
NFTtest___npmz
%s_usecasec                 Z    t        | |      }t        | j                  |      } |||       y r   )getattrr   )r   runner_nameusecase_namer   runner
op_usecases         r   innerz1TestOperators.generate_binop_tests.<locals>.innerC  s(    !({!;%,TWWl%C
z51r   arrayc                 ^    | j                         5           d d d        y # 1 sw Y   y xY wr   )assertTypingError)r   rg  s    r   	test_methz5TestOperators.generate_binop_tests.<locals>.test_methJ  s     !%!7!7!9 % ":!9!9s   #,	important)itemsr  force_pyobj_flagsrs   r
   )nsusecases
tp_runners	npm_arrayusecasetp_namerc  r   	test_namer   rd  rk  rg  s               @r   generate_binop_testsz"TestOperators.generate_binop_tests9  s    G(2(8(8(:$ -H07 AI!V+	'/G5FE#/'#9L0;+7u2  Gw$6y( %*	)2I&$4C$4Y$?	$-ByM3 !. );  r   )r{   r~   r   r   r   r   rO  rU  r[  )intsfloatscomplex)r   r   )r   r   r   r   rW  )rw  rx  c                    t        | j                  |      }t        j                  t        j                  t        j
                  g}|r|j                  t        j                         |D ]k  } t        ||ffi ||      }| j                  t              5 }	 |dd       d d d        |t        usG| j                  |t        	j                               m y # 1 sw Y   :xY w)Nr:  r   )rb  r   r   rJ  rM  rT  appendrZ  r   assertRaisesZeroDivisionErrorrn  assertInstr	exception)
r   rd  r   r   allow_complexr   r   tpr   cms
             r   check_div_errorszTestOperators.check_div_errorsm  s    ,/ [[%,,>	U--.B*CR*E*62E""#45a 6 --c3r||#45 55s   
CC!	c                 .    | j                  dd|d       y )Nr4   division by zeroT)r   r  r  r  s     r   test_truediv_errorsz!TestOperators.test_truediv_errors}  s     /1C5,0 	 	2r   c                 0    | j                  t               y r  )r  r  r  s    r   test_truediv_errors_npmz%TestOperators.test_truediv_errors_npm  s      w /r   c                 ,    | j                  dd|       y )Nr.   r  r  r  r  s     r   test_floordiv_errorsz"TestOperators.test_floordiv_errors  s    02DERr   c                 0    | j                  t               y r  )r  r  r  s    r   test_floordiv_errors_npmz&TestOperators.test_floordiv_errors_npm      !!!0r   c                 ,    | j                  dd|       y )Nr8   zmodulo by zeror  r  r  s     r   test_mod_errorszTestOperators.test_mod_errors  s    m-=UKr   c                 0    | j                  t               y r  )r  r  r  s    r   test_mod_errors_npmz!TestOperators.test_mod_errors_npm  s    7+r   c                    g d}g d}t         j                  t         j                  ft         j                  t         j                  fg}| j                  |||||       g d}g d}t         j                  t         j                  ft         j
                  t         j
                  ft         j                  t         j                  fg}| j                  |||||       y )NrG  r   r:  r;  r   r:  r;  r  rI  rB  s         r   run_pow_intszTestOperators.run_pow_ints  s    &

{{EKK0{{EKK02
 	6:z:!& 	 	( 

zz5::.||U\\2||U\\24
 	6:z:!& 	 	(r   c                 z   g d}g d}t         j                  t         j                  ft         j                  t         j                  fg}| j                  |||||       dg}g d}t         j                  t         j                  ft         j                  t         j                  fg}| j                  |||||       y )N)gvkgv[gv[@gvk@r  r  rQ  r  rR  rB  s         r   run_pow_floatszTestOperators.run_pow_floats  s    ;
&
}}emm4}}emm46
 	VZZ#( 	 	* U

}}emm4}}emm46
 	VZZ#( 	 	*r   )r   r   r  r  c                     | j                   j                  }g d}|}t        j                  t        j                  ft        j                  t        j                  fg}| j                  |||||       y )Ny      ?        y              ?y            r  )r   r    r   rY  rZ  r   r   r   r   r   r   r   s         r   test_add_complexzTestOperators.test_add_complex  sf    $$&

8'')9)9:=
 	VZZ#( 	 	*r   c                 0    | j                  t               y r  )r  r  r  s    r   test_add_complex_npmz"TestOperators.test_add_complex_npm      G,r   c                     | j                   j                  }g d}g d}t        j                  t        j                  ft        j                  t        j                  fg}| j                  |||||       y Nr  )r:  r;  rH  r  )r   r&   r   rY  rZ  r   r  s         r   test_sub_complexzTestOperators.test_sub_complex  f    $$&

8'')9)9:=
 	VZZ#( 	 	*r   c                 0    | j                  t               y r  )r  r  r  s    r   test_sub_complex_npmz"TestOperators.test_sub_complex_npm  r  r   c                     | j                   j                  }g d}g d}t        j                  t        j                  ft        j                  t        j                  fg}| j                  |||||       y r  )r   r*   r   rY  rZ  r   r  s         r   test_mul_complexzTestOperators.test_mul_complex  r  r   c                 0    | j                  t               y r  )r  r  r  s    r   test_mul_complex_npmz"TestOperators.test_mul_complex_npm  r  r   c                     | j                   j                  }g d}g d}t        j                  t        j                  ft        j                  t        j                  fg}| j                  |||||       y r  )r   r4   r   rY  rZ  r   r  s         r   test_truediv_complexz"TestOperators.test_truediv_complex  sf    ((&

8'')9)9:=
 	VZZ#( 	 	*r   c                 0    | j                  t               y r  )r  r  r  s    r   test_truediv_complex_npmz&TestOperators.test_truediv_complex_npm  r  r   c                    | j                   j                  } t        t        j                  t        j                  ffi ||      }| j                  t              5 } |dd       d d d        t        j                  dv rd}n.t        j                  dv rd}nt        t        j                        | j                  |t        j                               y # 1 sw Y   rxY w)Ny              @y               @))rH  	   zcan't mod complex numbers))rH  
   rH     )rH     z!unsupported operand type(s) for %)r   r8   r   r   rY  r|  	TypeErrorr   	PYVERSIONNotImplementedErrorr~  r  r  )r   r   r   cresraisesr   s         r   test_mod_complexzTestOperators.test_mod_complex  s    $$?sEOOU__5??Gy)VRL * ??i'-C__ ;;5C%eoo66c3v//01 *)s   
CC c                     | j                   j                  }| j                         5   t        t        j
                  t        j
                  f      |       d d d        y # 1 sw Y   y xY wr   )r   r8   rj  r   r   rY  )r   r   s     r   test_mod_complex_npmz"TestOperators.test_mod_complex_npm
  sE    $$##%4D%//5??34V< &%%s   0A  A)c                     t        di t        |      }t        d      }t        d      } |||      }| j                  |j                  d       |r| j                  ||       y | j                  ||       | j                  ||       y )NrH     r  r   )r   rn  r   r
  valuer  assertIsNot)r   r   inplacer   abr   s          r   check_matmul_objmodez"TestOperators.check_matmul_objmode  sy    ,,+,V4qMqMAqkB'MM#q!S!$S!$r   c                 R    | j                  | j                  j                  d       y )NFr  )r  r   r   r  s    r   test_matmulzTestOperators.test_matmul!  s    !!$''"8"8%!Hr   c                 R    | j                  | j                  j                  d       y )NTr  )r  r   r   r  s    r   test_imatmulzTestOperators.test_imatmul$  s    !!$''"9"94!Hr   c                 v   t        j                  t         j                  dd      } t        ||f      |      }t	        j                  ddg      }t	        j                  ddg      } |||      }| j                  |t	        j                  ||             | j                  ||       | j                  ||       y )Nr:  Cr;  rH  r  )r   ArrayrS  r   r   r   dotr  )r   r   arrtyr   r  r  r   s          r   check_matmul_npmzTestOperators.check_matmul_npm'  s    EMM1c2$eU^$V,JJ1vJJ1vAqkRVVAq\2a a r   c                 N    | j                  | j                  j                         y r   )r  r   r   r  s    r   test_matmul_npmzTestOperators.test_matmul_npm3  s    dgg445r   c                     | j                         5 }| j                  | j                  j                         d d d        y # 1 sw Y   y xY wr   )rj  r  r   r   )r   r  s     r   test_imatmul_npmzTestOperators.test_imatmul_npm6  s4    ##%!!$''"9"9: &%%s   &A  A	c                    ddg}g d}t         j                  t         j                  fg}| j                  |||||       ddg}g d}t         j                  t         j                  fg}| j                  |||||       ddg}g d}t         j                  t         j                  fg}| j                  |||||       ddg}g d}t         j
                  t         j
                  fg}| j                  |||||       y )Nr   r:  r   r:  r;  r           r  r   r:  r;  r  r  r      ?   rG  r   rM  r   rN  rJ  rK  rB  s         r   run_bitshift_leftzTestOperators.run_bitshift_left>  s   V
,
||U\\23
6:z:!& 	 	( V
0
||U\\23
6:z:!& 	 	( W
,
{{EKK01
6:z:!& 	 	( W
0
{{EKK01
6:z:!& 	 	(r   )bitshift_leftbitshift_ileftrw  r  c                    g d}g d}t         j                  t         j                  fg}| j                  |||||       g d}g d}t         j                  t         j                  fg}| j                  |||||       g d}g d}t         j                  t         j                  fg}| j                  |||||       g d}g d}t         j
                  t         j
                  fg}| j                  |||||       y )N)r   r:      r  r  )r   r:      r  )r   r:     )r   rG  r  r  rB  s         r   run_bitshift_rightz TestOperators.run_bitshift_rightd  s    &
,
||U\\23
6:z:!& 	 	( '
0
||U\\23
6:z:!& 	 	( &
,
{{EKK01
6:z:!& 	 	( '
0
{{EKK01
6:z:!& 	 	(r   )bitshift_rightbitshift_irightr  c                 T   t        t        dd            dgz   }t        t        dd            dgz   }t        j                  t        j                  fg}| j	                  |||||       t        t        dd            dgz   }t        t        dd            dgz   }t        j
                  t        j
                  fg}| j	                  |||||       t        t        dd            dd	gz   }t        t        dd            dd	gz   }t        j                  t        j                  fg}| j	                  |||||       t        t        dd            d
dgz   }t        t        dd            d
dgz   }t        j                  t        j                  fg}| j	                  |||||       y )Nr   r  r  r  r  r  r               )listranger   rM  r   rN  rJ  rK  rB  s         r   run_logicalzTestOperators.run_logical  s   %1+&)4
%1+&)4
||U\\23
6:z:!& 	 	( %1+&)4
%1+&)4
||U\\23
6:z:!& 	 	( %A,'8Y*??
%A,'8Y*??
{{EKK01
6:z:!& 	 	( %A,'8Y*??
%A,'8Y*??
{{EKK01
6:z:!& 	 	(r   )bitwise_andbitwise_iand
bitwise_orbitwise_iorbitwise_xorbitwise_ixorr  rC  )rw  boolsc                 n   | j                   j                  }t        t        dd            dgz   }|D cg c]  }t	        j
                  |       }}dg}t        j
                  t        j
                  fg}| j                  |||||       t        t        dd            ddgz   }dg}t        j                  t        j                  fg}| j                  |||||       t        t        dd            d	gz   }|D cg c]  }t	        j                  |       }}dg}t        j                  t        j                  fg}| j                  |||||       t        t        dd            d
dgz   }dg}t        j                  t        j                  fg}| j                  |||||       g d}t        t        t        j                  |            }| j                   j                  } t        t        j                  ffi ||      }|D ]   }	| j!                   ||	       ||	             " y c c}w c c}w )Nr   r  r  r  r  r  r  r  r  r  r  r@  )r   rU   r  r  r   rM  r   r   rJ  rN  rK  mapbool_rY   r   rA  r   )
r   r   r   r   r   r   r   valuesr   vals
             r   test_bitwise_notzTestOperators.test_bitwise_not  s   33%1+&)4
,67JqbiilJ
7S
||U\\23
6:z:!& 	 	( %A,'8Y*??
S
{{EKK01
6:z:!& 	 	( %1+&)4
,67JqbiilJ
7S
||U\\23
6:z:!& 	 	( %A,'8Y*??
S
{{EKK01
6:z:!& 	 	(
 ,c"((F+,,,.U]]$..v6C##F3Ks< Q 8" 8s   H-=H2c                 0    | j                  t               y r  )r  r  r  s    r   test_bitwise_not_npmz"TestOperators.test_bitwise_not_npm  r  r   c                       fd}g d}|D ]N  }t         j                  |      } ||t        j                  t        j                  f j                  |          P y)zI
        Make sure that bitwise float operations are not allowed
        c                 v   dj                  |       }j                  t        j                  |      5 } t	        |      |        d d d        t
        dz   }|j                  t        |t              r|ndj                  |            }j                  |t        j                               y # 1 sw Y   jxY w)Nz'expecting TypingError when compiling {}r   z {}zFunction({}))
formatr|  r   TypingErrorr   r   
isinstancer  r~  r  )r   argtypesopnamer   r  fmt	expectingr   s          r   assert_reject_compilez?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   B//B8r   )r  N)rb  r   r   rS  _bitwise_opnames)r   r	  methodsnamer   s   `    r   test_bitwise_floatz TestOperators.test_bitwise_float  sS    		<
 DTWWd+F!&5==%--*H)-)>)>t)DF r   c                     | j                   j                  }g d} t        di t        |      }|D ]   }| j	                   ||       ||             " y )Nr:  r;  rH  333333?        333333@r  )r   r[   r   rn  r
  r   r   r  r   r  s        r   test_notzTestOperators.test_not  sQ    $$
 -,+,V4CVC[%*5 r   c                    | j                   j                  }t        j                  t        j                  t        j
                  t        j                  t        j                  g}g d}t        ||      D ]l  \  }} t        |f      |      }| j                  |j                  d   j                  t        j                         | j                   ||       ||             n y )Nr  r   )r   r[   r   int8rJ  rK  rS  rZ  zipr   r
  nopython_signaturesreturn_typerA  r   r   argtysr  tyr  r   s          r   test_not_npmzTestOperators.test_not_npm  s    $$ JJKKKKMM

 66*GBD"K'EU66q9EE"]],VC[%*5	 +r   c                    | j                   j                  }t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  g}g d}t        ||      D ]5  \  }} t        |f      |      }| j                   ||       ||             7 y N)r:  r;  rH  r  g333333@r  TF)r   r]   r   r  rJ  rK  rS  rT  rZ  rA  r  r   assertAlmostEqualr  s          r   test_negate_npmzTestOperators.test_negate_npm3  s    '' JJKKKKMMMMMMMM	
	
 66*GBD"K'E""6#;c
; +r   c                     | j                   j                  }g d} t        di t        |      }|D ]   }| j	                   ||       ||             " y N)r:  r;  rH  r  r  TFr  )r   r]   r   rn  r
  r  s        r   test_negatezTestOperators.test_negateO  sQ    ''
 -,+,V4CVC[%*5 r   c                    | j                   j                  }t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  g}g d}t        ||      D ]5  \  }} t        |f      |      }| j                   ||       ||             7 y r  )r   r_   r   r  rJ  rK  rS  rT  rZ  rA  r  r   r  r  s          r   test_unary_positive_npmz%TestOperators.test_unary_positive_npm^  s    // JJKKKKMMMMMMMM	
	
 66*GBD"K'E""6#;c
; +r   c                     | j                   j                  }g d} t        di t        |      }|D ]   }| j	                   ||       ||             " y r"  )r   r_   r   rn  r
  r  s        r   test_unary_positivez!TestOperators.test_unary_positivey  sQ    //
 -,+,V4CVC[%*5 r   c                     t         j                  } t        |t        j                  |d      ffi ||      }dD ]$  }d}| j	                   |||       |||             & y )NrH  )rH  r        *   )rH  r+  r)  )r   rK  r   UniTupler   )r   r   r   r   r   itups          r   	_check_inzTestOperators._check_in  s\    ?UENN5!45??G!AC##F1cNE!SMB "r   c                 P    | j                  | j                  j                  |       y r   )r/  r   rm   r  s     r   test_inzTestOperators.test_in  s    tww))51r   c                 0    | j                  t               y r  )r1  r  r  s    r   test_in_npmzTestOperators.test_in_npm  s    7#r   c                 P    | j                  | j                  j                  |       y r   )r/  r   rp   r  s     r   test_not_inzTestOperators.test_not_in  s    tww--u5r   c                 0    | j                  t               y r  )r5  r  r  s    r   test_not_in_npmzTestOperators.test_not_in_npm  s    w'r   N)F)drs   rt   ru   __doc__r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r
  rn  r   r   r  r  r  r   rJ  rK  rM  rN  rS  rT  r  rY  rZ  r  r  r  r  r  r   r"  r$  r&  r)  r,  r.  r0  r5  r>  rC  rO  rU  rW  r[  rv  localsr  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  r3  r5  r7  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                      e Zd ZeZej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                   dZy)TestOperatorModuler   N)rs   rt   ru   rx   r   rz   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                      e Zd ZdZeZg dZej                  ej                  ej                  ej                  gZeD  cg c]  }|j                  s| c}} ZeD  cg c]  }|j                  r| c}} Z e ej$                  ee            ZeD  cg c]!  \  }}|j                  s|j                  r||f# c}}} ZeD  cg c]!  \  }}|j                  s|j                  s||f# c}}} Zd Zd Zd Zd Zd Zd Zed	 fd
ZefdZed fdZd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/yc c}} w c c}} w c c}}} w c c}}} w )TestMixedIntsz<
    Tests for operator calls with mixed integer types.
    )r   r:  rH  r  r+     i'  rG  rF  iiiic                     t        j                  |j                        }|j                  |cxk  xr |j                  k  S c S r   )r   iinfokeyminmax)r   r  r  tp_infos       r   int_in_dtype_rangez TestMixedInts.int_in_dtype_range  s2    ((266"{{c0W[[0000r   c                     t        d |D              }t        |t        j                  j                        }t	        t
        d|z        S )Nc              3   N   K   | ]  }|j                   j                  d z    ywr  Nr   itemsize.0vs     r   	<genexpr>z8TestMixedInts.get_numpy_signed_upcast.<locals>.<genexpr>        :Tqww''!+T   #%zint%drC  r   intpbitwidthrb  r   r   valsrS  s      r   get_numpy_signed_upcastz%TestMixedInts.get_numpy_signed_upcast  s:    :T::x!4!45r7X-..r   c                     t        d |D              }t        |t        j                  j                        }t	        t
        d|z        S )Nc              3   N   K   | ]  }|j                   j                  d z    ywrH  rI  rK  s     r   rN  z:TestMixedInts.get_numpy_unsigned_upcast.<locals>.<genexpr>  rO  rP  zuint%drQ  rT  s      r   get_numpy_unsigned_upcastz'TestMixedInts.get_numpy_unsigned_upcast  s:    :T::x!4!45r8h.//r   c                 B     t        t        |j                        |      S r   )rb  r   r  )r   r  r  s      r   get_typed_intzTestMixedInts.get_typed_int  s    $wr388$S))r   c                 6     t        t        |       fd}|S )Nc                 R    j                  | |      }  ||        ||            S r   rV  r  r  r  r   r   s      r   control_signedz8TestMixedInts.get_control_signed.<locals>.control_signed  s*    --a3BbeRU##r   rb  rz   )r   r  r`  r   s   `  @r   get_control_signedz TestMixedInts.get_control_signed  s    Xv&	$ r   c                 6     t        t        |       fd}|S )Nc                 R    j                  | |      }  ||        ||            S r   rY  r_  s      r   control_unsignedz<TestMixedInts.get_control_unsigned.<locals>.control_unsigned  s*    //15BbeRU##r   ra  )r   r  rf  r   s   `  @r   get_control_unsignedz"TestMixedInts.get_control_unsigned  s    Xv&	$  r   c                     | S r   r   rX   s    r   <lambda>zTestMixedInts.<lambda>  s    1r   c           	         |D ]  \  }}	 t        ||	f      |      }
t        j                  ||      D ]  \  }}| j                  ||      r| j                  ||	      s+| j	                  ||      }| j	                  |	|      } |||      } |
||      }| j                  ||       d|d|d||	f} ||       ||      }} | j                  ||fd|i|   y )Nr   r   r   r   )r   r   r   rE  r[  assertIsInstancer   )r   r   control_funcoperandsr   expected_type
force_typeassertPreciseEqualArgsxtytr   r   r   r   r   r   s                   r   
run_binaryzTestMixedInts.run_binary  s     FB"D"bN6*E!))(H=1..q"5T=T=TUVXZ=[&&r1-&&r1-'1-Aqk%%c=9QR* *3H1EX'''X B3 B*@B > r   c                    |D ]  } t        |f      |      }|D ]i  }| j                  ||      s| j                  ||      } ||      }	 ||      }
| j                  |
|       | j	                  |
|	d|d|d|
d|	       k  y )Nzmismatch for z with type r   r   r   )r   rE  r[  rk  r   )r   r   rl  rm  r   rn  rq  r   r   r   r   s              r   	run_unaryzTestMixedInts.run_unary  s    BD"K'E..q"5&&r1-'?Ah%%c=9''b#x1 ( 2  r   c                     | S r   r   rX   s    r   ri  zTestMixedInts.<lambda>  s    r   c                      | j                   || j                  |      || j                  |fd|i|  | j                   || j                  |      || j                  |fd|i| y )Nro  )rs  rb  signed_pairsrg  unsigned_pairs)r   r   r  samplesrn  ro  rp  s          r   run_arith_binopzTestMixedInts.run_arith_binop  s~     	 7 7 ?!2!2M	2#-	2 1	2 	 9 9& A!4!4m	2#-	2 1	2r   c                 f    | j                  | j                  j                  d| j                         y )Nr{   )r{  r   r    int_samplesr  s    r   test_addzTestMixedInts.test_add  $    TWW00%9I9IJr   c                 f    | j                  | j                  j                  d| j                         y )Nr   )r{  r   r&   r}  r  s    r   test_subzTestMixedInts.test_sub  r  r   c                 f    | j                  | j                  j                  d| j                         y )Nr   )r{  r   r*   r}  r  s    r   test_mulzTestMixedInts.test_mul  r  r   c                     | j                   D cg c]
  }|dk7  s	| }}| j                  | j                  j                  d|       y c c}w )Nr   r   )r}  r{  r   r.   r   r   rz  s      r   test_floordivzTestMixedInts.test_floordiv  sE    "..9.!q&1.9TWW55z7K :
   
AAc                     | j                   D cg c]
  }|dk7  s	| }}| j                  | j                  j                  d|       y c c}w )Nr   r   )r}  r{  r   r8   r  s      r   test_modzTestMixedInts.test_mod  sE    "..9.!q&1.9TWW00%A :r  c                     i }t         j                  dk(  r	t        |d<    j                  j                  } j
                  D cg c]
  }|dk\  s	| }}  j                  |d|fi |  fd} j
                  D cg c]
  }|dk7  s	| }} j                  D cg c]!  \  }}|j                  r|j                  r||f# }}}  j                  ||||fi | y c c}w c c}w c c}}w )Nr  ro  r   r   c                     j                  | |      }|dk\  r ||        ||      z  S  ||        ||       z  }|dk(  ryt        j                  d|z        S )Nr   g      ?)rV  r   rR  )r  r  r  invr   s       r   r`  z.TestMixedInts.test_pow.<locals>.control_signed-  s^    --a3BAv!u1~%er1"vo!8wwsSy))r   )
r   r  r   r   r   r}  r{  
type_pairssignedrs  )	r   
extra_castr   r   rz  r`  urM  rx  s	   `        r   test_powzTestMixedInts.test_pow"  s    
??g%',J|$$$ #..9.!q&1.9VUGBzB		* #..9.!q&1.9+/?? 2?41a88 A? 2	=1;	=# : :2s   
CC=
C"C"&C'c                    d }| j                   D cg c]
  }|dk7  s	| }}| j                  j                  }| j                  |||| j                  t
        d       | j                  |||| j                  t
        d       y c c}w )Nc                 0    t        |       t        |      z  S r   )r   r  r  s     r   controlz+TestMixedInts.test_truediv.<locals>.control?  s    8eAh&&r   r   double)rn  prec)r}  r   r4   rs  rx  r   ry  )r   r  r   rz  r   s        r   test_truedivzTestMixedInts.test_truediv=  s    	'"..9.!q&1.9((
 	$2C2C&+( 	 	<$2E2E&+( 	 	< :s
   
BBc                 f    | j                  | j                  j                  d| j                         y )Nr   )r{  r   rG   r}  r  s    r   test_andzTestMixedInts.test_andL  s$    TWW88&$BRBRSr   c                 f    | j                  | j                  j                  d| j                         y )Nr   )r{  r   rK   r}  r  s    r   test_orzTestMixedInts.test_orO  s$    TWW77@P@PQr   c                 f    | j                  | j                  j                  d| j                         y )Nr   )r{  r   rO   r}  r  s    r   test_xorzTestMixedInts.test_xorR  s$    TWW88%AQAQRr   c                     t        t        |       fd} fd} j                   fd} j                  D cg c]  \  }}|j                  r||f }}} j                  D cg c]  \  }}|j                  s||f }	}}|D ]  \  }
} ||
||        |	D ]  \  }
} ||
||        y c c}}w c c}}w )Nc                 R    j                  | |      }  ||        ||            S r   r^  r  r  r  opfuncr   s      r   r`  z5TestMixedInts.run_shift_binop.<locals>.control_signedW  s*    --a3B"Q%A''r   c                 R    j                  | |      }  ||        ||            S r   re  r  s      r   rf  z7TestMixedInts.run_shift_binop.<locals>.control_unsignedZ  s*    //15B"Q%A''r   c           	      p    t        | |f      
      }D ]  }| j                  dz
  }dddd|dz
  |fD ]~  }j                  ||       rj                  ||      s(j                  | |      }j                  ||      } |||      } |||      }d|d|d| |f}	j	                  |||	         y )	Nr:  r   rH  r)  r   r   r   r   )r   rS  rE  r[  r   )rq  rr  rl  r   r   maxshiftr   r   r   r   r   rz  r   s             r   checkz,TestMixedInts.run_shift_binop.<locals>.check`  s    "D"bN6*E ;;?Q1hlH=A221b9AXAXYZ\^A_ **2q1A**2q1A+Aq1H1+CRH.C++Cs+C >	 r   )rb  rz   r}  r  r  )r   r   r  r`  rf  r  r  rM  rx  ry  rq  rr  r  rz  s   ``          @@r   run_shift_binopzTestMixedInts.run_shift_binopU  s    6*	(	( ""	D( ,0?? %?41a88 A? %-1__ +_TQ!" a&_ + #FB"b.) #$FB"b*+ %%+s   B5/B;c                 P    | j                  | j                  j                  d       y )Nr   )r  r   r?   r  s    r   test_lshiftzTestMixedInts.test_lshift~  s    TWW::HEr   c                 P    | j                  | j                  j                  d       y )Nr   )r  r   rC   r  s    r   test_rshiftzTestMixedInts.test_rshift  s    TWW;;XFr   c                     d }| j                   }| j                  j                  }| j                  |||| j                         y )Nc                     | S r   r   )r  s    r   r  z2TestMixedInts.test_unary_positive.<locals>.control  s    Hr   )r}  r   r_   ru  	int_types)r   r  rz  r   s       r   r'  z!TestMixedInts.test_unary_positive  s7    	""//vw@r   c                       fd} fd} j                   } j                  j                  } j                  ||| j                          j                  ||| j
                         y )Nc                 8    j                  |       } ||        S r   r^  r  r  r   s     r   r`  z9TestMixedInts.test_unary_negative.<locals>.control_signed      --a0Bqb6Mr   c                 8    j                  |       } ||        S r   re  r  s     r   rf  z;TestMixedInts.test_unary_negative.<locals>.control_unsigned      //2Bqb6Mr   )r}  r   r]   ru  signed_typesunsigned_typesr   r`  rf  rz  r   s   `    r   test_unary_negativez!TestMixedInts.test_unary_negative  sZ    		 ""''v~w8I8IJv/$:M:MNr   c                       fd} fd} j                   } j                  j                  } j                  ||| j                          j                  ||| j
                         y )Nc                 8    j                  |       } ||        S r   r^  r  s     r   r`  z1TestMixedInts.test_invert.<locals>.control_signed  r  r   c                 8    j                  |       } ||        S r   re  r  s     r   rf  z3TestMixedInts.test_invert.<locals>.control_unsigned  r  r   )r}  r   rY   ru  r  r  r  s   `    r   test_invertzTestMixedInts.test_invert  sZ    		 "",,v~w8I8IJv/$:M:MNr   N)0rs   rt   ru   r8  r   r   r}  r   r  uint8rK  rN  r  r  r  r  r  r   r   r  rx  ry  rE  rV  rY  r[  rb  rg  r   rs  ru  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r'  r  r  )rL  r  r  rM  s   0000r   r=  r=    s    
BOKU[[%++u||DI!*82biiB8L#,>9RBIIb9>N'i''	9=>J'1 -ztq!xx188 Fz -L)3 5Ahh!(( !f 5N1/
0
*  "%B, !$2" '*k
2KKKLB=6<TRS',RFGAOOA 9>-5s$    E
E
E1E&E	&Er=  c                       e Zd ZeZy)TestMixedIntsOperatorModuleN)rs   rt   ru   rx   r   r   r   r   r  r    s    	Br   r  c                   "    e Zd ZdZd Zd Zd Zy)TestStaticPowerz`
    Test the ** operator with a static exponent, to exercise a
    dedicated optimization.
    c           	      n   |D ]n  }t         j                  }t        |      } t        d      |      } t        d      |      }|D ](  }	  |||      }	 ||      }
| j	                  |	|
d       * p y # t
        $ r6 | j                  t
              5   ||       d d d        n# 1 sw Y   nxY wY lw xY w)NTr7  r  )r  )r   r   r   r   r   r}  r|  )r   	exponentsr  r   regular_funcstatic_funcstatic_cfuncregular_cfuncrM  r   r   s              r   
_check_powzTestStaticPower._check_pow  s    C.::L+C0K-3-k:L.C.|<MJ,Q4H
 'q/C++Hc+I   ) (**+<=$Q >==(s*   	A55B4	B%		B4%B.*B43B4c           	          g d}dddddt        j                  d      t        j                  d      g}| j                  ||       y )	N)	r:  r;  rH  r)     r   rG  r  rF  r   r:  rH  rG  r  rF  r  )r   r  uint16r  r   r  rU  s      r   test_int_valueszTestStaticPower.test_int_values  s9    3	1aRbiil;	4(r   c                     g d}dddt        j                  d      t        d      t        d      g}| j                  ||       y )N)r:  r;  rH  r)  r  r   rG  r  rF  i ir  g      
@g      g       infnan)r   rS  r   r  r  s      r   test_real_valuesz TestStaticPower.test_real_values  s8    H	T5"**T"2E%L%,O	4(r   N)rs   rt   ru   r8  r  r  r  r   r   r   r  r    s    
J$))r   r  c                       e Zd ZdZd Zd Zy)TestStringConstComparisonz-
    Test comparison of string constants
    c                     d }d } t        d      |      } t        d      |      }| j                   |        |              | j                   |        |              y )Nc                      d} | dk(  S Ntestr   ss    r   
test_impl1z5TestStringConstComparison.test_eq.<locals>.test_impl1      A;r   c                      d} | dk(  S Ntest1r  r   r  s    r   
test_impl2z5TestStringConstComparison.test_eq.<locals>.test_impl2      A;r   Tr7  r   r
  r   r  r  cfunc1cfunc2s        r   test_eqz!TestStringConstComparison.test_eq  X    		 $d#J/#d#J/vx0vx0r   c                     d }d } t        d      |      } t        d      |      }| j                   |        |              | j                   |        |              y )Nc                      d} | dk7  S r  r   r  s    r   r  z6TestStringConstComparison.test_neq.<locals>.test_impl1  r  r   c                      d} | dk7  S r  r   r  s    r   r  z6TestStringConstComparison.test_neq.<locals>.test_impl2  r  r   Tr7  r  r  s        r   test_neqz"TestStringConstComparison.test_neq  r  r   N)rs   rt   ru   r8  r  r  r   r   r   r  r    s    11r   r  c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	TestBooleanLiteralOperatorsz/
    Test operators with Boolean constants
    c                   	
 	fd}
fd}d }t        j                  ddgd      D ]5  \  	} t        d      |      }| j                   ||       ||             7 t        j                  ddgd      D ]5  \  }
 t        d      |      }| j                   ||       ||             7  t        d      |      }| j                   |        |              y )	Nc                     | k(  S r   r   r  a_vals    r   r  z7TestBooleanLiteralOperators.test_eq.<locals>.test_impl1      A:r   c                     | k(  S r   r   r  b_vals    r   r  z7TestBooleanLiteralOperators.test_eq.<locals>.test_impl2      :r   c                  6    ddk(  } ddk(  }ddk(  }ddk(  }| |||fS NTFr   r1r2r3r4s       r   
test_impl3z7TestBooleanLiteralOperators.test_eq.<locals>.test_impl3  5    BB$B%BB##r   TFr;  repeatr7  r   r   r   r
  r   r  r  r  r  r  r  r  cfunc3r  r  s            @@r   r  z#TestBooleanLiteralOperators.test_eq      			$ "))4-BHE1'S$'
3FZ]F1I6 C "))4-BHAu'S$'
3FZ]F1I6 C $d#J/vx0r   c                   	
 	fd}
fd}d }t        j                  ddgd      D ]5  \  	} t        d      |      }| j                   ||       ||             7 t        j                  ddgd      D ]5  \  }
 t        d      |      }| j                   ||       ||             7  t        d      |      }| j                   |        |              y )	Nc                     | k7  S r   r   r  s    r   r  z7TestBooleanLiteralOperators.test_ne.<locals>.test_impl1  r  r   c                     | k7  S r   r   r  s    r   r  z7TestBooleanLiteralOperators.test_ne.<locals>.test_impl2  r  r   c                  6    ddk7  } ddk7  }ddk7  }ddk7  }| |||fS r  r   r  s       r   r  z7TestBooleanLiteralOperators.test_ne.<locals>.test_impl3  r  r   TFr;  r  r7  r  r  s            @@r   test_nez#TestBooleanLiteralOperators.test_ne  r  r   c                    fd}d }t        j                  ddgd      D ]5  \  } t        d      |      }| j                   ||       ||             7  t        d      |      }| j                   |        |              y )Nc                     | u S r   r   r  s    r   r  z7TestBooleanLiteralOperators.test_is.<locals>.test_impl1*  s    A:r   c                  .    ddu } ddu }ddu }ddu }| |||fS r  r   r  s       r   r  z7TestBooleanLiteralOperators.test_is.<locals>.test_impl2-  s5    BB$B%BB##r   TFr;  r  r7  r  )r   r  r  r  r  r  r  s         @r   test_isz#TestBooleanLiteralOperators.test_is(  s    		$ "))4-BHE1'S$'
3FZ]F1I6 C $d#J/vx0r   c                 f    d } t        d      |      }| j                   |        |              y )Nc                      d\  } }|  | fS Nr]  r   r  s     r   	test_implz7TestBooleanLiteralOperators.test_not.<locals>.test_impl=  s    DAqEq5>!r   Tr7  r  r   r  r   s      r   r  z$TestBooleanLiteralOperators.test_not;  s.    	" #T"9-eg.r   c                 f    d } t        d      |      }| j                   |        |              y )Nc                  8    d\  } }t        |       t        |      fS r  )boolr  s     r   r  z8TestBooleanLiteralOperators.test_bool.<locals>.test_implF  s    DAqGT!W%%r   Tr7  r  r  s      r   	test_boolz%TestBooleanLiteralOperators.test_boolD  s.    	& #T"9-eg.r   c                 f    d } t        d      |      }| j                   |        |              y )Nc                  8    d\  } }t        |       t        |      fS r  )r  r  s     r   r  z?TestBooleanLiteralOperators.test_bool_to_str.<locals>.test_implO  s    DAqFCF##r   Tr7  r  r  s      r   test_bool_to_strz,TestBooleanLiteralOperators.test_bool_to_strM  s.    	$ #T"9-eg.r   N)
rs   rt   ru   r8  r  r	  r  r  r  r  r   r   r   r  r    s%    14141&///r   r  __main__)&r   r   rz   unittestnumpyr   numbar   r   
numba.corer   r   r   numba.core.types.functionsr   numba.tests.supportr	   r
   r   numba.tests.matmul_usecaser   r   r   r  rn  r   objectr   rx   r   r;  r=  r  r  r  r  rs   mainr   r   r   <module>r$     s          + + 3 9 95 5 t
& h& hV`"V `"Fq(H q(h &uOH uOp -  
")h ")H1 1@d/( d/N zHMMO r   