
    J/Ph                        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j%                     dS dS )    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    Z/var/www/html/test/jupyter/venv/lib/python3.11/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+d'S )(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       1ur   c                     | |k    S r   r   r   s     r   
le_usecasezLiteralOperatorImpl.le_usecase       Avr   c                     | |k    S r   r   r   s     r   
gt_usecasezLiteralOperatorImpl.gt_usecase   rb   r   c                     | |k    S r   r   r   s     r   
ge_usecasezLiteralOperatorImpl.ge_usecase   re   r   c                     | |k    S r   r   r   s     r   
eq_usecasezLiteralOperatorImpl.eq_usecase   re   r   c                     | |k    S r   r   r   s     r   
ne_usecasezLiteralOperatorImpl.ne_usecase   re   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   rp   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   rd   rg   ri   rk   rm   ro   rr   rt   r   r   r   r   r      s:         \   \   \   \   \   \   \   \   \   \  8%n55&,7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+d)S )*FunctionalOperatorImplc                 ,    t          j        | |          S r   )operatoraddr   s     r   r    z"FunctionalOperatorImpl.add_usecase       |Aq!!!r   c                 ,    t          j        | |          S r   )r|   iaddr   s     r   r#   z#FunctionalOperatorImpl.iadd_usecase       }Q"""r   c                 ,    t          j        | |          S r   )r|   subr   s     r   r&   z"FunctionalOperatorImpl.sub_usecase   r~   r   c                 ,    t          j        | |          S r   )r|   isubr   s     r   r(   z#FunctionalOperatorImpl.isub_usecase   r   r   c                 ,    t          j        | |          S r   )r|   mulr   s     r   r*   z"FunctionalOperatorImpl.mul_usecase   r~   r   c                 ,    t          j        | |          S r   )r|   imulr   s     r   r,   z#FunctionalOperatorImpl.imul_usecase   r   r   c                 ,    t          j        | |          S r   )r|   floordivr   s     r   r.   z'FunctionalOperatorImpl.floordiv_usecase        A&&&r   c                 ,    t          j        | |          S r   )r|   	ifloordivr   s     r   r1   z(FunctionalOperatorImpl.ifloordiv_usecase   s    !!Q'''r   c                 ,    t          j        | |          S r   )r|   truedivr   s     r   r4   z&FunctionalOperatorImpl.truediv_usecase       1%%%r   c                 ,    t          j        | |          S r   )r|   itruedivr   s     r   r6   z'FunctionalOperatorImpl.itruediv_usecase   r   r   c                 ,    t          j        | |          S r   )r|   modr   s     r   r8   z"FunctionalOperatorImpl.mod_usecase   r~   r   c                 ,    t          j        | |          S r   )r|   imodr   s     r   r:   z#FunctionalOperatorImpl.imod_usecase   r   r   c                 ,    t          j        | |          S r   )r|   powr   s     r   r   z"FunctionalOperatorImpl.pow_usecase   r~   r   c                 ,    t          j        | |          S r   )r|   ipowr   s     r   r=   z#FunctionalOperatorImpl.ipow_usecase   r   r   c                 ,    t          j        | |          S r   )r|   matmulr   s     r   r   z%FunctionalOperatorImpl.matmul_usecase       q!$$$r   c                 ,    t          j        | |          S r   )r|   imatmulr   s     r   r   z&FunctionalOperatorImpl.imatmul_usecase  r   r   c                 ,    t          j        | |          S r   )r|   lshiftr   s     r   r?   z,FunctionalOperatorImpl.bitshift_left_usecase  r   r   c                 ,    t          j        | |          S r   )r|   ilshiftr   s     r   rA   z-FunctionalOperatorImpl.bitshift_ileft_usecase  r   r   c                 ,    t          j        | |          S r   )r|   rshiftr   s     r   rC   z-FunctionalOperatorImpl.bitshift_right_usecase  r   r   c                 ,    t          j        | |          S r   )r|   irshiftr   s     r   rE   z.FunctionalOperatorImpl.bitshift_iright_usecase  r   r   c                 ,    t          j        | |          S r   )r|   and_r   s     r   rG   z*FunctionalOperatorImpl.bitwise_and_usecase  r   r   c                 ,    t          j        | |          S r   )r|   iandr   s     r   rI   z+FunctionalOperatorImpl.bitwise_iand_usecase  r   r   c                 ,    t          j        | |          S r   )r|   or_r   s     r   rK   z)FunctionalOperatorImpl.bitwise_or_usecase  r~   r   c                 ,    t          j        | |          S r   )r|   iorr   s     r   rM   z*FunctionalOperatorImpl.bitwise_ior_usecase#  r~   r   c                 ,    t          j        | |          S r   )r|   xorr   s     r   rO   z*FunctionalOperatorImpl.bitwise_xor_usecase'  r~   r   c                 ,    t          j        | |          S r   )r|   ixorr   s     r   rQ   z+FunctionalOperatorImpl.bitwise_ixor_usecase+  r   r   c                 *    t          j        |           S r   r|   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   )r|   not_rX   s    r   r[   z"FunctionalOperatorImpl.not_usecase7  s    }Qr   c                 *    t          j        |           S r   )r|   negrX   s    r   r]   z%FunctionalOperatorImpl.negate_usecase;      |Ar   c                 *    t          j        |           S r   )r|   posrX   s    r   r_   z-FunctionalOperatorImpl.unary_positive_usecase?  r   r   c                 ,    t          j        | |          S r   )r|   ltr   s     r   ra   z!FunctionalOperatorImpl.lt_usecaseC      {1a   r   c                 ,    t          j        | |          S r   )r|   ler   s     r   rd   z!FunctionalOperatorImpl.le_usecaseG  r   r   c                 ,    t          j        | |          S r   )r|   gtr   s     r   rg   z!FunctionalOperatorImpl.gt_usecaseK  r   r   c                 ,    t          j        | |          S r   )r|   ger   s     r   ri   z!FunctionalOperatorImpl.ge_usecaseO  r   r   c                 ,    t          j        | |          S r   )r|   eqr   s     r   rk   z!FunctionalOperatorImpl.eq_usecaseS  r   r   c                 ,    t          j        | |          S r   )r|   ner   s     r   rm   z!FunctionalOperatorImpl.ne_usecaseW  r   r   c                 ,    t          j        ||           S r   r|   containsr   s     r   ro   z!FunctionalOperatorImpl.in_usecase[  r   r   c                 .    t          j        ||            S r   r   r   s     r   rr   z%FunctionalOperatorImpl.not_in_usecase_  s    $Q****r   c                 ,    t          j        | |          S r   )r|   is_r   s     r   rt   z!FunctionalOperatorImpl.is_usecasec  r~   r   N),ru   rv   rw   rx   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   rd   rg   ri   rk   rm   ro   rr   rt   r   r   r   rz   rz      sJ       " " \" # # \# " " \" # # \# " " \" # # \# ' ' \' ( ( \( & & \& ' ' \' " " \" # # \# " " \" # # \# % % \% & & \& % % \% & & \& % % \% & & \& # # \# # # \# " " \" " " \" " " \" # # \# " " \" " " \"     \    \   \ ! ! \! ! ! \! ! ! \! ! ! \! ! ! \! ! ! \! ' ' \' + + \+ " " \" " "r   rz   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j        ej        ej        ej        ej        ej        gZ ej!        ej"        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\ Zcd]S )_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                    |D ]} t          |fi ||          }t          j        ||          D ]\  }}	t          j        |          }
t          j        |          } ||
|	          } |||	          }|                     ||d|d|	d|d|d|
           |                     |
|d|d|	d|d|
d|
           d S )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  s9   # 	@ 	@I+C	++U++F33E!)*jAA @ @1 	!!Yq\\
eE1oo!6*a00''11aaaCCC; ( < < < ''::11aaaEEE::? ( @ @ @ @@	@ 	@r   c                 z   |D ]} t          |fi ||          }t          j        ||          D ]\  }}	t          j        |          }
t          j        |          } ||
|	          } |||	          }t          j                            ||d           t          j                            |
|d           d S )Ngh㈵>)rtol)r   r   r   r   nptestingassert_allcloser   s                 r   run_test_floatszTestOperators.run_test_floats  s    # 
	I 
	II+C	++U++F33E!)*jAA I I1 	!!Yq\\
eE1oo!6*a00
**3t*DDD
**5*4*HHHHI
	I 
	Ir   c                 6   t          |d          r|                    |          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35000s27||$$$5///rw<<5,,,>>!Ir   Tc                    | j         }| j        }|s
|| j        z   }|D ]} t          ||ffi ||          }t	          j        ||          D ]\  }}	|                     ||          }|                     |	|          }	 |||	          }
 |||	          }|                     t          |          t          |
                     | 	                    ||
d|d|d|	d           d S )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,   *'
 	C#d&BBJ 	0 	0C,Cc
,,e,,V44E!)#s33 	0 	01''3//''3//!6!Q<<eAqkkd3iih888  hh$'CCAAA"/0 0 0 0	0	0 	0r   )g      y            ?y             @y            ?      ?c                 F    |                      | j        j        |           d S r   )r  r  ra   r   r   s     r   test_lt_scalarzTestOperators.test_lt_scalar  #    $$TW%7?????r   c                 <    |                      t                     d S Nr   )r  Noflagsr   s    r   test_lt_scalar_npmz TestOperators.test_lt_scalar_npm      '*****r   c                 F    |                      | j        j        |           d S r   )r  r  rd   r  s     r   test_le_scalarzTestOperators.test_le_scalar  r  r   c                 <    |                      t                     d S r  )r  r  r  s    r   test_le_scalar_npmz TestOperators.test_le_scalar_npm  r  r   c                 F    |                      | j        j        |           d S r   )r  r  rg   r  s     r   test_gt_scalarzTestOperators.test_gt_scalar  r  r   c                 <    |                      t                     d S r  )r"  r  r  s    r   test_gt_scalar_npmz TestOperators.test_gt_scalar_npm  r  r   c                 F    |                      | j        j        |           d S r   )r  r  ri   r  s     r   test_ge_scalarzTestOperators.test_ge_scalar  r  r   c                 <    |                      t                     d S r  )r&  r  r  s    r   test_ge_scalar_npmz TestOperators.test_ge_scalar_npm  r  r   c                 J    |                      | j        j        |d           d S NF)r  )r  r  rk   r  s     r   test_eq_scalarzTestOperators.test_eq_scalar  (    $$TW%7$NNNNNr   c                 <    |                      t                     d S r  )r+  r  r  s    r   test_eq_scalar_npmz TestOperators.test_eq_scalar_npm  r  r   c                 J    |                      | j        j        |d           d S r*  )r  r  rm   r  s     r   test_ne_scalarzTestOperators.test_ne_scalar  r,  r   c                 <    |                      t                     d S r  )r0  r  r  s    r   test_ne_scalar_npmz TestOperators.test_ne_scalar_npm  r  r   c                      t          t          j        t          j        f          | j        j                  }|                      |t          t                               d S r   )r   r   ellipsisr  rt   
assertTrueEllipsis)r   r   s     r   test_is_ellipsiszTestOperators.test_is_ellipsis  sK    6enen566tw7IJJh1122222r   c                 .    t          t          j        t          j        fd          | j        j                  t          d          fd            }|                      |dd                     |                      |dd                     d S )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  rt   r5  assertFalse)r   r   r;  s     @r   test_is_void_ptrzTestOperators.test_is_void_ptr  s    
S]EM*T
 
 

'
 

 
d				$ 	$ 	$ 	$ 
		$ 	a$$$q!%%%%%r   c                 |    g d}g d}t           j        t           j        fg}|                     |||||           d S )NFFTT)FTFTr  )r   booleanr   r   r   r   r   r   r   s         r   run_binop_boolszTestOperators.run_binop_bools  s[    ///
///
}em45
6:z:!& 	 	( 	( 	( 	( 	(r   c                 |   g d}g d}t           j        t           j        ft           j        t           j        fg}|                     |||||           ddg}ddg}t           j        t           j        ft           j        t           j        ft           j        t           j        fg}|                     |||||           d S )N)r   r<  r=  )r<     r  r=  rJ  r<  r   int32int64r   byteuint32uint64rD  s         r   run_binop_intszTestOperators.run_binop_ints  s    "]]
#^^
{EK0{EK02
 	6:z:!& 	 	( 	( 	( V
V
z5:.|U\2|U\24
 	6:z:!& 	 	( 	( 	( 	( 	(r   c                     g d}g d}t           j        t           j        ft           j        t           j        fg}|                     |||||           d S )N)g        g?)g      g?g @r  r   float32float64r   rD  s         r   run_binop_floatszTestOperators.run_binop_floats"  sk    %%%
%%%
}em4}em46
 	VZZ#( 	 	* 	* 	* 	* 	*r   c                 4    |                      ||           d S r  )rW  )r   r   r   s      r   run_binop_floats_floordivz'TestOperators.run_binop_floats_floordiv,  s!    fE22222r   c                     g d}g d}t           j        t           j        ft           j        t           j        fg}|                     |||||           d S )N)y333333?y                y        ?)y      ffffffy        ?y @       r  )r   	complex64
complex128r   rD  s         r   run_binop_complexzTestOperators.run_binop_complex/  sm    444
444
8')9:<
 	VZZ#( 	 	* 	* 	* 	* 	*r   Fc                    |D ]}|                                 D ]k\  }}dD ]c}d|d|}|r|dz  }|rt          nt          }	d|z  }
||
|	fd|rd|v r|sfd}n}||_        |r t	          d	          |          }|| |<   dld S )
NFTtest___npmz
%s_usecasec                 h    t          | |          }t          | j        |          } |||           d S r   )getattrr  )r   runner_nameusecase_namer   runner
op_usecases         r   innerz1TestOperators.generate_binop_tests.<locals>.innerC  s:    !({!;!;%,TWl%C%C
z511111r   arrayc                 v    |                                  5                d d d            d S # 1 swxY w Y   d S r   )assertTypingError)r   ri  s    r   	test_methz5TestOperators.generate_binop_tests.<locals>.test_methJ  s    !%!7!7!9!9 ( ( %( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   .22	important)itemsr  force_pyobj_flagsru   r
   )nsusecases
tp_runners	npm_arrayusecasetp_namere  r   	test_namer   rf  rm  ri  s               @r   generate_binop_testsz"TestOperators.generate_binop_tests9  s    	. 	.G(2(8(8(:(: . .$ - . .HH07 AI ,!V+	'/FGG5FE#/'#9L0;+7u2 2 2 2   *Gw$6$6y$6( ( ( ( ( ( %*	)2I& @$4C$4$4Y$?$?	$-ByMM3..	. 	.r   )r}   r   r   r   r   r   rQ  rW  r]  )intsfloatscomplex)r   r   )r   r   r   r   rY  )ry  rz  c                    t          | j        |          }t          j        t          j        t          j        g}|r|                    t          j                   |D ]} t          ||ffi ||          }| 	                    t                    5 }	 |dd           d d d            n# 1 swxY w Y   |t          ur(|                     |t          |	j                             d S )Nr<  r   )rd  r  r   rL  rO  rV  appendr\  r   assertRaisesZeroDivisionErrorrp  assertInstr	exception)
r   rf  r   r   allow_complexr   r   tpr   cms
             r   check_div_errorszTestOperators.check_div_errorsm  s%   ,// [%,>	 	/U-... 	6 	6B*CR**E**622E""#455 a               ---c3r|#4#4555	6 	6s   B))B-	0B-	c                 8    |                      dd|d           d S )Nr4   division by zeroT)r   r  r  r  s     r   test_truediv_errorsz!TestOperators.test_truediv_errors}  s4    /1C5,0 	 	2 	2 	2 	2 	2r   c                 <    |                      t                     d S r  )r  r  r  s    r   test_truediv_errors_npmz%TestOperators.test_truediv_errors_npm  s      w /////r   c                 6    |                      dd|           d S )Nr.   r  r  r  r  s     r   test_floordiv_errorsz"TestOperators.test_floordiv_errors  s%    02DERRRRRr   c                 <    |                      t                     d S r  )r  r  r  s    r   test_floordiv_errors_npmz&TestOperators.test_floordiv_errors_npm      !!!00000r   c                 6    |                      dd|           d S )Nr8   zmodulo by zeror  r  r  s     r   test_mod_errorszTestOperators.test_mod_errors  s$    m-=UKKKKKr   c                 <    |                      t                     d S 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}|                     |||||           g d}g d}t           j        t           j        ft           j        t           j        ft           j        t           j        fg}|                     |||||           d S )NrI  r   r<  r=  r   r<  r=  r  rK  rD  s         r   run_pow_intszTestOperators.run_pow_ints  s    &&&
YY
{EK0{EK02
 	6:z:!& 	 	( 	( 	( YY
YY
z5:.|U\2|U\24
 	6:z:!& 	 	( 	( 	( 	( 	(r   c                 L   g d}g d}t           j        t           j        ft           j        t           j        fg}|                     |||||           dg}g d}t           j        t           j        ft           j        t           j        fg}|                     |||||           d S )N)gvkgv[gv[@gvk@r  r  rS  r  rT  rD  s         r   run_pow_floatszTestOperators.run_pow_floats  s    ;;;
&&&
}em4}em46
 	VZZ#( 	 	* 	* 	* U
YY
}em4}em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}|                     |||||           d S )Ny      ?        y              ?y            r  )r  r    r   r[  r\  r   r   r   r   r   r   r   s         r   test_add_complexzTestOperators.test_add_complex  sq    $&&&

8')9:=
 	VZZ#( 	 	* 	* 	* 	* 	*r   c                 <    |                      t                     d S 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}|                     |||||           d S Nr  )r<  r=  rJ  r  )r  r&   r   r[  r\  r   r  s         r   test_sub_complexzTestOperators.test_sub_complex  u    $&&&
YY
8')9:=
 	VZZ#( 	 	* 	* 	* 	* 	*r   c                 <    |                      t                     d S 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}|                     |||||           d S r  )r  r*   r   r[  r\  r   r  s         r   test_mul_complexzTestOperators.test_mul_complex  r  r   c                 <    |                      t                     d S 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}|                     |||||           d S r  )r  r4   r   r[  r\  r   r  s         r   test_truediv_complexz"TestOperators.test_truediv_complex  su    (&&&
YY
8')9:=
 	VZZ#( 	 	* 	* 	* 	* 	*r   c                 <    |                      t                     d S 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 ||          }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   t          j        dv rd}nt          t          j                  | 
                    |t          |j                             d S )Ny              @y               @))rJ  
   rJ     )rJ     )rJ     z!unsupported operand type(s) for %)r  r8   r   r   r[  r~  	TypeErrorr   	PYVERSIONNotImplementedErrorr  r  r  )r   r   r   cresraisesr   s         r   test_mod_complexzTestOperators.test_mod_complex  s    $?sEOU_5????GGy)) 	VDRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ?BBB5CC%eo666c3v/0011111s   A,,A03A0c                     | j         j        }|                                 5   t          t          j        t          j        f          |           d d d            d S # 1 swxY w Y   d S r   )r  r8   rl  r   r   r[  )r   r   s     r   test_mod_complex_npmz"TestOperators.test_mod_complex_npm  s    $##%% 	= 	=4D%/5?344V<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   /AA!$A!c                 P    t          di t          |          }t          d          }t          d          } |||          }|                     |j        d           |r|                     ||           d S |                     ||           |                     ||           d S )Nr   rJ     r  r   )r   rp  r   r  valuer
  assertIsNot)r   r   inplacer   abr   s          r   check_matmul_objmodez"TestOperators.check_matmul_objmode  s    ,,,+,,V44qMMqMMeAqkkB''' 	%MM#q!!!!!S!$$$S!$$$$$r   c                 H    |                      | j        j        d           d S )NFr  )r  r  r   r  s    r   test_matmulzTestOperators.test_matmul  s&    !!$'"8%!HHHHHr   c                 H    |                      | j        j        d           d S )NTr  )r  r  r   r  s    r   test_imatmulzTestOperators.test_imatmul"  s&    !!$'"94!HHHHHr   c                    t          j        t           j        dd          } t          ||f          |          }t	          j        ddg          }t	          j        ddg          } |||          }|                     |t	          j        ||                     |                     ||           |                     ||           d S )Nr<  Cr=  rJ  r  )r   ArrayrU  r   r   r   dotr  )r   r   arrtyr   r  r  r   s          r   check_matmul_npmzTestOperators.check_matmul_npm%  s    EM1c22$eU^$$V,,J1vJ1veAqkkRVAq\\222a   a     r   c                 D    |                      | j        j                   d S r   )r  r  r   r  s    r   test_matmul_npmzTestOperators.test_matmul_npm1  s!    dg455555r   c                     |                                  5 }|                     | j        j                   d d d            d S # 1 swxY w Y   d S r   )rl  r  r  r   )r   r  s     r   test_imatmul_npmzTestOperators.test_imatmul_npm4  s    ##%% 	;!!$'"9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s    AA	Ac                    ddg}g d}t           j        t           j        fg}|                     |||||           ddg}g d}t           j        t           j        fg}|                     |||||           ddg}g d}t           j        t           j        fg}|                     |||||           ddg}g d}t           j        t           j        fg}|                     |||||           d S )Nr   r<  r   r<  r=  r           r  r   r<  r=  r  r  r      ?   rI  r   rO  r   rP  rL  rM  rD  s         r   run_bitshift_leftzTestOperators.run_bitshift_left<  sF   V
,,,
|U\23
6:z:!& 	 	( 	( 	( V
000
|U\23
6:z:!& 	 	( 	( 	( W
,,,
{EK01
6:z:!& 	 	( 	( 	( W
000
{EK01
6:z:!& 	 	( 	( 	( 	( 	(r   )bitshift_leftbitshift_ileftry  r  c                    g d}g d}t           j        t           j        fg}|                     |||||           g d}g d}t           j        t           j        fg}|                     |||||           g d}g d}t           j        t           j        fg}|                     |||||           g d}g d}t           j        t           j        fg}|                     |||||           d S )N)r   r<      r  r  )r   r<      r  )r   r<     )r   rI  r  r  rD  s         r   run_bitshift_rightz TestOperators.run_bitshift_rightb  sN   &&&
,,,
|U\23
6:z:!& 	 	( 	( 	( '&&
000
|U\23
6:z:!& 	 	( 	( 	( &%%
,,,
{EK01
6:z:!& 	 	( 	( 	( '&&
000
{EK01
6:z:!& 	 	( 	( 	( 	( 	(r   )bitshift_rightbitshift_irightr  c                    t          t          dd                    dgz   }t          t          dd                    dgz   }t          j        t          j        fg}|                     |||||           t          t          dd                    dgz   }t          t          dd                    dgz   }t          j        t          j        fg}|                     |||||           t          t          dd                    dd	gz   }t          t          dd                    dd	gz   }t          j        t          j        fg}|                     |||||           t          t          dd                    d
dgz   }t          t          dd                    d
dgz   }t          j        t          j        fg}|                     |||||           d S )Nr   r  r  r  r  r  r               )listranger   rO  r   rP  rL  rM  rD  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*??
{EK01
6:z:!& 	 	( 	( 	( %A,,''8Y*??
%A,,''8Y*??
{EK01
6:z:!& 	 	( 	( 	( 	( 	(r   )bitwise_andbitwise_iand
bitwise_orbitwise_iorbitwise_xorbitwise_ixorr  rE  )ry  boolsc                    | j         j        }t          t          dd                    dgz   }d |D             }dg}t          j        t          j        fg}|                     |||||           t          t          dd                    dd	gz   }dg}t          j        t          j        fg}|                     |||||           t          t          dd                    d
gz   }d |D             }dg}t          j        t          j        fg}|                     |||||           t          t          dd                    ddgz   }dg}t          j	        t          j	        fg}|                     |||||           g d}t          t          t          j        |                    }| j         j        } t          t          j        ffi ||          }|D ]*}|                      ||           ||                     +d S )Nr   r  r  c                 6    g | ]}t          j        |          S r   )r   rO  .0r   s     r   
<listcomp>z2TestOperators.test_bitwise_not.<locals>.<listcomp>       777qbill777r   r  r  r  r  r  r  c                 6    g | ]}t          j        |          S r   )r   rP  r  s     r   r  z2TestOperators.test_bitwise_not.<locals>.<listcomp>  r  r   r  r  rB  )r  rU   r  r  r   rO  r   rL  rP  rM  mapr   bool_rY   r   rC  r   )	r   r   r   r   r   r   valuesr   vals	            r   test_bitwise_notzTestOperators.test_bitwise_not  sD   3%1++&&)4
77J777
S
|U\23
6:z:!& 	 	( 	( 	( %A,,''8Y*??
S
{EK01
6:z:!& 	 	( 	( 	( %1++&&)4
77J777
S
|U\23
6:z:!& 	 	( 	( 	( %A,,''8Y*??
S
{EK01
6:z:!& 	 	( 	( 	(
 ,++c"(F++,,,.U]$....v66 	= 	=C##FF3KKs<<<<	= 	=r   c                 <    |                      t                     d S r  )r  r  r  s    r   test_bitwise_not_npmz"TestOperators.test_bitwise_not_npm  r  r   c                       fd}g d}|D ]F}t           j        |          } ||t          j        t          j        f j        |                    GdS )zI
        Make sure that bitwise float operations are not allowed
        c                    d                     |           }                    t          j        |          5 } t	          |          |            d d d            n# 1 swxY w Y   t
          dz   }|                     t          |t                    r|nd                     |                    }                    |t          |j	                             d S )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JJC""6#53"?? '6Xv&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' &C

&0&=&=$F66(6(=(=f(E(EG GI MM)S)9%:%:;;;;;s   AA!$A!r   )r  N)rd  r  r   rU  _bitwise_opnames)r   r  methodsnamer   s   `    r   test_bitwise_floatz TestOperators.test_bitwise_float  s    		< 		< 		< 		< 		<
 
 
  	F 	FDTWd++F!!&5=%-*H)-)>t)DF F F F F	F 	Fr   c                     | j         j        }g d} t          di t          |          }|D ]*}|                      ||           ||                     +d S )Nr<  r=  rJ  333333?        333333@r   r  )r  r[   r   rp  r  r   r   r  r   r  s        r   test_notzTestOperators.test_not	  s    $
 
 
 -,,+,,V44 	6 	6CVVC[[%%**5555	6 	6r   c                    | j         j        }t          j        t          j        t          j        t          j        t          j        g}g d}t          ||          D ]v\  }} t          |f          |          }| 
                    |j        d         j        t          j                   | 
                     ||           ||                     wd S )Nr  r   )r  r[   r   int8rL  rM  rU  r\  zipr   r  nopython_signaturesreturn_typerC  r   r   argtysr  tyr  r   s          r   test_not_npmzTestOperators.test_not_npm  s    $ JKKM

 
 
 66** 	6 	6GBD"KK''EU6q9E"], , ,VVC[[%%**5555		6 	6r   c                    | j         j        }t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j	        g}g d}t          ||          D ]F\  }} t          |f          |          }|                      ||           ||                     Gd S N)r<  r=  rJ  r  g333333@r  TF)r  r]   r   r  rL  rM  rU  rV  r\  rC  r  r   assertAlmostEqualr!  s          r   test_negate_npmzTestOperators.test_negate_npm1  s    ' JKKMMMM	
	
 	
 	
 66** 	< 	<GBD"KK''E""66#;;c

;;;;	< 	<r   c                     | j         j        }g d} t          di t          |          }|D ]*}|                      ||           ||                     +d S N)r<  r=  rJ  r  r  TFr   r  )r  r]   r   rp  r  r  s        r   test_negatezTestOperators.test_negateM  s    '
 
 
 -,,+,,V44 	6 	6CVVC[[%%**5555	6 	6r   c                    | j         j        }t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j	        g}g d}t          ||          D ]F\  }} t          |f          |          }|                      ||           ||                     Gd S r&  )r  r_   r   r  rL  rM  rU  rV  r\  rC  r  r   r'  r!  s          r   test_unary_positive_npmz%TestOperators.test_unary_positive_npm\  s    / JKKMMMM	
	
 	
 	
 66** 	< 	<GBD"KK''E""66#;;c

;;;;	< 	<r   c                     | j         j        }g d} t          di t          |          }|D ]*}|                      ||           ||                     +d S r*  )r  r_   r   rp  r  r  s        r   test_unary_positivez!TestOperators.test_unary_positivew  s    /
 
 
 -,,+,,V44 	6 	6CVVC[[%%**5555	6 	6r   c                     t           j        } t          |t          j        |d          ffi ||          }dD ].}d}|                      |||           |||                     /d S )NrJ  )rJ  r        *   )rJ  r3  r1  )r   rM  r   UniTupler   )r   r   r   r   r   itups          r   	_check_inzTestOperators._check_in  s    ?UEN5!445????GG! 	C 	CAC##FF1cNNEE!SMMBBBB	C 	Cr   c                 F    |                      | j        j        |           d S r   )r7  r  ro   r  s     r   test_inzTestOperators.test_in  s!    tw)511111r   c                 <    |                      t                     d S r  )r9  r  r  s    r   test_in_npmzTestOperators.test_in_npm  s    7#####r   c                 F    |                      | j        j        |           d S r   )r7  r  rr   r  s     r   test_not_inzTestOperators.test_not_in  s!    tw-u55555r   c                 <    |                      t                     d S r  )r=  r  r  s    r   test_not_in_npmzTestOperators.test_not_in_npm  s    w'''''r   N)F)dru   rv   rw   __doc__r   r  r|   r   r   r   r   r   r   r   r   r   r   r   r  rp  r   r   r  r  r  r   rL  rM  rO  rP  rU  rV  r  r[  r\  r	  r  r  r  r   r"  r$  r&  r(  r+  r.  r0  r2  r7  r@  rE  rQ  rW  rY  r]  rx  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/  r7  r9  r;  r=  r?  r   r   r   r   r   h  sv         
B "*"*"2"*/#+#3'} (&l'|'| (&.o  .@ @ @ @* 0I I I I
 
 
 5F(,0 0 0 00 KJJ[%+\5<]EM3M  %0@A#4 @ @ @ @+ + + $5 @ @ @ @+ + + $5 @ @ @ @+ + + $5 @ @ @ @+ + + $5 O O O O+ + + $5 O O O O+ + +3 3 3& & &$ -> ( ( ( ( ,= ( ( ( (( .? * * * * 7H 3 3 3 3 /@ * * * *. . . .> F"2$6%8    0"2$6%8    A"2$?    9J',6 6 6 6  ): 2 2 2 20 0 0 *; S S S S1 1 1 %6 L L L L, , , *; ( ( ( (( ,= * * * *( ("0$4    &7 
* 
* 
* 
*- - - &7 
* 
* 
* 
*- - - &7 
* 
* 
* 
*- - - *; 
* 
* 
* 
*1 1 1 &7 2 2 2 2= = =% % %I I II I I 	! 	! Z	!6 6 6; ; ; /@ ( ( ( (B < "5   
 0A ( ( ( (B > "6   
 ): ( ( ( (B 9 #0#4 	   &7 -= -= -= -=^- - - F  F  FD6 6 66 6 62< < <86 6 6< < <66 6 6C C C . 2 2 2 2$ $ $ !2 6 6 6 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dS )TestOperatorModuler   N)ru   rv   rw   rz   r  r|   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   rC  rC    s]        	B "*"*"2"*/#+#3'} (&l'|'| (&.o r   rC  c                      e Zd ZdZeZg dZej        ej	        ej
        ej        gZd eD             Zd eD             Z e ej        ee                    Zd eD             Zd eD             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.d"S )#TestMixedIntsz<
    Tests for operator calls with mixed integer types.
    )r   r<  rJ  r  r3     i'  rI  rH  iiiic                      g | ]}|j         	|S r   signedr  r  s     r   r  zTestMixedInts.<listcomp>  s    8882bi8B888r   c                      g | ]}|j         	|S r   rH  rJ  s     r   r  zTestMixedInts.<listcomp>  s    >>>RBI>b>>>r   c                 8    g | ]\  }}|j         s|j         ||fS r   rH  r  uvs      r   r  zTestMixedInts.<listcomp>  s@     - - -tq!x-#$8-QF - - -r   c                 8    g | ]\  }}|j         |j         ||fS r   rH  rM  s      r   r  zTestMixedInts.<listcomp>  s@     5 5 5Ah5*+(5q!f 5 5 5r   c                 h    t          j        |j                  }|j        |cxk    o
|j        k    nc S r   )r   iinfokeyminmax)r   r  r  tp_infos       r   int_in_dtype_rangez TestMixedInts.int_in_dtype_range  s9    (26""{c0000W[00000r   c                     t          d |D                       }t          |t          j        j                  }t	          t
          d|z            S )Nc              3   4   K   | ]}|j         j        d z  V  dS r  Nr   itemsizer  rO  s     r   	<genexpr>z8TestMixedInts.get_numpy_signed_upcast.<locals>.<genexpr>  ,      ::qw'!+::::::r   zint%drU  r   intpbitwidthrd  r   r   valsrb  s      r   get_numpy_signed_upcastz%TestMixedInts.get_numpy_signed_upcast  sG    ::T:::::x!455r7X-...r   c                     t          d |D                       }t          |t          j        j                  }t	          t
          d|z            S )Nc              3   4   K   | ]}|j         j        d z  V  dS rZ  r[  r]  s     r   r^  z:TestMixedInts.get_numpy_unsigned_upcast.<locals>.<genexpr>  r_  r   zuint%dr`  rc  s      r   get_numpy_unsigned_upcastz'TestMixedInts.get_numpy_unsigned_upcast  sG    ::T:::::x!455r8h.///r   c                 H     t          t          |j                  |          S r   )rd  r   r  )r   r  r  s      r   get_typed_intzTestMixedInts.get_typed_int  s    $wr38$$S)))r   c                 @     t          t          |           fd}|S )Nc                 l                         | |          }  ||            ||                    S r   re  r  r  r  r  r   s      r   control_signedz8TestMixedInts.get_control_signed.<locals>.control_signed  s:    --a33B2bbeeRRUU###r   rd  r|   )r   r  ro  r  s   `  @r   get_control_signedz TestMixedInts.get_control_signed  s9    Xv&&	$ 	$ 	$ 	$ 	$ 	$ r   c                 @     t          t          |           fd}|S )Nc                 l                         | |          }  ||            ||                    S r   rh  rn  s      r   control_unsignedz<TestMixedInts.get_control_unsigned.<locals>.control_unsigned  s:    //155B2bbeeRRUU###r   rp  )r   r  ru  r  s   `  @r   get_control_unsignedz"TestMixedInts.get_control_unsigned  s9    Xv&&	$ 	$ 	$ 	$ 	$ 	$  r   c                     | S r   r   rX   s    r   <lambda>zTestMixedInts.<lambda>  s    1 r   c           	         |D ]\  }}	 t          ||	f          |          }
t          j        ||          D ]\  }}|                     ||          r|                     ||	          s2|                     ||          }|                     |	|          } |||          } |
||          }|                     ||           d|d|d||	f} ||           ||          }} | j        ||fd|i| d S )Nr   r   r   r   )r   r   r   rW  rj  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  so     	B 	BFB"D"bNN6**E!)(H== B B1..q"55 T=T=TUVXZ=[=[ &&r1--&&r1--'<1--eAqkk%%c=9999!!QQQR* *
3H1E1EX''X B B3 B*@B B B BB	B 	Br   c                 F   |D ]} t          |f          |          }|D ]}|                     ||          s|                     ||          } ||          }	 ||          }
|                     |
|           |                     |
|	d|d|d|
d|	           d S )Nzmismatch for z with type r   r   r   )r   rW  rj  rz  r   )r   r   r{  r|  r   r}  r  r   r   r   r   s              r   	run_unaryzTestMixedInts.run_unary  s     	2 	2BD"KK''E 
2 
2..q"55 &&r1--'<??eAhh%%c=999''11bbb###xx1 ( 2 2 2 2
2	2 	2r   c                     | S r   r   rX   s    r   rx  zTestMixedInts.<lambda>  s     r   c                      | j         ||                     |          || j        |fd|i|  | j         ||                     |          || j        |fd|i| d S )Nr~  )r  rq  signed_pairsrv  unsigned_pairs)r   r   r  samplesr}  r~  r  s          r   run_arith_binopzTestMixedInts.run_arith_binop  s     	 7 7 ? ?!2M	2 	2#-	2 1	2 	2 	2 	 9 9& A A!4m	2 	2#-	2 1	2 	2 	2 	2 	2r   c                 R    |                      | j        j        d| j                   d S )Nr}   )r  r  r    int_samplesr  s    r   test_addzTestMixedInts.test_add  (    TW0%9IJJJJJr   c                 R    |                      | j        j        d| j                   d S )Nr   )r  r  r&   r  r  s    r   test_subzTestMixedInts.test_sub  r  r   c                 R    |                      | j        j        d| j                   d S )Nr   )r  r  r*   r  r  s    r   test_mulzTestMixedInts.test_mul  r  r   c                 j    d | j         D             }|                     | j        j        d|           d S )Nc                     g | ]
}|d k    |S r   r   r  s     r   r  z/TestMixedInts.test_floordiv.<locals>.<listcomp>      999!q&&1&&&r   r   )r  r  r  r.   r   r  s     r   test_floordivzTestMixedInts.test_floordiv  s;    99d.999TW5z7KKKKKr   c                 j    d | j         D             }|                     | j        j        d|           d S )Nc                     g | ]
}|d k    |S r  r   r  s     r   r  z*TestMixedInts.test_mod.<locals>.<listcomp>  r  r   r   )r  r  r  r8   r  s     r   test_modzTestMixedInts.test_mod  s;    99d.999TW0%AAAAAr   c                 
    i }t           j        dk    r
t          |d<    j        j        }d  j        D             }  j        |d|fi |  fd}d  j        D             }d  j        D             }  j        ||||fi | d S )Nr  r~  c                     g | ]
}|d k    |S r  r   r  s     r   r  z*TestMixedInts.test_pow.<locals>.<listcomp>'  r  r   r   c                                          | |          }|dk    r ||            ||          z  S  ||            ||           z  }|dk    rdS t          j        d|z            S )Nr   g      ?)re  r   ra  )r  r  r  invr   s       r   ro  z.TestMixedInts.test_pow.<locals>.control_signed+  sx    --a33BAvvr!uu1~%beerr1"vvo!881wsSy)))r   c                     g | ]
}|d k    |S r  r   r  s     r   r  z*TestMixedInts.test_pow.<locals>.<listcomp>5  r  r   c                 8    g | ]\  }}|j         |j         ||fS r   rH  rM  s      r   r  z*TestMixedInts.test_pow.<locals>.<listcomp>6  s@     2 2 241a82()2A 2 2 2r   )	r   r  r  r  r   r  r  
type_pairsr  )r   
extra_castr   r  ro  r  s   `     r   test_powzTestMixedInts.test_pow   s    
?g%%',J|$$ :9d.999VUGBBzBBB		* 		* 		* 		* 		* :9d.9992 24? 2 2 2	= 	=1;	= 	= 	= 	= 	=r   c                     d }d | j         D             }| j        j        }|                     |||| j        t
          d           |                     |||| j        t
          d           d S )Nc                 @    t          |           t          |          z  S r   )r  r  r  s     r   controlz+TestMixedInts.test_truediv.<locals>.control=  s    88eAhh&&r   c                     g | ]
}|d k    |S r  r   r  s     r   r  z.TestMixedInts.test_truediv.<locals>.<listcomp>?  r  r   double)r}  prec)r  r  r4   r  r  r  r  r   r  r  r   s       r   test_truedivzTestMixedInts.test_truediv;  s    	' 	' 	'99d.999(
 	$2C&+( 	 	< 	< 	<$2E&+( 	 	< 	< 	< 	< 	<r   c                 R    |                      | j        j        d| j                   d S )Nr   )r  r  rG   r  r  s    r   test_andzTestMixedInts.test_andJ  s(    TW8&$BRSSSSSr   c                 R    |                      | j        j        d| j                   d S )Nr   )r  r  rK   r  r  s    r   test_orzTestMixedInts.test_orM  s(    TW7@PQQQQQr   c                 R    |                      | j        j        d| j                   d S )Nr   )r  r  rO   r  r  s    r   test_xorzTestMixedInts.test_xorP  s(    TW8%AQRRRRRr   c                    
 t          t          |          

 fd}
 fd} j         fd}d  j        D             }d  j        D             }|D ]\  }}	 |||	|           |D ]\  }}	 |||	|           d S )Nc                 l                         | |          }  ||            ||                    S r   rm  r  r  r  opfuncr   s      r   ro  z5TestMixedInts.run_shift_binop.<locals>.control_signedU  s:    --a33B6""Q%%A'''r   c                 l                         | |          }  ||            ||                    S r   rt  r  s      r   ru  z7TestMixedInts.run_shift_binop.<locals>.control_unsignedX  s:    //155B6""Q%%A'''r   c           	          t          | |f          
          }D ]}| j        dz
  }dddd|dz
  |fD ]}                    ||           r                    ||          s/                    | |          }                    ||          } |||          } |||          }d|d|d| |f}	                    |||	           d S )	Nr<  r   rJ  r1  r   r   r   r   )r   rb  rW  rj  r   )r  r  r{  r   r   maxshiftr   r   r   r   r   r  r   s             r   checkz,TestMixedInts.run_shift_binop.<locals>.check^  s(   "D"bNN6**E D D ;?Q1hlH= 
D 
DA221b99 !AXAXYZ\^A_A_ ! **2q11A**2q11A+|Aq11H%1++CCaaRHH.C++Cs+CCCC
D	D Dr   c                 *    g | ]\  }}|j         ||fS r   rH  rM  s      r   r  z1TestMixedInts.run_shift_binop.<locals>.<listcomp>r  s6     % % %41a8%A % % %r   c                 *    g | ]\  }}|j         ||fS r   rH  rM  s      r   r  z1TestMixedInts.run_shift_binop.<locals>.<listcomp>t  s6     + + +TQ!"+1a& + + +r   )rd  r|   r  r  )r   r   r  ro  ru  r  r  r  r  r  r  r  s   ``        @@r   run_shift_binopzTestMixedInts.run_shift_binopS  s$   6**	( 	( 	( 	( 	( 	(	( 	( 	( 	( 	( 	( "	D 	D 	D 	D 	D 	D 	D(% %4? % % %+ +T_ + + + # 	* 	*FBE"b.))))$ 	, 	,FBE"b*++++	, 	,r   c                 F    |                      | j        j        d           d S )Nr   )r  r  r?   r  s    r   test_lshiftzTestMixedInts.test_lshift|  s#    TW:HEEEEEr   c                 F    |                      | j        j        d           d S )Nr   )r  r  rC   r  s    r   test_rshiftzTestMixedInts.test_rshift  s#    TW;XFFFFFr   c                 l    d }| j         }| j        j        }|                     |||| j                   d S )Nc                     | S r   r   )r  s    r   r  z2TestMixedInts.test_unary_positive.<locals>.control  s    Hr   )r  r  r_   r  	int_typesr  s       r   r/  z!TestMixedInts.test_unary_positive  sC    	 	 	"/vw@@@@@r   c                       fd} fd} j         } j        j        }                     ||| j                                        ||| j                   d S )Nc                 F                         |           } ||            S r   rm  r  r  r   s     r   ro  z9TestMixedInts.test_unary_negative.<locals>.control_signed  %    --a00B2qb66Mr   c                 F                         |           } ||            S r   rt  r  s     r   ru  z;TestMixedInts.test_unary_negative.<locals>.control_unsigned  %    //22B2qb66Mr   )r  r  r]   r  signed_typesunsigned_typesr   ro  ru  r  r   s   `    r   test_unary_negativez!TestMixedInts.test_unary_negative  s    	 	 	 	 		 	 	 	 	 "'v~w8IJJJv/$:MNNNNNr   c                       fd} fd} j         } j        j        }                     ||| j                                        ||| j                   d S )Nc                 F                         |           } ||            S r   rm  r  s     r   ro  z1TestMixedInts.test_invert.<locals>.control_signed  r  r   c                 F                         |           } ||            S r   rt  r  s     r   ru  z3TestMixedInts.test_invert.<locals>.control_unsigned  r  r   )r  r  rY   r  r  r  r  s   `    r   test_invertzTestMixedInts.test_invert  s    	 	 	 	 		 	 	 	 	 ",v~w8IJJJv/$:MNNNNNr   N)/ru   rv   rw   r@  r   r  r  r   r  uint8rM  rP  r  r  r  r  r   r   r  r  r  rW  re  rh  rj  rq  rv  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/  r  r  r   r   r   rE  rE    s         
BOOOKU[%+u|DI88888L>>9>>>N'i'	9==>>J- -z - - -L5 5 5 5 5N1 1 1/ / /
0 0 0
* * *        "%B B B B, !$2 2 2 2" '*kk
2 
2 
2 
2K K KK K KK K KL L LB B B= = =6< < <T T TR R RS S S', ', ',RF F FG G GA A AO O OO O O O Or   rE  c                       e Zd ZeZdS )TestMixedIntsOperatorModuleN)ru   rv   rw   rz   r  r   r   r   r  r    s        	BBBr   r  c                   $    e Zd ZdZd Zd Zd ZdS )TestStaticPowerz`
    Test the ** operator with a static exponent, to exercise a
    dedicated optimization.
    c           	         |D ]}t           j        }t          |          } t          d          |          } t          d          |          }|D ]}	  |||          }	 ||          }
|                     |	|
d           3# t
          $ r@ |                     t
                    5   ||           d d d            n# 1 swxY w Y   Y |w xY wd S )NTr9  r  )r  )r   r   r   r   r   r  r~  )r   	exponentsr  r   regular_funcstatic_funcstatic_cfuncregular_cfuncrO  r   r   s              r   
_check_powzTestStaticPower._check_pow  sY    	J 	JC.:L+C00K-3---k::L.C...|<<M J JJ,}Q44H
 ',q//C++Hc+IIII ) ( ( (**+<== ( ($Q( ( ( ( ( ( ( ( ( ( ( ( ( ( ((J	J 	Js6   B$C+C	7CCC
CCCc           	          g d}dddddt          j        d          t          j        d          g}|                     ||           d S )	N)	r<  r=  rJ  r1     r   rI  r  rH  r   r<  rJ  rI  r  rH  r  )r   r  uint16r  r   r  rd  s      r   test_int_valueszTestStaticPower.test_int_values  sK    333	1aRbill;	4(((((r   c                     g d}dddt          j        d          t          d          t          d          g}|                     ||           d S )N)r<  r=  rJ  r1  r  r   rI  r  rH  i ir  g      
@g      g       infnan)r   rU  r  r  r  s      r   test_real_valuesz TestStaticPower.test_real_values  sO    HHH	T5"*T"2"2E%LL%,,O	4(((((r   N)ru   rv   rw   r@  r  r  r  r   r   r   r  r    sN         
J J J$) ) )) ) ) ) )r   r  c                       e Zd ZdZd Zd ZdS )TestStringConstComparisonz-
    Test comparison of string constants
    c                    d }d } t          d          |          } t          d          |          }|                      |             |                       |                      |             |                       d S )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   Tr9  r   r  r   r  r  cfunc1cfunc2s        r   test_eqz!TestStringConstComparison.test_eq      	 	 		 	 	 $d###J//#d###J//vvxx000vvxx00000r   c                    d }d } t          d          |          } t          d          |          }|                      |             |                       |                      |             |                       d S )Nc                      d} | dk    S r  r   r  s    r   r  z6TestStringConstComparison.test_neq.<locals>.test_impl1  r  r   c                      d} | dk    S r  r   r  s    r   r  z6TestStringConstComparison.test_neq.<locals>.test_impl2  r  r   Tr9  r  r  s        r   test_neqz"TestStringConstComparison.test_neq  r  r   N)ru   rv   rw   r@  r  r  r   r   r   r  r    s<         1 1 11 1 1 1 1r   r  c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	TestBooleanLiteralOperatorsz/
    Test operators with Boolean constants
    c                   	
 	fd}
fd}d }t          j        ddgd          D ]F\  	} t          d          |          }|                      ||           ||                     Gt          j        ddgd          D ]F\  }
 t          d          |          }|                      ||           ||                     G t          d          |          }|                      |             |                       d S )	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                  >    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=  repeatr9  r   r   r   r  r   r  r  r  r  r  r  r  cfunc3r  r  s            @@r   r  z#TestBooleanLiteralOperators.test_eq  ]   	 	 	 	 		 	 	 	 		$ 	$ 	$ ")4-BBB 	7 	7HE1'S$'''
33FZZ]]FF1II6666!)4-BBB 	7 	7HAu'S$'''
33FZZ]]FF1II6666#d###J//vvxx00000r   c                   	
 	fd}
fd}d }t          j        ddgd          D ]F\  	} t          d          |          }|                      ||           ||                     Gt          j        ddgd          D ]F\  }
 t          d          |          }|                      ||           ||                     G t          d          |          }|                      |             |                       d S )	Nc                     | k    S r   r   r  s    r   r  z7TestBooleanLiteralOperators.test_ne.<locals>.test_impl1  r  r   c                     | k    S r   r   r
  s    r   r  z7TestBooleanLiteralOperators.test_ne.<locals>.test_impl2  r  r   c                  >    ddk    } ddk    }ddk    }ddk    }| |||fS r  r   r  s       r   r  z7TestBooleanLiteralOperators.test_ne.<locals>.test_impl3  r  r   TFr=  r  r9  r  r  s            @@r   test_nez#TestBooleanLiteralOperators.test_ne  r  r   c                 T   fd}d }t          j        ddgd          D ]F\  } t          d          |          }|                      ||           ||                     G t          d          |          }|                      |             |                       d S )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  r9  r  )r   r  r  r  r  r  r  s         @r   test_isz#TestBooleanLiteralOperators.test_is&  s    	 	 	 	 		$ 	$ 	$ ")4-BBB 	7 	7HE1'S$'''
33FZZ]]FF1II6666#d###J//vvxx00000r   c                     d } t          d          |          }|                      |             |                       d S )Nc                      d\  } }|  | fS Nr_  r   r  s     r   	test_implz7TestBooleanLiteralOperators.test_not.<locals>.test_impl;  s    DAqEq5>!r   Tr9  r  r   r(  r   s      r   r  z$TestBooleanLiteralOperators.test_not9  sU    	" 	" 	" #T"""9--eegg.....r   c                     d } t          d          |          }|                      |             |                       d S )Nc                  H    d\  } }t          |           t          |          fS r'  )boolr  s     r   r(  z8TestBooleanLiteralOperators.test_bool.<locals>.test_implD  s"    DAqGGT!WW%%r   Tr9  r  r)  s      r   	test_boolz%TestBooleanLiteralOperators.test_boolB  sU    	& 	& 	& #T"""9--eegg.....r   c                     d } t          d          |          }|                      |             |                       d S )Nc                  H    d\  } }t          |           t          |          fS r'  )r  r  s     r   r(  z?TestBooleanLiteralOperators.test_bool_to_str.<locals>.test_implM  s"    DAqFFCFF##r   Tr9  r  r)  s      r   test_bool_to_strz,TestBooleanLiteralOperators.test_bool_to_strK  sU    	$ 	$ 	$ #T"""9--eegg.....r   N)
ru   rv   rw   r@  r  r   r$  r  r-  r0  r   r   r   r  r    sx         1 1 141 1 141 1 1&/ / // / // / / / /r   r  __main__)&r   r   r|   unittestnumpyr   numbar   r   
numba.corer   r   r   numba.core.types.functionsr   numba.tests.supportr	   r
   r   numba.tests.matmul_usecaser   r   r   r  rp  r   objectr   rz   r   rC  rE  r  r  r  r  ru   mainr   r   r   <module>r;     s                      + + + + + + + + + + 3 3 3 3 3 3 9 9 9 9 9 9 9 9 9 95 5 5 5 5 5 5 5 5 5 t
&   h h h h h& h h hV`" `" `" `" `"V `" `" `"Fo( o( o( o( o(H o( o( o(d       &uO uO uO uO uOH uO uO uOp         -      
") ") ") ") ")h ") ") ")H1 1 1 1 1 1 1 1@d/ d/ d/ d/ d/( d/ d/ d/N zHMOOOOO r   