ó
Û³Y]c           @` sF  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 m
 Z
 d  d l m Z m Z d  d l j j Z d d l m Z m Z m Z m Z m Z m Z m Z d d l m Z d d	 l m Z m Z m Z m Z d
 „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% e e& e j' e j' ƒ d „  ƒ Z( e e j) e j' e j' ƒ e e j* e j' e j' ƒ d „  ƒ ƒ Z+ e j, sÓe e j- e j' e j' ƒ e+ ƒ e e j. e j' e j' ƒ e+ ƒ n  e e j/ e j' e j' ƒ e e j0 e j' e j' ƒ d „  ƒ ƒ Z1 e e j2 e j' e j' ƒ e e j3 e j' e j' ƒ d „  ƒ ƒ Z4 d „  Z5 d „  Z6 e e j7 e j' e j8 ƒ e e j9 e j' e j8 ƒ e e j7 e j: e j8 ƒ e e j9 e j: e j8 ƒ d „  ƒ ƒ ƒ ƒ Z; d „  Z< d „  Z= d „  Z> d „  Z? d „  Z@ d „  ZA d „  ZB d „  ZC d  „  ZD d! „  ZE d" „  ZF d# „  ZG d$ „  ZH d% „  ZI d& „  ZJ d' „  ZK d( „  ZL d) „  ZM d* „  ZN d+ „  ZO d, „  ZP d- „  ZQ d. „  ZR e e jS e jT e jT ƒ eD ƒ e e jU e jT e jT ƒ eE ƒ e e jV e jT e jT ƒ e@ ƒ e e jW e jT e jT ƒ eA ƒ e e jX e jT e jT ƒ eB ƒ e e jY e jT e jT ƒ eC ƒ e e jZ e jT ƒ eQ ƒ e e j[ e jT ƒ eR ƒ d/ „  Z\ d0 „  Z] e\ ƒ  e] ƒ  d1 „  Z^ d2 „  Z_ d3 „  Z` d4 „  Za d5 „  Zb d6 „  Zc e e& e j: e j: ƒ d d7 „ ƒ Ze d d8 „ Zf d d9 „ Zg d: „  Zh d; „  Zi d< „  Zj d= „  Zk d> „  Zl d? „  Zm d@ „  Zn dA „  Zo dB „  Zp dC „  Zq dD „  Zr e j: Zs e e jt es es ƒ e^ ƒ e e ju es es ƒ e^ ƒ e e jv es es ƒ e_ ƒ e e jw es es ƒ e_ ƒ e e jx es es ƒ e` ƒ e e jy es es ƒ e` ƒ e e j) es es ƒ eg ƒ e e j* es es ƒ eg ƒ e e j/ es es ƒ ea ƒ e e j0 es es ƒ ea ƒ e j, sÉe e j- es es ƒ ea ƒ e e j. es es ƒ ea ƒ n  e e j2 es es ƒ ef ƒ e e j3 es es ƒ ef ƒ e e j7 es es ƒ eh ƒ e e j9 es es ƒ eh ƒ e e7 es es ƒ eh ƒ e e jS es es ƒ em ƒ e e jU es es ƒ en ƒ e e jV es es ƒ ei ƒ e e jW es es ƒ ej ƒ e e jX es es ƒ ek ƒ e e jY es es ƒ el ƒ e ez es ƒ eo ƒ e e jZ es ƒ ep ƒ e e j[ es ƒ eq ƒ [s e e j{ dE ƒ dF „  ƒ Z| e e j{ dG ƒ dH „  ƒ Z} e dI e j{ ƒ dJ „  ƒ Z~ dK „  Z dL „  Z€ dM „  Z xS e j: e j' f D]? Z‚ e e‚ dE ƒ e ƒ e e‚ dG ƒ e€ ƒ e dI e‚ ƒ e ƒ qšWe e j7 e j{ e j{ ƒ e e j9 e j{ e j{ ƒ e e7 e j{ e j{ ƒ dN „  ƒ ƒ ƒ Zƒ dO „  Z„ dP „  Z… dQ „  Z† e‡ dR ƒ Zˆ dS „  Z‰ dT „  ZŠ dU „  Z‹ dV „  ZŒ dW „  Z dX „  ZŽ e j{ Zs e e jt es es ƒ e„ ƒ e e ju es es ƒ e„ ƒ e e jv es es ƒ e… ƒ e e jw es es ƒ e… ƒ e e jx es es ƒ e† ƒ e e jy es es ƒ e† ƒ e e j/ es es ƒ e‰ ƒ e e j0 es es ƒ e‰ ƒ e j, s 
e e j- es es ƒ e‰ ƒ e e j. es es ƒ e‰ ƒ n  e e jZ es ƒ eŠ ƒ e e j[ es ƒ e‹ ƒ e e jS es es ƒ eŒ ƒ e e jU es es ƒ e ƒ e ez es ƒ eŽ ƒ [s e dY e j ƒ e dY e j ƒ dZ „  ƒ ƒ Z‘ d[ „  Z’ e e“ e jT ƒ d\ „  ƒ Z” e e“ e j' ƒ d] „  ƒ Z• e e“ e j: ƒ d^ „  ƒ Z– e e“ e j{ ƒ d_ „  ƒ Z— x6 e j' e j: e j{ f D] Zs e e j˜ es ƒ e’ ƒ qÏWe e j˜ e jT ƒ e’ ƒ e e™ e j' ƒ e e™ e j ƒ d` „  ƒ ƒ Zš e e™ e j: ƒ da „  ƒ Z› e e™ e j{ ƒ db „  ƒ Zœ e e j8 e j' ƒ e e j8 e j: ƒ e e j8 e j{ ƒ dc „  ƒ ƒ ƒ Z e e j' e j' ƒ dd „  ƒ Zž e e j' e jŸ ƒ de „  ƒ Z  e e j: e j: ƒ df „  ƒ Z¡ e e j' e j: ƒ dg „  ƒ Z¢ e e j: e j' ƒ dh „  ƒ Z£ e e j: e j{ ƒ e e j' e j{ ƒ di „  ƒ ƒ Z¤ e e j{ e j{ ƒ dj „  ƒ Z¥ e e j¦ e j ƒ dk „  ƒ Z§ e e j e j ƒ dl „  ƒ Z¨ e e j8 e j ƒ dm „  ƒ Z© e e j{ ƒ dn „  ƒ Zª e e j' ƒ e e j: ƒ e e j ƒ do „  ƒ ƒ ƒ Z« d S(p   i    (   t   print_functiont   absolute_importt   divisionN(   t   ir(   t   Typet   Constanti   (   t   lower_builtint   lower_getattrt   lower_getattr_generict
   lower_castt   lower_constantt   impl_ret_borrowedt   impl_ret_untracked(   t   optionali   (   t   typingt   typest   cgutilst   utilsc         C` s   |  j  r d g Sg  Sd S(   s;   
    Return the modifier flags for integer arithmetic.
    t   nswN(   t   signed(   t   rettype(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   _int_arith_flags   s    	c         C` sˆ   | \ } } | j  \ } } |  j | | | | j ƒ } |  j | | | | j ƒ }	 | j | |	 d t | j ƒ ƒ}
 t |  | | j |
 ƒ S(   Nt   flags(   t   argst   castt   return_typet   addR   R   (   t   contextt   buildert   sigR   t   vat   vbt   tat   tbt   at   bt   res(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_add_impl%   s    !c         C` sˆ   | \ } } | j  \ } } |  j | | | | j ƒ } |  j | | | | j ƒ }	 | j | |	 d t | j ƒ ƒ}
 t |  | | j |
 ƒ S(   NR   (   R   R   R   t   subR   R   (   R   R   R   R   R   R   R    R!   R"   R#   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_sub_impl.   s    !c         C` sˆ   | \ } } | j  \ } } |  j | | | | j ƒ } |  j | | | | j ƒ }	 | j | |	 d t | j ƒ ƒ}
 t |  | | j |
 ƒ S(   NR   (   R   R   R   t   mulR   R   (   R   R   R   R   R   R   R    R!   R"   R#   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_mul_impl7   s    !c         C` sÜ  | j  | j  k s t ‚ | j  d ƒ } | j  d ƒ } t j | | ƒ } t j | | ƒ } | j | j d | | j  | j ƒ ƒ | j d | | j  d ƒ ƒ ƒ }	 | j | j |	 ƒ d t	 ƒ| j
 | | ƒ }
 | j | | ƒ } | j d | j | | ƒ | ƒ } | j d | | ƒ } | j | | ƒ } | j | ƒ  \ } } | % | j |
 | ƒ | j | | ƒ Wd QX| = | j | j |
 | ƒ | ƒ | j | j | | ƒ | ƒ Wd QXWd QXWd QX| j | ƒ | j | ƒ f S(	   s@  
    Reference Objects/intobject.c
    xdivy = x / y;
    xmody = (long)(x - (unsigned long)xdivy * y);
    /* If the signs of x and y differ, and the remainder is non-0,
     * C89 doesn't define whether xdivy is now the floor or the
     * ceiling of the infinitely precise quotient.  We want the floor,
     * and we have it iff the remainder's sign matches y's.
     */
    if (xmody && ((y ^ xmody) < 0) /* i.e. and signs differ */) {
        xmody += y;
        --xdivy;
        assert(xmody && ((y ^ xmody) >= 0));
    }
    *p_xdivy = xdivy;
    *p_xmody = xmody;
    i    i   s   ==iÿÿÿÿt   likelyt   <s   !=N(   t   typet   AssertionErrorR   t   alloca_once_valuet   and_t   icmp_signedt   minvalt   if_thent   not_t   Truet   sdivt   sremt   xort   if_elset   storeR&   R   t   load(   R   R   t   tyt   xt   yt   ZEROt   ONEt   resdivt   resmodt   is_overflowt   xdivyt   xmodyt   y_xor_xmody_ltzt   xmody_istruet   condt   if_different_signst   if_same_signs(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_divmod_signed@   s,    !!.c         C` sE   | j  r t |  | | | | ƒ S| j | | ƒ | j | | ƒ f Sd S(   sD   
    Integer divmod(x, y).  The caller must ensure that y != 0.
    N(   R   RJ   t   udivt   urem(   R   R   R;   R<   R=   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt
   int_divmody   s    	c         C` su  | \ } } | j  \ } } | j }	 t |	 t j ƒ rB |	 j }	 n  |  j | | | |	 ƒ }
 |  j | | | |	 ƒ } t j | |
 j	 d d ƒ} t j | |
 j	 d d ƒ} | j
 t j | | ƒ d t ƒ  \ } } | @ |  j j | | f ƒ s| j | | ƒ | j | | ƒ n  Wd  QX| C t |  | |	 |
 | ƒ \ } } | j | | ƒ | j | | ƒ Wd  QXWd  QX| | f S(   Nt   namet   quott   remR*   (   R   R   t
   isinstanceR   t   UniTuplet   dtypeR   R   t   alloca_onceR,   R8   t   is_scalar_zerot   Falset   error_modelt   fp_zero_divisionR9   RM   (   R   R   R   R   t   zerodiv_messageR   R   R    R!   R;   R"   R#   RO   RP   t   if_zerot   if_non_zerot   qt   r(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   _int_divmod_implƒ   s*    	!		c         C` sF   t  |  | | | d ƒ \ } } t j | | j | ƒ | j | ƒ f ƒ S(   Ns   integer divmod by zero(   R^   R   t
   pack_arrayR:   (   R   R   R   R   RO   RP   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_divmod_impl¡   s    	c         C` s+   t  |  | | | d ƒ \ } } | j | ƒ S(   Ns   integer division by zero(   R^   R:   (   R   R   R   R   RO   RP   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_floordiv_implª   s    c         C` s¥   | \ } } | j  \ } } |  j | | | | j ƒ } |  j | | | | j ƒ }	 t j | |	 ƒ  |  j j | d ƒ Wd  QX| j | |	 ƒ }
 t |  | | j |
 ƒ S(   Ns   division by zero(   s   division by zero(	   R   R   R   R   RZ   RW   RX   t   fdivR   (   R   R   R   R   R   R   R    R!   R"   R#   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_truediv_impl·   s    c         C` s+   t  |  | | | d ƒ \ } } | j | ƒ S(   Ns   integer modulo by zero(   R^   R:   (   R   R   R   R   RO   RP   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_rem_implÄ   s    c         C` s6   t  | t j ƒ r. |  j j r. d | j d >St Sd  S(   Niÿÿÿÿi   (   RQ   R   t   IntegerRW   t   raise_on_fp_zero_divisiont   bitwidthRV   (   R   R   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   _get_power_zerodiv_returnÌ   s    c         ` st   t  | j d t j ƒ ‰  | j ‰ t |  ˆ ƒ ‰ ‡  ‡ ‡ f d †  } |  j | | | | ƒ } t |  | | j | ƒ S(   s@   
    a ^ b, where a is an integer or real, and b an integer
    i    c         ` s  ˆ d ƒ } ˆ |  ƒ }  | d k  r“ t  } | } | d k  rF t ‚ n  ˆ  rŸ |  d k rq ˆ rb ˆ St d ƒ ‚ n  |  d k r |  d k r d SqŸ n t } | } | d k rÁ t j |  t | ƒ ƒ Sx; | d k rþ | d @rç | |  9} n  | d L} |  |  9}  qÄ W| rd | S| S(   Ni   i    s&   0 cannot be raised to a negative poweriÿÿÿÿi   g      ð?(   R4   t   OverflowErrort   ZeroDivisionErrorRV   t   matht   powt   float(   R"   R#   R]   t   invertt   exp(   t
   is_integert   tpt   zerodiv_return(    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt	   int_powerÝ   s0    	


(   RQ   R   R   Re   R   Rh   t   compile_internalR   (   R   R   R   R   Rs   R$   (    (   Rp   Rq   Rr   s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_power_implÕ   s    	c         ` su  | j  d j } t | t j ƒ s+ t ‚ n  t | ƒ d k rF t ‚ n  | d k  } t | ƒ } | j } t | t j	 ƒ ‰ t
 |  | ƒ ‰ |  j ˆ  | d | j  d | ƒ } | j } ‡  ‡ f d †  }	 | d ƒ }
 | } xE | d k r| d @r|	 |
 | ƒ }
 n  | d L} |	 | | ƒ } qÛ W| rqˆ r>‡ f d †  } n	 d „  } |  j ˆ  | t j | | ƒ |
 f ƒ }
 n  |
 S(   sH   
    a ^ b, where a is an integer or real, and b a constant integer
    i   i   i    c         ` s*   ˆ r ˆ  j  |  | ƒ Sˆ  j |  | ƒ Sd  S(   N(   R(   t   fmul(   R"   R#   (   R   Rp   (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyR(     s    c         ` sI   |  d k r% ˆ  r ˆ  St  d ƒ ‚ n  |  d k rA |  d k rA d S|  Sd  S(   Ni    s&   0 cannot be raised to a negative poweri   iÿÿÿÿ(   Rj   (   R"   (   Rr   (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   invert_impl+  s    c         S` s   d |  S(   Ng      ð?(    (   R"   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyRw   8  s    (   R   t   valueRQ   t   numberst   Integralt   NotImplementedErrort   absR   R   Re   Rh   R   R,   Rt   R   t	   signature(   R   R   R   R   Ro   Rn   Rq   t   valt   ltyR(   R$   R"   Rw   (    (   R   Rp   Rr   s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   static_power_impl   s6    			#	

	c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   t   icmpt   lct   ICMP_SLTR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_slt_implA  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_SLER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_sle_implF  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_SGTR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_sgt_implK  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_SGER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_sge_implP  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_ULTR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_ult_implU  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_ULER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_ule_implZ  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_UGTR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_ugt_impl_  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_UGER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_uge_impld  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_EQR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_eq_impli  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R   R‚   t   ICMP_NER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_ne_impln  s    c   	      C` sm   | \ } t  j | j ƒ } | j t j | | ƒ } | j | ƒ } | j | | | ƒ } t |  | | j	 | ƒ S(   N(
   R   t   nullR,   R   R‚   Rƒ   t   negt   selectR   R   (	   R   R   R   R   R<   R>   t   ltzt   negatedR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_abs_impls  s    	c         C` s   | \ } t  |  | | j | ƒ S(   N(   R   R   (   R   R   R   R   R<   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   uint_abs_impl|  s    	c   	      C` sy   | j  \ } } | \ } } |  j | | | | j ƒ } |  j | | | | j ƒ } | j | | ƒ } t |  | | j | ƒ S(   N(   R   R   R   t   shlR   (	   R   R   R   R   t   valtyt   amttyR~   t   amtR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_shl_impl  s    c   	      C` sš   | j  \ } } | \ } } |  j | | | | j ƒ } |  j | | | | j ƒ } | j j rr | j | | ƒ } n | j | | ƒ } t |  | | j | ƒ S(   N(   R   R   R   R   t   ashrt   lshrR   (	   R   R   R   R   RŸ   R    R~   R¡   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_shr_implŠ  s    c         C` sy   | j  \ } } | \ } } |  j | | | | j ƒ } |  j | | | | j ƒ }	 | j | |	 ƒ }
 t |  | | j |
 ƒ S(   N(   R   R   R   R/   R   (   R   R   R   R   t   att   btt   avt   bvt   cavt   cbcR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_and_impl–  s    c         C` sy   | j  \ } } | \ } } |  j | | | | j ƒ } |  j | | | | j ƒ }	 | j | |	 ƒ }
 t |  | | j |
 ƒ S(   N(   R   R   R   t   or_R   (   R   R   R   R   R¦   R§   R¨   R©   Rª   R«   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_or_implŸ  s    c         C` sy   | j  \ } } | \ } } |  j | | | | j ƒ } |  j | | | | j ƒ }	 | j | |	 ƒ }
 t |  | | j |
 ƒ S(   N(   R   R   R   R7   R   (   R   R   R   R   R¦   R§   R¨   R©   Rª   R«   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_xor_impl¨  s    c         C` sU   | j  \ } | \ } | j | ƒ } |  j | | | | j ƒ } t |  | | j | ƒ S(   N(   R   R˜   R   R   R   (   R   R   R   R   t   typR~   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_negate_impl±  s
    	c         C` sF   | j  \ } | \ } |  j | | | | j ƒ } t |  | | j | ƒ S(   N(   R   R   R   R   (   R   R   R   R   R°   R~   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_positive_implº  s    	c         C` sd   | j  \ } | \ } | j | t j | j ƒ ƒ } |  j | | | | j ƒ } t |  | | j | ƒ S(   N(   R   R7   R   t   all_onesR,   R   R   R   (   R   R   R   R   R°   R~   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_invert_implÁ  s
    	c      
   C` sß  | \ } t  j | j d ƒ } t  j | j d ƒ } t  j | j d ƒ } | j t j | | ƒ } | j t j | | ƒ }	 t j | | j ƒ }
 | j	 d ƒ } | j	 d ƒ } | j	 d ƒ } | j	 d ƒ } | j	 d ƒ } | j
 | | | ƒ | j | ƒ " | j | |
 ƒ | j | ƒ Wd	 QX| j | ƒ  | j
 |	 | | ƒ Wd	 QX| j | ƒ " | j | |
 ƒ | j | ƒ Wd	 QX| j | ƒ " | j | |
 ƒ | j | ƒ Wd	 QX| j | ƒ | j |
 ƒ } t |  | | j | ƒ S(
   s   
    np.sign(int)
    i   iÿÿÿÿi    s   .zeros   .postests   .poss   .negs   .exitN(   R   t   intR,   R   R‚   R“   R‡   R   RT   t   append_basic_blockt   cbrancht
   goto_blockR9   t   brancht   position_at_endR:   R   R   (   R   R   R   R   R<   t   POSt   NEGR>   t   cmp_zerot   cmp_post   presultt   bb_zerot
   bb_postestt   bb_post   bb_negt   bb_exitR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_sign_implÊ  s6    	c         C` sU   | j  \ } | \ } |  j | | | | j ƒ } | j | ƒ } t |  | | j | ƒ S(   N(   R   R   R   R˜   R   (   R   R   R   R   R°   R~   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   bool_negate_implô  s
    	c         C` sF   | j  \ } | \ } |  j | | | | j ƒ } t |  | | j | ƒ S(   N(   R   R   R   R   (   R   R   R   R   R°   R~   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   bool_unary_positive_implü  s    	c          C` sá  t  j }  t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j	 |  |  ƒ t ƒ t t j
 |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  ƒ t ƒ t t j |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t |  |  ƒ t ƒ xÙ t  j D]Î }  t t j |  |  ƒ t  ƒ t t j! |  |  ƒ t" ƒ t t j# |  |  ƒ t$ ƒ t t j% |  |  ƒ t& ƒ t t j t  j' |  ƒ t ƒ t t j t  j' |  ƒ t ƒ t t t  j' |  ƒ t ƒ t t( |  ƒ t) ƒ q³Wt t j t  j* t  j* ƒ t+ ƒ t t j# t  j* t  j* ƒ t+ ƒ t t j! t  j* t  j* ƒ t+ ƒ t t j% t  j* t  j* ƒ t+ ƒ xÙ t  j, D]Î }  t t j |  |  ƒ t+ ƒ t t j! |  |  ƒ t- ƒ t t j# |  |  ƒ t. ƒ t t j% |  |  ƒ t/ ƒ t t j t  j' |  ƒ t ƒ t t j t  j' |  ƒ t ƒ t t t  j' |  ƒ t ƒ t t( |  ƒ t0 ƒ qWd  S(   N(1   R   Re   R   t   operatorR   R%   t   iaddR&   R'   t   isubR(   R)   t   imult   eqR”   t   neR–   t   lshiftR¢   t   ilshiftt   rshiftR¥   t   irshiftR˜   R±   t   posR²   Rl   Ru   t   ipowt   unsigned_domaint   ltRŒ   t   leRŽ   t   gtR   t   geR’   t   FloatR|   R   t   IntegerLiteralR„   t   signed_domainR†   Rˆ   RŠ   Rœ   (   R;   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   _implement_integer_operators  sP    	c          C` sÍ   xÆ t  j t  j f D]² }  t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t	 ƒ t t j
 |  |  ƒ t	 ƒ t t j |  |  ƒ t ƒ t t j |  |  ƒ t ƒ t t j |  ƒ t ƒ q Wd  S(   N(   R   t   BooleanRe   R   RÈ   R/   R¬   t   iandR­   R®   t   iorR7   R¯   t   ixorRn   R´   (   R;   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   _implement_bitwise_operators=  s    c         C` s%   | j  | Œ  } t |  | | j | ƒ S(   N(   t   faddR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_add_implM  s    c         C` s%   | j  | Œ  } t |  | | j | ƒ S(   N(   t   fsubR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_sub_implR  s    c         C` s%   | j  | Œ  } t |  | | j | ƒ S(   N(   Rv   R   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_mul_implW  s    c         C` sU   t  j | | d ƒ  |  j j | d ƒ Wd  QX| j | Œ  } t |  | | j | ƒ S(   Ni   s   division by zero(   s   division by zero(   R   RZ   RW   RX   Rb   R   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_div_impl\  s    c         C` s2  | j  | j  k s t ‚ | j  } | j } |  j d | j  g ƒ } t j | | | t j | ƒ f ƒ } | j | | ƒ } | j rò t	 j
 | _ t	 j | j d ƒ ƒ }	 | j \ }
 } } t |  |	 |
 | ƒ \ } } |	 j | | ƒ |	 j | ƒ n  t j | | ƒ } | j | | | | f ƒ } | | j | ƒ f S(   Ns   .numba.python.remt   entry(   R,   R-   t   modulet   manglerR   t   functiont   pointert   get_or_insert_functiont   is_declarationR‚   t   LINKAGE_LINKONCE_ODRt   linkaget   BuilderR¶   R   t   real_divmod_func_bodyR9   t   retR   RT   t   callR:   (   R   R   R<   R=   t   floattyRé   t   fnamet   fntyt   fnt	   fnbuildert   fxt   fyt   pmodt   divt   modt   quotient(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_divmodc  s     		$	c         C` sb  t  j | | j ƒ } t  j | | j ƒ } t  j | | j ƒ } | j | | ƒ } | j | j | | ƒ | ƒ } | j | | ƒ | j | | ƒ | j d ƒ }	 | j d ƒ }
 | j d ƒ } | j d | |	 ƒ } | j d | |	 ƒ } | j d | |	 ƒ } | j	 | d t
 ƒ² \ } } | k | j t j | | ƒ } | j | ƒ = | j | j | | ƒ | ƒ | j | j | | ƒ | ƒ Wd  QXWd  QX| * | j | |
 |	 ƒ } | j | | ƒ Wd  QXWd  QX~ ~ | j | ƒ } | j t j | |	 ƒ } | j | ƒ Û i t j d 6t j d 6} | t | j ƒ } |  j t j t j | | ƒ ƒ } | | | g ƒ } | j | | ƒ } | j | | ƒ } t j | j d	 ƒ } | j t j | | ƒ } | j | | | ƒ } | j | | ƒ Wd  QXt  j  | | ƒ U | j! | | ƒ } | j | | ƒ | j | j! | | ƒ | ƒ } | j | | ƒ Wd  QX| j | ƒ | j | ƒ f S(
   Ng        g       €g      ð?s   !=R+   R*   Rm   t   doubleg      à?("   R   RT   R,   t   fremRb   Rä   R9   t   fcmp_unorderedt   fcmp_orderedR8   R4   R   R‚   R•   R2   Râ   R™   R:   t   fcmpt   FCMP_ONER   t   float32t   float64t   strt   get_functionRk   t   floorR   R}   R   t   realt   FCMP_OGTt   ifnotRv   (   R   R   t   vxt   wxRü   t   pdivt	   pfloordivRþ   Rý   R>   t   NZEROR?   t
   mod_istruet   wx_ltzt   mod_ltzt   if_nonzero_modt   if_zero_modt   wx_ltz_ne_mod_ltzt
   div_istruet   realtypemapt   realtypet   floorfnt   floordivt   floordivdifft   floordivincrt   HALFt   pred(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyRò   y  sX    .(c         C` sN  | \ } } t  j | | j d d ƒ} t  j | | j d d ƒ} | j t  j | | ƒ d t ƒÁ \ }	 }
 |	 d |  j j | d | ƒ sÒ | j | | ƒ } | j	 | | ƒ } | j
 | | ƒ | j
 | | ƒ n  Wd  QX|
 @ t |  | | | ƒ \ } } | j
 | | ƒ | j
 | | ƒ Wd  QXWd  QXt  j | | j | ƒ | j | ƒ f ƒ S(   NRN   RO   RP   R*   s   modulo by zero(   s   modulo by zero(   R   RT   R,   R8   RU   RV   RW   RX   Rb   R  R9   R   R_   R:   (   R   R   R   R   t   locR<   R=   RO   RP   RZ   R[   R\   R]   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_divmod_implå  s$    !			c         C` sò   | \ } } t  j | | j ƒ } | j t  j | | ƒ d t ƒ \ } }	 | B |  j j | d | ƒ s | j | | ƒ }
 | j	 |
 | ƒ n  Wd  QX|	 0 t
 |  | | | ƒ \ } }
 | j	 |
 | ƒ Wd  QXWd  QXt |  | | j | j | ƒ ƒ S(   NR*   s   modulo by zero(   s   modulo by zero(   R   RT   R,   R8   RU   RV   RW   RX   R  R9   R   R   R   R:   (   R   R   R   R   R#  R<   R=   R$   RZ   R[   RP   t   _(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_mod_implÿ  s    !		c         C` sò   | \ } } t  j | | j ƒ } | j t  j | | ƒ d t ƒ \ } }	 | B |  j j | d | ƒ s | j | | ƒ }
 | j	 |
 | ƒ n  Wd  QX|	 0 t
 |  | | | ƒ \ }
 } | j	 |
 | ƒ Wd  QXWd  QXt |  | | j | j | ƒ ƒ S(   NR*   s   division by zero(   s   division by zero(   R   RT   R,   R8   RU   RV   RW   RX   Rb   R9   R   R   R   R:   (   R   R   R   R   R#  R<   R=   R$   RZ   R[   RO   R%  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_floordiv_impl  s    !		c   
      C` s”   | \ } } | j  } |  j rE |  j t j | ƒ } | | | ƒ } n9 t j j | t j | j	 g ƒ }	 | j
 |	 | | f ƒ } t |  | | j | ƒ S(   N(   Ré   t   implement_powi_as_math_callR
  Rk   Rl   R‚   t   Functiont	   intrinsict   INTR_POWR,   Rô   R   R   (
   R   R   R   R   R<   R=   Ré   t   impR$   Rø   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_power_impl%  s    		!c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R  R‚   t   FCMP_OLTR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_lt_impl1  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R  R‚   t   FCMP_OLER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_le_impl6  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R  R‚   R  R   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_gt_impl;  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R  R‚   t   FCMP_OGER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_ge_impl@  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R  R‚   t   FCMP_OEQR   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_eq_implE  s    c         C` s+   | j  t j | Œ } t |  | | j | ƒ S(   N(   R  R‚   t   FCMP_UNER   R   (   R   R   R   R   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_ne_implJ  s    c         C` s@   | j  \ } t j | | ƒ } |  j t j | ƒ } | | | ƒ S(   N(   R   R   R}   R
  Rk   t   fabs(   R   R   R   R   R;   t   impl(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_abs_implO  s    c         C` s<   d d l  m } | j | | d ƒ } t |  | | j | ƒ S(   Ni   (   t   mathimpli    (   t    R<  t   negate_realR   R   (   R   R   R   R   R<  R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_negate_implV  s    c         C` sF   | j  \ } | \ } |  j | | | | j ƒ } t |  | | j | ƒ S(   N(   R   R   R   R   (   R   R   R   R   R°   R~   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_positive_impl\  s    	c         C` sR  | \ } t  j | j d ƒ } t  j | j d ƒ } t  j | j d ƒ } t j | | j ƒ } | j t j | | ƒ }	 | j t j | | ƒ }
 | j	 |	 ƒ  \ } } |  | j
 | | ƒ Wd QX| ] | j	 |
 ƒ G \ } } |  | j
 | | ƒ Wd QX|  | j
 | | ƒ Wd QXWd QXWd QXWd QX| j | ƒ } t |  | | j | ƒ S(   s   
    np.sign(float)
    i   iÿÿÿÿi    N(   R   R  R,   R   RT   R  R‚   R  R.  R8   R9   R:   R   R   (   R   R   R   R   R<   R»   R¼   R>   R¿   t   is_post   is_negt   gt_zerot   not_gt_zerot   lt_zerot   not_lt_zeroR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_sign_implc  s$    	(R  c         C` s4   |  j  | | d | ƒ} | j } t |  | | | ƒ S(   NRx   (   t   make_complexR  R   (   R   R   R°   Rx   t   cplxR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_real_impl§  s    	t   imagc         C` s4   |  j  | | d | ƒ} | j } t |  | | | ƒ S(   NRx   (   RH  RK  R   (   R   R   R°   Rx   RI  R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_imag_impl­  s    	s   complex.conjugatec         C` sj   d d l  m } |  j | | j d | d ƒ } | j | | j ƒ | _ | j ƒ  } t |  | | j | ƒ S(   Ni   (   R<  i    (	   R=  R<  RH  R   R>  RK  t	   _getvalueR   R   (   R   R   R   R   R<  t   zR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_conjugate_impl³  s
     c         C` s   t  |  | | | ƒ S(   N(   R   (   R   R   R°   Rx   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_real_impl»  s    c         C` s%   t  j | j ƒ } t |  | | | ƒ S(   N(   R   t   get_null_valueR,   R   (   R   R   R°   Rx   R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_imag_impl¾  s    c         C` s   t  |  | | j | d ƒ S(   Ni    (   R   R   (   R   R   R   R   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_conjugate_implÂ  s    c         C` s  | \ } } | j  d } | j } |  j | | d | ƒ} |  j | | d | ƒ}	 |  j | | ƒ }
 | j } | j ƒ  } |	 j ƒ  } |
 j ƒ  } |  j | d ƒ } |  j | d ƒ } | j d |	 j | ƒ } | j d |	 j | ƒ } | j	 | | ƒ } | j
 | ƒ à \ } } | P t |  | | | | f ƒ } |  j | | d | ƒ} | j |
 _ | j |
 _ Wd  QX| s i d t j 6d t j 6| } t j t j ƒ  | j g d ƒ } | j | d | ƒ} | j | | | | f ƒ Wd  QXWd  QX| j | ƒ } t |  | | j | ƒ S(	   Ni    Rx   i   s   ==t   numba_cpowft
   numba_cpowi   RN   (   R   t   underlying_floatt   make_helperRé   t   _getpointert   get_constantR  R  RK  R/   R8   t   complex_mul_implR   t	   complex64t
   complex128R   Rë   t   voidR,   Rí   Rô   R:   R   R   (   R   R   R   R   t   cat   cbR;   t   ftyR"   R#   t   cRé   t   pat   pbt   pct   TWOR>   t   b_real_is_twot   b_imag_is_zerot   b_is_twot   thent	   otherwiseR$   t   crest	   func_nameR÷   t   cpow(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_power_implË  s>    		

"%c         C` sË   | \ } } | j  d } |  j | | d | ƒ} |  j | | d | ƒ} |  j | | ƒ }	 | j }
 | j } | j } | j } | j |
 | ƒ |	 _ | j | | ƒ |	 _ |	 j ƒ  } t |  | | j | ƒ S(   Ni    Rx   (   R   RH  R  RK  Râ   RM  R   R   (   R   R   R   R   t   cxt   cyR;   R<   R=   RN  R"   R#   Ra  t   dR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_add_impl÷  s    				c         C` sË   | \ } } | j  d } |  j | | d | ƒ} |  j | | d | ƒ} |  j | | ƒ }	 | j }
 | j } | j } | j } | j |
 | ƒ |	 _ | j | | ƒ |	 _ |	 j ƒ  } t |  | | j | ƒ S(   Ni    Rx   (   R   RH  R  RK  Rä   RM  R   R   (   R   R   R   R   Ro  Rp  R;   R<   R=   RN  R"   R#   Ra  Rq  R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_sub_impl  s    				c         C` s  | \ } } | j  d } |  j | | d | ƒ} |  j | | d | ƒ} |  j | | ƒ }	 | j }
 | j } | j } | j } | j |
 | ƒ } | j | | ƒ } | j |
 | ƒ } | j | | ƒ } | j | | ƒ |	 _ | j | | ƒ |	 _ |	 j ƒ  } t |  | | j	 | ƒ S(   s'   
    (a+bi)(c+di)=(ac-bd)+i(ad+bc)
    i    Rx   (
   R   RH  R  RK  Rv   Rä   Râ   RM  R   R   (   R   R   R   R   Ro  Rp  R;   R<   R=   RN  R"   R#   Ra  Rq  t   act   bdt   adt   bcR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyRZ    s"    				t   nanc         C` s7   d „  } |  j  | | | | ƒ } t |  | | j | ƒ S(   Nc         S` s	  |  j  } |  j } | j  } | j } | rA | rA t d ƒ ‚ n  t | ƒ t | ƒ k r© | sl t t t ƒ S| | } | | | } t | | | | | | | | ƒ S| s¼ t t t ƒ S| | } | | | } t |  j  | |  j | |  j | |  j  | ƒ Sd  S(   Ns   complex division by zero(   R  RK  Rj   R|   t   complext   NAN(   R"   R#   t   arealt   aimagt   brealt   bimagt   ratiot   denom(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_div1  s*    				

(   Rt   R   R   (   R   R   R   R   R  R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_div_impl0  s    	c   	      C` s¡   d d l  m } | j \ } | \ } |  j | | d | ƒ} |  j | | ƒ } | j | | j ƒ | _ | j | | j ƒ | _ | j ƒ  } t |  | | j	 | ƒ S(   Ni   (   R<  Rx   (
   R=  R<  R   RH  R>  R  RK  RM  R   R   (	   R   R   R   R   R<  R°   R~   t   cmplxR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_negate_implP  s    	c         C` s   | \ } t  |  | | j | ƒ S(   N(   R   R   (   R   R   R   R   R~   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_positive_impl\  s    	c         C` s­   | \ } } | j  d } |  j | | d | ƒ} |  j | | d | ƒ} | j t j | j | j ƒ }	 | j t j | j | j ƒ }
 | j |	 |
 ƒ } t |  | | j	 | ƒ S(   Ni    Rx   (
   R   RH  R  R‚   R5  R  RK  R/   R   R   (   R   R   R   R   Ro  Rp  R°   R<   R=   t   reals_are_eqt   imags_are_eqR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_eq_impla  s    c         C` s­   | \ } } | j  d } |  j | | d | ƒ} |  j | | d | ƒ} | j t j | j | j ƒ }	 | j t j | j | j ƒ }
 | j |	 |
 ƒ } t |  | | j	 | ƒ S(   Ni    Rx   (
   R   RH  R  R‚   R7  R  RK  R­   R   R   (   R   R   R   R   Ro  Rp  R°   R<   R=   t   reals_are_net   imags_are_neR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_ne_implm  s    c         C` s7   d „  } |  j  | | | | ƒ } t |  | | j | ƒ S(   s)   
    abs(z) := hypot(z.real, z.imag)
    c         S` s   t  j |  j |  j ƒ S(   N(   Rk   t   hypotR  RK  (   RN  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_abs}  s    (   Rt   R   R   (   R   R   R   R   R  R$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_abs_imply  s    	s   number.itemc         C` s   | d S(   s;   
    The no-op .item() method on booleans and numbers.
    i    (    (   R   R   R   R   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   number_item_implŸ  s    c         C` sU   | j  \ } | \ } |  j | | | | j ƒ } | j | ƒ } t |  | | j | ƒ S(   N(   R   R   R   R3   R   (   R   R   R   R   R°   R~   t   istrueR$   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   number_not_impl«  s
    	c         C` s   | \ } | S(   N(    (   R   R   R   R   R~   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   bool_as_bool³  s    	c         C` s+   | \ } | j  d | t j | j d ƒ ƒ S(   Ns   !=i    (   t   icmp_unsignedR   R   R,   (   R   R   R   R   R~   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_as_bool¸  s    	c         C` s.   | \ } | j  t j | t j | j d ƒ ƒ S(   Ng        (   R  R‚   R7  R   R   R,   (   R   R   R   R   R~   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   float_as_bool½  s    	c         C` s’   | j  \ } | \ } |  j | | | ƒ } | j | j } } t j | j d ƒ }	 | j t j	 | |	 ƒ }
 | j t j	 | |	 ƒ } | j
 |
 | ƒ S(   Ng        (   R   RH  R  RK  R   R   R,   R  R‚   R7  R­   (   R   R   R   R   R°   R~   Rƒ  R  RK  t   zerot   real_istruet   imag_istrue(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_as_boolÂ  s    	c         C` s˜   | j  \ } | j } | \ } t | t j ƒ r‚ | j | j k r‚ | j | j } | j | | j | t j	 | j
 | ƒ ƒ ƒ } n  |  j | | | | ƒ S(   N(   R   R   RQ   R   Re   Rg   R   R¤   R   R   R,   R   (   R   R   R   R   R;   t   rettyR~   t   nbits(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   hash_int×  s    		$	'c         C` sá   | j  \ } | j } | \ } t j d | j ƒ } t j | j ƒ } t j | | ƒ }	 | j	 | j
 |	 | j ƒ  ƒ ƒ }
 | j | j k rË | j | j } | j |
 | j |
 t j |
 j | ƒ ƒ ƒ }
 n  |  j | |
 | | ƒ S(   Ns   int%d(   R   R   R   Re   Rg   R   t   IntTypeR   R.   R:   t   bitcastt
   as_pointerR   R¤   R   R,   R   (   R   R   R   R   R;   Rš  R~   t   inttyt   ll_inttyt   val_pR=   R›  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt
   hash_floatæ  s    		
!	'c         C` s¯   | j  \ } | \ } | j } |  j | | | ƒ } t j | j | ƒ } t |  | | | j f ƒ }	 t |  | | | j f ƒ }
 t	 j
 |
 j d ƒ } | j |	 | j |
 | ƒ ƒ S(   NiCB (   R   RV  RH  R   R}   R   R£  R  RK  R   R   R,   R   R(   (   R   R   R   R   R;   R~   t   flttyRN  t   float_hash_sigt   h_realt   h_imagt   mult(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   hash_complex	  s    		c         C` s4   |  j  | | j | j ƒ } |  j | | | j | ƒ S(   N(   t   get_constant_generict   literal_typet   literal_valueR   (   R   R   t   fromtyt   totyR~   t   lit(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   literal_int_to_number  s
    c         C` s€   | j  | j  k r | S| j  | j  k  rA | j | |  j | ƒ ƒ S| j rc | j | |  j | ƒ ƒ S| j | |  j | ƒ ƒ Sd  S(   N(   Rg   t   trunct   get_value_typeR   t   sextt   zext(   R   R   R­  R®  R~   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   integer_to_integer'  s    	c         C` s   | j  | |  j | ƒ ƒ S(   N(   t   inttoptrR²  (   R   R   R­  R®  R~   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   integer_to_voidptr6  s    c         C` sE   |  j  | ƒ } | j | j k  r1 | j | | ƒ S| j | | ƒ Sd  S(   N(   R²  Rg   t   fpextt   fptrunc(   R   R   R­  R®  R~   R   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   float_to_float:  s    c         C` s<   |  j  | ƒ } | j r( | j | | ƒ S| j | | ƒ Sd  S(   N(   R²  R   t   sitofpt   uitofp(   R   R   R­  R®  R~   R   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   integer_to_floatB  s    	c         C` s<   |  j  | ƒ } | j r( | j | | ƒ S| j | | ƒ Sd  S(   N(   R²  R   t   fptosit   fptoui(   R   R   R­  R®  R~   R   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   float_to_integerJ  s    	c         C` s^   |  j  | | | | j ƒ } |  j | j d ƒ } |  j | | ƒ } | | _ | | _ | j ƒ  S(   Ni    (   R   RV  RY  RH  R  RK  RM  (   R   R   R­  R®  R~   R  RK  Rƒ  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   non_complex_to_complexR  s    		c   	      C` s‚   | j  } | j  } |  j | | d | ƒ} |  j | | ƒ } |  j | | j | | ƒ | _ |  j | | j | | ƒ | _ | j ƒ  S(   NRx   (   RV  RH  R   R  RK  RM  (	   R   R   R­  R®  R~   t   srctyt   dsttyt   srct   dst(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_to_complex]  s    		c         C` s   |  j  | | | ƒ S(   N(   t   is_true(   R   R   R­  R®  R~   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   any_to_booleanh  s    c         C` s1   | j  | t j ƒ  ƒ } |  j | | t j | ƒ S(   N(   R´  R   Rµ   R   R   t   int32(   R   R   R­  R®  R~   t   asint(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   boolean_to_anyl  s    c         C` s1   |  j  | | j | j ƒ } |  j | | j | ƒ S(   N(   Rª  R«  R¬  RÇ  (   R   R   R­  R®  R~   R¯  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   literal_int_to_booleans  s
    c         C` sO   | j  } |  j | | | j ƒ } |  j | | | j ƒ } t j j | | f ƒ S(   N(   RV  Rª  R  RK  R   R   t   literal_struct(   R   R   R;   t   pyvalR`  R  RK  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   constant_complex  s    	c         C` s   |  j  | ƒ } | | ƒ S(   N(   R²  (   R   R   R;   RÎ  R   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   constant_integer†  s    (¬   t
   __future__R    R   R   Rk   Ry   t   numpyt   npRÈ   t   llvmliteR   t   llvmlite.llvmpy.coreR   R   t   llvmpyt   coreR‚   t   imputilsR   R   R   R	   R
   R   R   R=  R   R   R   R   R   R   R%   R'   R)   RJ   RM   R^   t   divmodRe   R`   R  t	   ifloordivRa   t   IS_PY3Rý   t   idivt   truedivt   itruedivRc   Rþ   t   imodRd   Rh   Ru   Rl   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   booleanRÍ   RÕ   RÖ   R×   RØ   R˜   RÒ   RÜ   Rá   Rã   Rå   Ræ   Rç   R   Rò   t   NoneR$  R&  R'  R-  R/  R1  R2  R4  R6  R8  R;  R?  R@  RG  R;   R   RÉ   R&   RÊ   R(   RË   R|   t   ComplexRJ  RL  RO  RP  RR  RS  t   clsRn  Rr  Rs  RZ  Rm   Rz  R‚  R„  R…  Rˆ  R‹  RŽ  RÝ   t   NumberR  R‘  t   boolR’  R”  R•  R™  R3   t   hashRœ  R£  R©  R°  Rµ  t   voidptrR·  Rº  R½  RÀ  RÁ  RÆ  t   AnyRÈ  RË  RÌ  RÏ  RÐ  (    (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   <module>   s~  4"								9	
	!	'	"''			+->																												*			0							l																'*				 								#$
!
