
\K]c           @  s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 j
 Z d  d l m Z m Z d  d l m Z m Z m Z m Z m Z d  d l m Z d d l m Z m Z d d l m Z m Z d d	 l m Z m Z m Z m  Z  m! Z! e   Z" e   Z# e# j$ d
  d   Z% d e& f d     YZ' d e& f d     YZ( d e f d     YZ) d e) f d     YZ* d e f d     YZ+ d e+ f d     YZ, d e f d     YZ- d e f d     YZ. e/ d k re j0   n  d S(   i(   t   print_functionN(   t   compile_isolatedt   Flags(   t   jitt   typest	   typeinfert   utilst   errors(   t	   PYVERSIONi   (   t   TestCaset   tag(   t   truediv_usecaset   itruediv_usecase(   t   matmul_usecaset   imatmul_usecaset
   DumbMatrixt   needs_matmult
   needs_blast   force_pyobjectc           s     f d   } | S(   Nc           s   |    S(   N(    (   t   x(   t   exp(    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   pow_usecase   s    (    (   R   R   (    (   R   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   make_static_power   s    t   LiteralOperatorImplc           B  sl  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 e  Z e e  Z e r e e  Z e e  Z n  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+ RS(%   c         C  s   |  | S(   N(    (   R   t   y(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   add_usecase"   s    c         C  s   |  | 7}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   iadd_usecase&   s    
c         C  s   |  | S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   sub_usecase+   s    c         C  s   |  | 8}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   isub_usecase/   s    
c         C  s   |  | S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   mul_usecase4   s    c         C  s   |  | 9}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   imul_usecase8   s    
c         C  s   |  | S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   div_usecase=   s    c         C  s   |  | :}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   idiv_usecaseA   s    
c         C  s   |  | S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   floordiv_usecaseF   s    c         C  s   |  | }  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   ifloordiv_usecaseJ   s    
c         C  s   |  | S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   mod_usecaseU   s    c         C  s   |  | ;}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   imod_usecaseY   s    
c         C  s   |  | S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR   ^   s    c         C  s   |  | C}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   ipow_usecaseb   s    
c         C  s   |  | >S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitshift_left_usecaseg   s    c         C  s   |  | K}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitshift_ileft_usecasek   s    
c         C  s   |  | ?S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitshift_right_usecasep   s    c         C  s   |  | L}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitshift_iright_usecaset   s    
c         C  s   |  | @S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_and_usecasey   s    c         C  s   |  | M}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_iand_usecase}   s    
c         C  s   |  | BS(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_or_usecase   s    c         C  s   |  | O}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_ior_usecase   s    
c         C  s   |  | AS(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_xor_usecase   s    c         C  s   |  | N}  |  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_ixor_usecase   s    
c         C  s   |  S(   N(    (   R   t   _unused(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_not_usecase_binary   s    c         C  s   |  S(   N(    (   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   bitwise_not_usecase   s    c         C  s   |  S(   N(    (   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   not_usecase   s    c         C  s   |  S(   N(    (   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   negate_usecase   s    c         C  s   |  
S(   N(    (   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   unary_positive_usecase   s    c         C  s
   |  | k  S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   lt_usecase   s    c         C  s
   |  | k S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   le_usecase   s    c         C  s
   |  | k S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   gt_usecase   s    c         C  s
   |  | k S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   ge_usecase   s    c         C  s
   |  | k S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   eq_usecase   s    c         C  s
   |  | k S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   ne_usecase   s    c         C  s
   |  | k S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   in_usecase   s    c         C  s
   |  | k S(   N(    (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   not_in_usecase   s    (,   t   __name__t
   __module__t   staticmethodR   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   R2   R3   R4   R5   R6   R7   R8   R9   R:   R;   R<   R=   (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR       sT   t   FunctionalOperatorImplc           B  s  e  Z e d     Z e d    Z e d    Z e d    Z e d    Z e d    Z e	 d+ k r{ e
 Z e
 Z n 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- RS(,   c         C  s   t  j |  |  S(   N(   t   operatort   add(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   iadd(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   sub(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   isub(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   mul(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   imul(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    i   i    c         C  s   t  j |  |  S(   N(   RB   t   div(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   idiv(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR       s    c         C  s   t  j |  |  S(   N(   RB   t   floordiv(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR!      s    c         C  s   t  j |  |  S(   N(   RB   t	   ifloordiv(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR"      s    c         C  s   t  j |  |  S(   N(   RB   t   truediv(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   itruediv(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR      s    c         C  s   t  j |  |  S(   N(   RB   t   mod(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR#      s    c         C  s   t  j |  |  S(   N(   RB   t   imod(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR$     s    c         C  s   t  j |  |  S(   N(   RB   t   pow(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR     s    c         C  s   t  j |  |  S(   N(   RB   t   ipow(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR%     s    c         C  s   t  j |  |  S(   N(   RB   t   matmul(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR     s    c         C  s   t  j |  |  S(   N(   RB   t   imatmul(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR     s    c         C  s   t  j |  |  S(   N(   RB   t   lshift(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR&     s    c         C  s   t  j |  |  S(   N(   RB   t   ilshift(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR'     s    c         C  s   t  j |  |  S(   N(   RB   t   rshift(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR(     s    c         C  s   t  j |  |  S(   N(   RB   t   irshift(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR)   #  s    c         C  s   t  j |  |  S(   N(   RB   t   and_(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR*   '  s    c         C  s   t  j |  |  S(   N(   RB   t   iand(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR+   +  s    c         C  s   t  j |  |  S(   N(   RB   t   or_(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR,   /  s    c         C  s   t  j |  |  S(   N(   RB   t   ior(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR-   3  s    c         C  s   t  j |  |  S(   N(   RB   t   xor(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR.   7  s    c         C  s   t  j |  |  S(   N(   RB   t   ixor(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR/   ;  s    c         C  s   t  j |   S(   N(   RB   t   invert(   R   R0   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR1   ?  s    c         C  s   t  j |   S(   N(   RB   R_   (   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR2   C  s    c         C  s   t  j |   S(   N(   RB   t   not_(   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR3   G  s    c         C  s   t  j |   S(   N(   RB   t   neg(   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR4   K  s    c         C  s   t  j |   S(   N(   RB   t   pos(   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR5   O  s    c         C  s   t  j |  |  S(   N(   RB   t   lt(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR6   S  s    c         C  s   t  j |  |  S(   N(   RB   t   le(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR7   W  s    c         C  s   t  j |  |  S(   N(   RB   t   gt(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR8   [  s    c         C  s   t  j |  |  S(   N(   RB   t   ge(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR9   _  s    c         C  s   t  j |  |  S(   N(   RB   t   eq(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR:   c  s    c         C  s   t  j |  |  S(   N(   RB   t   ne(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR;   g  s    c         C  s   t  j | |   S(   N(   RB   t   contains(   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR<   k  s    c         C  s   t  j | |   S(   N(   RB   Ri   (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR=   o  s    (   i   i    (.   R>   R?   R@   R   R   R   R   R   R   R   t   NotImplementedR   R    R!   R"   R   R   R#   R$   R   R%   R   R   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R1   R2   R3   R4   R5   R6   R7   R8   R9   R:   R;   R<   R=   (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRA      sX   	t   TestOperatorsc           B  s  e  Z d  Z e Z i e j d 6e j d 6e j d 6e j	 d 6e j
 d 6e j d 6e j d 6e j d 6e j d	 6e j d
 6e j d 6Z e d  Z e d  Z d   Z e e d  Z d d~ d d d g Z e j e j e j e j e j e j g Z  e j! e j" g Z# e d  Z$ e% d  d    Z& e d  Z' e% d  d    Z( e d  Z) e% d  d    Z* e d  Z+ e% d  d    Z, e d  Z- e% d  d    Z. e d   Z/ e% d  d!    Z0 e d"  Z1 e d#  Z2 e d$  Z3 e d%  Z4 e d&  Z5 e6 d'  Z7 e7 e8   d i d. d/ 6d0 d1 6d2 d3 6 e7 e8   d i d. d/ 6d0 d1 6d2 d3 6 e7 e8   d i d. d/ 6d< d1 6 e e6 d=  Z9 e d>  Z: d?   Z; e d@  Z< dA   Z= e dB  Z> dC   Z? e dD  Z@ dE   ZA e dF  ZB e dG  ZC e7 e8   d i dJ d/ 6dK d1 6 e dL  ZD e% d  dM    ZE e dN  ZF e% d  dO    ZG e dP  ZH e% d  dQ    ZI e dR  ZJ e% d  dS    ZK e dT  ZL e% d  dU    ZM e dV  ZN e% d  dW    ZO eP dX    ZQ eP dY    ZR eP dZ    ZS eT eP d[     ZU e% d  eP d\     ZV e% d  eP d]     ZW e d^  ZX e7 e8   d i da d/ 6 e db  ZY e7 e8   d i de d/ 6 e df  ZZ e7 e8   d i dm d/ 6dn do 6 e dp  Z[ e% d  dq    Z\ dr   Z] ds   Z^ e% d  dt    Z_ e% d  du    Z` dv   Za dw   Zb dx   Zc dy   Zd e dz  Ze d{   Zf e d|  Zg d}   Zh RS(   sw   
    Test standard Python operators on scalars.

    NOTE: operators on array are generally tested in test_ufuncs.
    R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R1   c         C  s   | t  k r |  j d  n  x | D] } t | | d | } | j } x t j | |  D] \ }	 }
 t j |	  } t j |	  } | | |
  } | | |
  } |  j | | d d |	 |
 | | | f |  j | | d d |	 |
 | | | f qZ Wq# Wd  S(   Ns)   test irrelevant on this version of Pythont   flagst   msgs-   mismatch for (%r, %r) with types %s: %r != %r(   Rj   t   skipTestR   t   entry_pointt	   itertoolst   productt   copyt   assertPreciseEqual(   t   selft   pyfunct
   x_operandst
   y_operandst
   types_listRl   t	   arg_typest   crt   cfuncR   R   t   x_gott
   x_expectedt   gott   expected(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_test_ints  s$    			c         C  s   | t  k r |  j d  n  x | D] } t | | d | } | j } x t j | |  D]z \ }	 }
 t j |	  } t j |	  } | | |
  } | | |
  } t j j	 | | d d t j j	 | | d d qZ Wq# Wd  S(   Ns)   test irrelevant on this version of PythonRl   t   rtolgh㈵>(
   Rj   Rn   R   Ro   Rp   Rq   Rr   t   npt   testingt   assert_allclose(   Rt   Ru   Rv   Rw   Rx   Rl   Ry   Rz   R{   R   R   R|   R}   R~   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_test_floats  s    	c         C  s~   t  | d  r | j |  S| t j k r> t t | j   S| t j k rZ t | j  S| t j k rv t	 | j  S| Sd  S(   Nt   dtype(
   t   hasattrt   cast_python_valueR   t   unsigned_domaint   abst   intt   realt   integer_domaint   real_domaint   float(   Rt   t   opt
   numba_type(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   coerce_operand  s    c      	   C  s  |  j  } |  j } | s( | |  j } n  x | D] } t | | | f d | } | j } x t j | |  D] \ }	 }
 |  j |	 |  }	 |  j |
 |  }
 | |	 |
  } | |	 |
  } |  j t	 |  t	 |   |  j
 | | d | |	 |
 f  ql Wq/ Wd  S(   NRl   s   mismatch with %r (%r, %r)(   t   compare_scalar_operandst   compare_typest   compare_unordered_typesR   Ro   Rp   Rq   R   t   assertIst   typet   assertEqual(   Rt   Ru   Rl   t   orderedt   opsRx   t   typRz   R{   R   R   R   R~   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_test_scalar_compare  s     			g      g      y              ?y               @g      ?c         C  s   |  j  |  j j |  d  S(   N(   R   R   R6   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_lt_scalar  s    t	   importantc         C  s   |  j  d t  d  S(   NRl   (   R   t   Noflags(   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_lt_scalar_npm  s    c         C  s   |  j  |  j j |  d  S(   N(   R   R   R7   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_le_scalar  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_le_scalar_npm  s    c         C  s   |  j  |  j j |  d  S(   N(   R   R   R8   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_gt_scalar  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_gt_scalar_npm  s    c         C  s   |  j  |  j j |  d  S(   N(   R   R   R9   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_ge_scalar  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_ge_scalar_npm  s    c         C  s    |  j  |  j j | d t d  S(   NR   (   R   R   R:   t   False(   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_eq_scalar  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_eq_scalar_npm  s    c         C  s    |  j  |  j j | d t d  S(   NR   (   R   R   R;   R   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_ne_scalar  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_ne_scalar_npm  s    c         C  sY   t  t  t t g } t  t t  t g } t j t j f g } |  j | | | | d | d  S(   NRl   (   R   t   TrueR   t   booleanR   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_binop_bools  s
    c         C  s   d d d d g } d d d d g } t  j t  j f t  j t  j f g } |  j | | | | d | d d g } d d g } t  j t  j f t  j t  j f t  j t  j f g } |  j | | | | d | d  S(	   Nii    i   i   iii   Rl   (   R   t   int32t   int64R   t   bytet   uint32t   uint64(   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_binop_ints  s    c         C  sb   d d d g } d d d g } t  j t  j f t  j t  j f g } |  j | | | | d | d  S(   Ngg        g?g      g?g @Rl   (   R   t   float32t   float64R   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_binop_floats*  s    c         C  s   |  j  | d | d  S(   NRl   (   R   (   Rt   Ru   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_binop_floats_floordiv4  s    c         C  sb   d d d g } d d d g } t  j t  j f t  j t  j f g } |  j | | | | d | d  S(   Ngy        333333?g        y                y        ?g      y        ffffff?y        ?g @y               @Rl   y333333?y                y      ffffffy @       (   R   t	   complex64t
   complex128R   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_binop_complex7  s    c           s   x | D] } x | j    D] \ } } x t t f D] } d | | f } | r\ | d 7} n  | rh t n t }	 d | }
 | |
 |	 d    | r d | k r | r   f d   } n   } | | _ | r t d  |  } n  | |  | <q3 Wq Wq Wd  S(   Ns
   test_%s_%st   _npms
   %s_usecasec         S  s2   t  |  |  } t  |  j |  } | | |  d  S(   N(   t   getattrR   (   Rt   t   runner_namet   usecase_nameRl   t   runnert
   op_usecase(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   innerK  s    t   arrayc           s   |  j         Wd  QXd  S(   N(   t   assertTypingError(   Rt   (   R   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt	   test_methR  s    R   (   t   itemsR   R   R   t   force_pyobj_flagsR>   R
   (   t   nst   usecasest
   tp_runnerst	   npm_arrayt   usecaset   tp_nameR   t   nopythont	   test_nameRl   R   R   (    (   R   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   generate_binop_testsA  s"    
	RC   RD   RE   RF   RG   RH   R   t   intsR   t   floatsR   t   complexRI   RJ   RM   RN   RK   RL   RO   RP   R   c         C  s   t  |  j |  } | t k r5 |  j d | f  n  t j t j t j g } | rf | j t j	  n  x | D]w } t
 | | | f d | } | j }	 |  j t   }
 |	 d d  Wd  QX| t k	 rm |  j | t |
 j   qm qm Wd  S(   Ns   %r not implementedRl   i   i    (   R   R   Rj   Rn   R   R   R   R   t   appendR   R   Ro   t   assertRaisest   ZeroDivisionErrorR   t   assertInt   strt	   exception(   Rt   R   Rm   Rl   t   allow_complexRu   Ry   t   tpRz   R{   t   cm(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   check_div_errorsu  s    	c         C  s    |  j  d d d | d t d  S(   NR   s   division by zeroRl   R   (   R   R   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_truediv_errors  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_truediv_errors_npm  s    c         C  s   |  j  d d d | d  S(   NR!   s   division by zeroRl   (   R   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_floordiv_errors  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_floordiv_errors_npm  s    c         C  s   |  j  d d d | d  S(   NR   s   division by zeroRl   (   R   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_div_errors  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_div_errors_npm  s    c         C  s   |  j  d d d | d  S(   NR#   s   modulo by zeroRl   (   R   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_mod_errors  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_mod_errors_npm  s    c         C  s   d d d d d g } d d d g } t  j t  j f t  j t  j f g } |  j | | | | d | d d d g } d d d g } t  j t  j f t  j t  j f t  j t  j f g } |  j | | | | d | d  S(   Niii    i   i   Rl   (   R   R   R   R   R   R   R   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_pow_ints  s    c         C  s   d d d d g } d d d d d	 g } t  j t  j f t  j t  j f g } |  j | | | | d
 | d g } d d d	 g } t  j t  j f t  j t  j f g } |  j | | | | d
 | d  S(   Ngvkgv[gv[@gvk@iii    i   i   Rl   g        (   R   R   R   R   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_pow_floats  s    	RQ   RR   R   R   c         C  se   |  j  j } d d d g } | } t j t j f t j t j f g } |  j | | | | d | d  S(   Ni   y                y              ?iRl   y      ?        y            (   R   R   R   R   R   R   (   Rt   Rl   Ru   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_add_complex  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_add_complex_npm  s    c         C  sn   |  j  j } d d d	 g } d d d g } t j t j f t j t j f g } |  j | | | | d | d  S(
   Ni   y                y              ?ii   i   Rl   y      ?        y            (   R   R   R   R   R   R   (   Rt   Rl   Ru   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_sub_complex  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_sub_complex_npm  s    c         C  sn   |  j  j } d d d	 g } d d d g } t j t j f t j t j f g } |  j | | | | d | d  S(
   Ni   y                y              ?ii   i   Rl   y      ?        y            (   R   R   R   R   R   R   (   Rt   Rl   Ru   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_mul_complex  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_mul_complex_npm  s    c         C  sn   |  j  j } d d d	 g } d d d g } t j t j f t j t j f g } |  j | | | | d | d  S(
   Ni   y                y              ?ii   i   Rl   y      ?        y            (   R   R   R   R   R   R   (   Rt   Rl   Ru   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_div_complex  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_div_complex_npm  s    c         C  sn   |  j  j } d d d	 g } d d d g } t j t j f t j t j f g } |  j | | | | d | d  S(
   Ni   y                y              ?ii   i   Rl   y      ?        y            (   R   R   R   R   R   R   (   Rt   Rl   Ru   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_truediv_complex  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_truediv_complex_npm  s    c         C  s>   |  j  j } |  j     t | t j t j f  } Wd  QXd  S(   N(   R   R#   R   R   R   R   (   Rt   Rl   Ru   t   cres(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_mod_complex  s    c         C  s   |  j  d t  d  S(   NRl   (   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_mod_complex_npm$  s    c         C  s   t  | d d t } | j } t d  } t d  } | | |  } |  j | j d  | rq |  j | |  n  |  j | |  |  j | |  d  S(   NRl   i   i   i   (    (   R   R   Ro   R   R   t   valueR   t   assertIsNot(   Rt   Ru   t   inplaceR   R{   t   at   bR~   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   check_matmul_objmode-  s    	c         C  s   |  j  |  j j d t d  S(   NR   (   R   R   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_matmul=  s    c         C  s   |  j  |  j j d t d  S(   NR   (   R   R   R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_imatmulA  s    c         C  s   t  j t  j d d  } t | | | f d t } | j } t j d d g  } t j d d g  } | | |  } |  j | t j | |   |  j	 | |  |  j	 | |  d  S(   Ni   t   CRl   i   i   i   (
   R   t   ArrayR   R   R   Ro   R   Rs   t   dotR   (   Rt   Ru   t   arrtyR   R{   R   R   R~   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   check_matmul_npmE  s    	c         C  s   |  j  |  j j  d  S(   N(   R  R   R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_matmul_npmS  s    c         C  s,   |  j     } |  j |  j j  Wd  QXd  S(   N(   R   R  R   R   (   Rt   t   raises(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_imatmul_npmX  s    c         C  sj  d d g } d d d d d d d g } t  j t  j f g } |  j | | | | d | d d g } d d d d d d d	 d
 g } t  j t  j f g } |  j | | | | d | d d g } d d d d d d d g } t  j t  j f g } |  j | | | | d | d d g } d d d d d d d	 d
 g } t  j t  j f g } |  j | | | | d | d  S(   Ni    i   i   i   i   i   i   Rl   i    i?   i(   R   R   R   R   R   R   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_bitshift_leftb  s(    t   bitshift_leftt   bitshift_ileftR  c         C  sv  d d d g } d d d d d d d g } t  j t  j f g } |  j | | | | d	 | d d d g } d d d d d d d d g } t  j t  j f g } |  j | | | | d	 | d d d g } d d d d d d d g } t  j t  j f g } |  j | | | | d	 | d d d g } d d d d d d d d g } t  j t  j f g } |  j | | | | d	 | d  S(   Ni    i   i   i    i   i   i   i   Rl   i@   i?   iI       I    l            l    I       i   I       i   (   R   R   R   R   R   R   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_bitshift_right  s(    t   bitshift_rightt   bitshift_irightR  c         C  s  t  t d d   d g } t  t d d   d g } t j t j f g } |  j | | | | d | t  t d d   d g } t  t d d   d g } t j t j f g } |  j | | | | d | t  t d d	   d d g } t  t d d	   d d g } t j t j f g } |  j | | | | d | t  t d d	   d d g } t  t d d	   d! d# g } t j t j f g } |  j | | | | d | d  S($   Ni    i   i   i    i   Rl   i@   ii   i   i?   I       I    I       I    l            l    l            l    I       i   I       iI       i   I       il            l         l            l    l            l         l            l    (   t   listt   rangeR   R   R   R   R   R   (   Rt   Ru   Rl   Rv   Rw   Rx   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_logical  s(    t   bitwise_andt   bitwise_iandt
   bitwise_ort   bitwise_iort   bitwise_xort   bitwise_ixorR  R   t   boolsc         C  s9  |  j  j } t t d d   d g } g  | D] } t j |  ^ q/ } d g } t j t j f g } |  j | | | | d | t t d d   d d g } d g } t j t j f g } |  j | | | | d | t t d d   d g } g  | D] } t j	 |  ^ q } d g } t j	 t j	 f g } |  j | | | | d | t t d d   d d g } d g } t j
 t j
 f g } |  j | | | | d | t t t t g } t t t j |   } |  j  j } t | t j f d | } | j }	 x* | D]" }
 |  j | |
  |	 |
   qWd  S(   Ni    i   i   i    i   Rl   ii   i   i@   i?   I       I    I       i   I       il            l    l            l         l            l    (   R   R1   R  R  R   R   R   R   R   R   R   R   R   t   mapt   bool_R2   R   R   Ro   Rs   (   Rt   Rl   Ru   Rv   R   Rw   Rx   t   valuesR   R{   t   val(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_bitwise_not  s<    "		"			c         C  s   |  j  d t  d  S(   NRl   (   R  R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_bitwise_not_npm  s    c           s     f d   } d d d d d d d d	 d
 d d g } xF | D]> } t    j |  } | | t j t j f d   j | q= Wd S(   sI   
        Make sure that bitwise float operations are not allowed
        c           s   d j  |   }   j t j d |  } t |  |  Wd  QXd } | j  t | t  r^ | n d j  |   }   j | t | j   d  S(   Ns'   expecting TypingError when compiling {}Rm   s   Invalid use of {}s   Function({})(	   t   formatR   R   t   TypingErrorR   t
   isinstanceR   R   R   (   Ru   t   argtypest   opnameRm   R  t   fmtt	   expecting(   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   assert_reject_compile  s    R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R1   R  N(   R   R   R   R   t   _bitwise_opnames(   Rt   R"  t   methodst   nameRu   (    (   Rt   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_bitwise_float  s     	c         C  sp   |  j  j } d d d d d g } t | d d t } | j } x* | D]" } |  j | |  | |   qF Wd  S(   Ni   i   i   g333333?y        333333@Rl   (    (   R   R3   R   R   Ro   R   (   Rt   Ru   R  R   R{   R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_not1  s    		c         C  s   |  j  j } t j t j t j t j t j g } d d d d d g } xm t | |  D]\ \ } } t	 | | g  } |  j
 | j j t j  | j } |  j
 | |  | |   qU Wd  S(   Ni   i   i   g333333?y        333333@(   R   R3   R   t   int8R   R   R   R   t   zipR   R   t	   signaturet   return_typeR   Ro   (   Rt   Ru   t   argtysR  t   tyR  R   R{   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_not_npmA  s     		c         C  s   |  j  j } t j t j t j t j t j t j t j	 t j	 g } d d d d d d t
 t g } xT t | |  D]C \ } } t | | g  } | j } |  j | |  | |   qp Wd  S(   Ni   i   i   g333333?g333333@y        333333@(   R   R4   R   R(  R   R   R   R   R   R   R   R   R)  R   Ro   t   assertAlmostEqual(   Rt   Ru   R,  R  R-  R  R   R{   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_negate_npm[  s*    		c         C  sv   |  j  j } d d d d d t t g } t | d d t } | j } x* | D]" } |  j | |  | |   qL Wd  S(   Ni   i   i   g333333?y        333333@Rl   (    (   R   R4   R   R   R   R   Ro   R   (   Rt   Ru   R  R   R{   R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_negatey  s    		c         C  s   |  j  j } t j t j t j t j t j t j t j	 t j	 g } d d d d d d t
 t g } xT t | |  D]C \ } } t | | g  } | j } |  j | |  | |   qp Wd  S(   Ni   i   i   g333333?g333333@y        333333@(   R   R5   R   R(  R   R   R   R   R   R   R   R   R)  R   Ro   R/  (   Rt   Ru   R,  R  R-  R  R   R{   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_unary_positive_npm  s*    		c         C  sv   |  j  j } d d d d d t t g } t | d d t } | j } x* | D]" } |  j | |  | |   qL Wd  S(   Ni   i   i   g333333?y        333333@Rl   (    (   R   R5   R   R   R   R   Ro   R   (   Rt   Ru   R  R   R{   R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_unary_positive  s    		c         C  sv   t  j } t | | t  j | d  f d | } | j } x6 d D]. } d } |  j | | |  | | |   q@ Wd  S(	   Ni   Rl   i   i   i   i*   (   i   i   i   i   i*   (   i   i*   i   (   R   R   R   t   UniTupleRo   Rs   (   Rt   Ru   Rl   R   R   R{   t   it   tup(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt	   _check_in  s    			c         C  s   |  j  |  j j |  d  S(   N(   R7  R   R<   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_in  s    c         C  s   |  j  d t  d  S(   NRl   (   R8  R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_in_npm  s    c         C  s   |  j  |  j j |  d  S(   N(   R7  R   R=   (   Rt   Rl   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_not_in  s    c         C  s   |  j  d t  d  S(   NRl   (   R:  R   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_not_in_npm  s    y            ?y             @y            ?(   RC   RD   RE   RF   RG   RH   (   RI   RJ   RM   RN   (   RK   RL   RO   RP   (   RQ   RR   (   R  R  (   R	  R
  (   R  R  R  R  R  R  (i   R>   R?   t   __doc__R   R   RB   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R#  R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   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.  R0  R1  R2  R3  R7  R8  R9  R:  R;  (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRk   t  s   









			

	
	
	
					
				!	!	!	  
0	"							t   TestOperatorModulec           B  s   e  Z e Z i e j d  6e j d 6e j d 6e j d 6e j	 d 6e j
 d 6e j d 6e j d 6e j d 6e j d	 6e j d
 6Z RS(   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R1   (   R>   R?   RA   R   RB   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R#  (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR>    s   









t   TestMixedIntsc           B  s7  e  Z d  Z e Z d d d d d d d d d	 d
 d d d g Z e j e j e j	 e j
 g Z g  e D] Z e j rd e ^ qd Z g  e D] Z e j s e ^ q Z e e j e e   Z g  e D]* \ Z Z e j s e j r e e f ^ q Z g  e D]* \ Z Z e j pe j s e e f ^ q Z d   Z d   Z d   Z d   Z d   Z e j d  Z e j d  Z  e j d  Z! e" d  d    Z# e" d  d    Z$ e" d  d    Z% d   Z& d   Z' d   Z( d   Z) d   Z* d   Z+ d    Z, d!   Z- d"   Z. d#   Z/ d$   Z0 d%   Z1 d&   Z2 RS('   s<   
    Tests for operator calls with mixed integer types.
    i    i   i   i
   i*   i   i'  iiiiiic         G  s<   t  d   | D  } t  | t j j  } t t d |  S(   Nc         s  s   |  ] } | j  j d  Vq d S(   i   N(   R   t   itemsize(   t   .0t   v(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pys	   <genexpr>  s    s   int%d(   t   maxR   t   intpt   bitwidthR   R   (   Rt   t   valsRE  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   get_numpy_signed_upcast  s    c         G  s<   t  d   | D  } t  | t j j  } t t d |  S(   Nc         s  s   |  ] } | j  j d  Vq d S(   i   N(   R   R@  (   RA  RB  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pys	   <genexpr>  s    s   uint%d(   RC  R   RD  RE  R   R   (   Rt   RF  RE  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   get_numpy_unsigned_upcast  s    c         C  s   t  t | j  |  S(   N(   R   R   R%  (   Rt   R   R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   get_typed_int  s    c           s%   t  t |       f d   } | S(   Nc           s+    j  |  |  }   | |   | |   S(   N(   RG  (   R   R   R   (   R   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   control_signed  s    (   R   RB   (   Rt   R  RJ  (    (   R   Rt   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   get_control_signed  s    c           s%   t  t |       f d   } | S(   Nc           s+    j  |  |  }   | |   | |   S(   N(   RH  (   R   R   R   (   R   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   control_unsigned  s    (   R   RB   (   Rt   R  RL  (    (   R   Rt   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   get_control_unsigned  s    c         K  s  | t  k r |  j d  n  x | D] \ } } t | | | f d t }	 |	 j }
 x t j | |  D] \ } } |  j | |  } |  j | |  } | | |  } |
 | |  } |  j | |  d | | | | f f } |  j	 | | d | | qf Wq# Wd  S(   Ns)   test irrelevant on this version of PythonRl   s#   mismatch for (%r, %r) with types %sRm   (
   Rj   Rn   R   R   Ro   Rp   Rq   RI  t   assertIsInstanceRs   (   Rt   Ru   t   control_funct   operandsR   t   expected_typet   assertPreciseEqualArgst   xtt   ytRz   R{   R   R   R   R~   Rm   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   run_binary  s    	c         C  s   | t  k r |  j d  n  x | D] } t | | f d t } | j } xn | D]f }	 |  j | |	  }	 | |	  }
 | |	  } |  j | |  |  j | |
 d d |	 | | |
 f qQ Wq# Wd  S(   Ns)   test irrelevant on this version of PythonRl   Rm   s&   mismatch for %r with type %s: %r != %r(   Rj   Rn   R   R   Ro   RI  RN  Rs   (   Rt   Ru   RO  RP  R   RQ  RS  Rz   R{   R   R   R~   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt	   run_unary  s    		c         C  sN   |  j  | |  j |  | |  j |  |  j  | |  j |  | |  j |  d  S(   N(   RU  RK  t   signed_pairsRM  t   unsigned_pairs(   Rt   Ru   R  t   samplesRQ  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_arith_binop1  s    R   c         C  s    |  j  |  j j d |  j  d  S(   NRC   (   RZ  R   R   t   int_samples(   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_add8  s    c         C  s    |  j  |  j j d |  j  d  S(   NRE   (   RZ  R   R   R[  (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_sub<  s    c         C  s    |  j  |  j j d |  j  d  S(   NRG   (   RZ  R   R   R[  (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_mul@  s    c         C  sE   g  |  j  D] } | d k r
 | ^ q
 } |  j |  j j d |  d  S(   Ni    RK   (   R[  RZ  R   R!   (   Rt   R   RY  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_floordivD  s    (c         C  sE   g  |  j  D] } | d k r
 | ^ q
 } |  j |  j j d |  d  S(   Ni    RO   (   R[  RZ  R   R#   (   Rt   R   RY  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_modH  s    (c           s     j  j } g    j D] } | d k r | ^ q }   j | d |    f d   } g    j D] } | d k r` | ^ q` } g    j D]* \ } } | j r | j r | | f ^ q }   j | | | |  d  S(   Ni    RQ   c           sn     j  |  |  } | d k r2 | |   | |  S| |   | |  } | d k rY d St j d |  Sd  S(   Ni    g      ?(   RG  R   RD  (   R   R   R   t   inv(   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRJ  T  s    (   R   R   R[  RZ  t
   type_pairst   signedRU  (   Rt   Ru   R   RY  RJ  t   uRB  RW  (    (   Rt   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_powL  s    (
($c      	   C  s   d   } g  |  j  D] } | d k r | ^ q } |  j j } |  j | | | |  j d t d d |  j | | | |  j d t d d d  S(   Nc         S  s   t  t |   t |   S(   N(   R   R   (   R   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   controle  s    i    RQ  t   prect   double(   R[  R   R   RU  RW  R   RX  (   Rt   Rf  R   RY  Ru   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_truedivd  s    	(c         C  s    |  j  |  j j d |  j  d  S(   NRY   (   RZ  R   R*   R[  (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_andr  s    c         C  s    |  j  |  j j d |  j  d  S(   NR[   (   RZ  R   R,   R[  (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_oru  s    c         C  s    |  j  |  j j d |  j  d  S(   NR]   (   RZ  R   R.   R[  (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_xorx  s    c           s  t  t |       f d   }    f d   }  j     f d   } g   j D]! \ } } | j r[ | | f ^ q[ } g   j D]! \ } } | j s | | f ^ q }	 x$ | D] \ }
 } | |
 | |  q Wx$ |	 D] \ }
 } | |
 | |  q Wd  S(   Nc           s+    j  |  |  }   | |   | |   S(   N(   RG  (   R   R   R   (   t   opfuncRt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRJ  }  s    c           s+    j  |  |  }   | |   | |   S(   N(   RH  (   R   R   R   (   Rm  Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRL    s    c           s   t    |  | f d t } | j } x  D] } |  j d } x d d d d | d | f D]w }  j |  |  }  j | |  } | | |  } | | |  }	 d | | |  | f f }
  j |	 | d |
 q[ Wq+ Wd  S(   NRl   i   i    i   i   s#   mismatch for (%r, %r) with types %sRm   (   R   R   Ro   RE  RI  Rs   (   RS  RT  RO  Rz   R{   R   t   maxshiftR   R   R~   Rm   (   Ru   RY  Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   check  s    	#(   R   RB   R[  Rb  Rc  (   Rt   Ru   R  RJ  RL  Ro  Rd  RB  RW  RX  RS  RT  (    (   Rm  Ru   RY  Rt   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   run_shift_binop{  s    	c         C  s   |  j  |  j j d  d  S(   NRU   (   Rp  R   R&   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_lshift  s    c         C  s   |  j  |  j j d  d  S(   NRW   (   Rp  R   R(   (   Rt   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_rshift  s    c         C  s;   d   } |  j  } |  j j } |  j | | | |  j  d  S(   Nc         S  s   |  S(   N(    (   R   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRf    s    (   R[  R   R5   RV  t	   int_types(   Rt   Rf  RY  Ru   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR3    s    		c           si     f d   }   f d   }   j  }   j j }   j | | |   j    j | | |   j  d  S(   Nc           s     j  |   } | |   S(   N(   RG  (   R   R   (   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRJ    s    c           s     j  |   } | |   S(   N(   RH  (   R   R   (   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRL    s    (   R[  R   R4   RV  t   signed_typest   unsigned_types(   Rt   RJ  RL  RY  Ru   (    (   Rt   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_unary_negative  s    	c           si     f d   }   f d   }   j  }   j j }   j | | |   j    j | | |   j  d  S(   Nc           s     j  |   } | |   S(   N(   RG  (   R   R   (   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRJ    s    c           s     j  |   } | |   S(   N(   RH  (   R   R   (   Rt   (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRL    s    (   R[  R   R2   RV  Rt  Ru  (   Rt   RJ  RL  RY  Ru   (    (   Rt   s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_invert  s    	(3   R>   R?   R<  R   R   R[  R   R(  t   uint8R   R   Rs  R   Rc  Rt  Ru  R  Rp   Rq   Rb  Rd  RB  RW  RX  RG  RH  RI  RK  RM  R   t	   INT_TYPESRU  RV  RZ  R
   R\  R]  R^  R_  R`  Re  Ri  Rj  Rk  Rl  Rp  Rq  Rr  R3  Rv  Rw  (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR?    sF   -""$$													(				t   TestMixedIntsOperatorModulec           B  s   e  Z e Z RS(    (   R>   R?   RA   R   (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyRz    s   t   TestStaticPowerc           B  s)   e  Z d  Z d   Z d   Z d   Z RS(   s`   
    Test the ** operator with a static exponent, to exercise a
    dedicated optimization.
    c         C  s   x | D] } t  j } t |  } t d t  |  } t d t  |  } xw | D]o } y | | |  }	 Wn1 t k
 r |  j t   | |  Wd  QXqS X| |  }
 |  j |	 |
 d d qS Wq Wd  S(   NR   Rg  Rh  (   R   R   R   R   R   R   R   Rs   (   Rt   t	   exponentsR  R   t   regular_funct   static_funct   static_cfunct   regular_cfuncRB  R   R~   (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   _check_pow  s    	c      	   C  sb   d d d d d d d d d	 g	 } d d d d d
 t  j d	  t  j d  g } |  j | |  d  S(   Ni   i   i   i   i   i    iiiii   (   R   R(  t   uint16R  (   Rt   R|  RF  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_int_values  s    !-c         C  sh   d d d d d d d d d	 d
 d g } d d d t  j d  t d  t d  g } |  j | |  d  S(   Ni   i   i   i   i   i    iiii ig      ?g      
@g      g       t   inft   nan(   R   R   R   R  (   Rt   R|  RF  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_real_values  s    '-(   R>   R?   R<  R  R  R  (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR{    s   		t   TestStringConstComparisonc           B  s    e  Z d  Z d   Z d   Z RS(   s-   
    Test comparison of string constants
    c         C  sl   d   } d   } t  d t  |  } t  d t  |  } |  j |   |    |  j |   |    d  S(   Nc          S  s   d }  |  d k S(   Nt   test(    (   t   s(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   test_impl1  s    c          S  s   d }  |  d k S(   Nt   test1R  (    (   R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt
   test_impl2  s    R   (   R   R   R   (   Rt   R  R  t   cfunc1t   cfunc2(    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_eq  s    		c         C  sl   d   } d   } t  d t  |  } t  d t  |  } |  j |   |    |  j |   |    d  S(   Nc          S  s   d }  |  d k S(   NR  (    (   R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR    s    c          S  s   d }  |  d k S(   NR  R  (    (   R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR    s    R   (   R   R   R   (   Rt   R  R  R  R  (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   test_neq  s    		(   R>   R?   R<  R  R  (    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyR    s   	t   __main__(1   t
   __future__R    Rr   Rp   RB   t   syst   warningst   numpyR   t   numba.unittest_supportt   unittest_supportt   unittestt   numba.compilerR   R   t   numbaR   R   R   R   R   t   numba.configR   t   supportR	   R
   t   true_div_usecaseR   R   R   R   R   R   R   R   R   t   setR   t   objectR   RA   Rk   R>  R?  Rz  R{  R  R>   t   main(    (    (    s9   lib/python2.7/site-packages/numba/tests/test_operators.pyt   <module>   s<   ((			   Z$ 