ó
\K]c           @` sD  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 m Z d d
 l  m! Z! m" Z" d d l# 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 j0 e j- e j- ƒ d „  ƒ ƒ Z1 e j2 sÿe e j3 e j- e j- ƒ e1 ƒ e e j4 e j- e j- ƒ e1 ƒ n  e e j5 e j- e j- ƒ e e j6 e j- e j- ƒ d „  ƒ ƒ Z7 e e j8 e j- e j- ƒ e e j9 e j- e j- ƒ d „  ƒ ƒ Z: d „  Z; d „  Z< e e j= e j- e j> ƒ e e j? e j- e j> ƒ e e j= e j@ e j> ƒ e e j? e j@ e j> ƒ 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 d+ „  ZS d, „  ZT d- „  ZU d. „  ZV d/ „  ZW d0 „  ZX e e jY e jZ e jZ ƒ eJ ƒ e e j[ e jZ e jZ ƒ eK ƒ e e j\ e jZ e jZ ƒ eF ƒ e e j] e jZ e jZ ƒ eG ƒ e e j^ e jZ e jZ ƒ eH ƒ e e j_ e jZ e jZ ƒ eI ƒ e e j` e jZ ƒ eW ƒ e e ja e jZ ƒ eX ƒ d1 „  Zb d2 „  Zc eb ƒ  ec ƒ  d3 „  Zd d4 „  Ze d5 „  Zf d6 „  Zg d7 „  Zh d8 „  Zi e e, e j@ e j@ ƒ d d9 „ ƒ Zk d d: „ Zl d d; „ Zm d< „  Zn d= „  Zo d> „  Zp d? „  Zq d@ „  Zr dA „  Zs dB „  Zt dC „  Zu dD „  Zv dE „  Zw dF „  Zx e j@ Zy e e jz ey ey ƒ ed ƒ e e j{ ey ey ƒ ed ƒ e e j| ey ey ƒ ee ƒ e e j} ey ey ƒ ee ƒ e e j~ ey ey ƒ ef ƒ e e j ey ey ƒ ef ƒ e e j/ ey ey ƒ em ƒ e e j0 ey ey ƒ em ƒ e e j5 ey ey ƒ eg ƒ e e j6 ey ey ƒ eg ƒ e j2 sõe e j3 ey ey ƒ eg ƒ e e j4 ey ey ƒ eg ƒ n  e e j8 ey ey ƒ el ƒ e e j9 ey ey ƒ el ƒ e e j= ey ey ƒ en ƒ e e j? ey ey ƒ en ƒ e e= ey ey ƒ en ƒ e e jY ey ey ƒ es ƒ e e j[ ey ey ƒ et ƒ e e j\ ey ey ƒ eo ƒ e e j] ey ey ƒ ep ƒ e e j^ ey ey ƒ eq ƒ e e j_ ey ey ƒ er ƒ e e€ ey ƒ eu ƒ e e j` ey ƒ ev ƒ e e ja ey ƒ ew ƒ [y e e j dG ƒ dH „  ƒ Z‚ e e j dI ƒ dJ „  ƒ Zƒ e dK e j ƒ dL „  ƒ Z„ dM „  Z… dN „  Z† dO „  Z‡ xS e j@ e j- f D]? Zˆ e eˆ dG ƒ e… ƒ e eˆ dI ƒ e† ƒ e dK eˆ ƒ e‡ ƒ qÆWe e j= e j e j ƒ e e j? e j e j ƒ e e= e j e j ƒ dP „  ƒ ƒ ƒ Z‰ dQ „  ZŠ dR „  Z‹ dS „  ZŒ e dT ƒ ZŽ dU „  Z dV „  Z dW „  Z‘ dX „  Z’ dY „  Z“ dZ „  Z” e j Zy e e jz ey ey ƒ eŠ ƒ e e j{ ey ey ƒ eŠ ƒ e e j| ey ey ƒ e‹ ƒ e e j} ey ey ƒ e‹ ƒ e e j~ ey ey ƒ eŒ ƒ e e j ey ey ƒ eŒ ƒ e e j5 ey ey ƒ e ƒ e e j6 ey ey ƒ e ƒ e j2 sÌ
e e j3 ey ey ƒ e ƒ e e j4 ey ey ƒ e ƒ n  e e j` ey ƒ e ƒ e e ja ey ƒ e‘ ƒ e e jY ey ey ƒ e’ ƒ e e j[ ey ey ƒ e“ ƒ e e€ ey ƒ e” ƒ [y e d[ e j• ƒ e d[ e j– ƒ d\ „  ƒ ƒ Z— d] „  Z˜ e e™ e jZ ƒ d^ „  ƒ Zš e e™ e j- ƒ d_ „  ƒ Z› e e™ e j@ ƒ d` „  ƒ Zœ e e™ e j ƒ da „  ƒ Z x6 e j- e j@ e j f D] Zy e e jž ey ƒ e˜ ƒ qûWe e jž e jZ ƒ e˜ ƒ e e j> e j- ƒ e e j> e j@ ƒ e e j> e j ƒ db „  ƒ ƒ ƒ ZŸ e e j- 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 ƒ e e j- e j ƒ dh „  ƒ ƒ Z¦ 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 j ƒ dm „  ƒ Z¬ e e j- ƒ e e j@ ƒ e e j• ƒ dn „  ƒ ƒ ƒ Z­ do „  Z® e" e j@ dp ƒ e® ƒ e" e j- dp ƒ e® ƒ d S(q   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   utilst   errors(   t	   intrinsict   overload_method(   t   viewerc         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_impl0   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_impl9   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_signedB   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   RN   t   udivt   urem(   R   R    R?   R@   RA   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt
   int_divmod{   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_onceR0   R<   t   is_scalar_zerot   Falset   error_modelt   fp_zero_divisionR=   RQ   (   R   R    R!   R   t   zerodiv_messageR"   R#   R$   R%   R?   R&   R'   RS   RT   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(   Rb   R   t
   pack_arrayR>   (   R   R    R!   R   RS   RT   (    (    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(   Rb   R>   (   R   R    R!   R   RS   RT   (    (    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   R^   R[   R\   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(   Rb   R>   (   R   R    R!   R   RS   RT   (    (    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   (   RU   R   t   IntegerR[   t   raise_on_fp_zero_divisiont   bitwidthRZ   (   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      ð?(   R8   t   OverflowErrort   ZeroDivisionErrorRZ   t   matht   powt   float(   R&   R'   Ra   t   invertt   exp(   t
   is_integert   tpt   zerodiv_return(    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt	   int_powerß   s0    	


(   RU   R   R   Ri   R   Rl   t   compile_internalR   (   R   R    R!   R   Rw   R(   (    (   Rt   Ru   Rv   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    Rt   (    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ÿÿÿÿ(   Rn   (   R&   (   Rv   (    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.pyR{   :  s    (   R   t   valueRU   t   numberst   Integralt   NotImplementedErrort   absR   R   Ri   Rl   R   R0   Rx   R   t	   signature(   R   R    R!   R   Rs   Rr   Ru   t   valt   ltyR,   R(   R&   R{   (    (   R    Rt   Rv   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_implC  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_implH  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_implM  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_implR  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_implW  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_impl\  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_impla  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_implf  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_implk  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_implp  s    c   	      C` sm   | \ } t  j | j ƒ } | j t j | | ƒ } | j | ƒ } | j | | | ƒ } t |  | | j	 | ƒ S(   N(
   R   t   nullR0   R…   R†   R‡   t   negt   selectR   R   (	   R   R    R!   R   R@   RB   t   ltzt   negatedR(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   int_abs_implu  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   R3   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   R;   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   R;   R   t   all_onesR0   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   intR0   R…   R†   R—   R‹   R   RX   t   append_basic_blockt   cbrancht
   goto_blockR=   t   brancht   position_at_endR>   R   R   (   R   R    R!   R   R@   t   POSt   NEGRB   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   Ri   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¶   Rp   Ry   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   BooleanRi   R   RÌ   R3   R°   t   iandR±   R²   t   iorR;   R³   t   ixorRr   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_implO  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_implT  s    c         C` s%   | j  | Œ  } t |  | | j | ƒ S(   N(   Rz   R   R   (   R   R    R!   R   R(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_mul_implY  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   R^   R[   R\   Rf   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(   R0   R1   t   modulet   manglerR   t   functiont   pointert   get_or_insert_functiont   is_declarationR†   t   LINKAGE_LINKONCE_ODRt   linkaget   BuilderRº   R   t   real_divmod_func_bodyR=   t   retR   RX   t   callR>   (   R   R    R@   RA   t   floattyRí   t   fnamet   fntyt   fnt	   fnbuildert   fxt   fyt   pmodt   divt   modt   quotient(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_divmode  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.   Rq   t   doubleg      à?("   R   RX   R0   t   fremRf   Rè   R=   t   fcmp_unorderedt   fcmp_orderedR<   R8   R…   R†   R™   R6   Ræ   R   R>   t   fcmpt   FCMP_ONER   t   float32t   float64t   strt   get_functionRo   t   floorR   R   R   t   realt   FCMP_OGTt   ifnotRz   (   R   R    t   vxt   wxR   t   pdivt	   pfloordivR  R  RB   t   NZERORC   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ö   {  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(   NRR   RS   RT   R.   s   modulo by zero(   s   modulo by zero(   R   RX   R0   R<   RY   RZ   R[   R\   Rf   R  R=   R  Rc   R>   (   R   R    R!   R   t   locR@   RA   RS   RT   R^   R_   R`   Ra   (    (    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   RX   R0   R<   RY   RZ   R[   R\   R  R=   R  R   R   R>   (   R   R    R!   R   R'  R@   RA   R(   R^   R_   RT   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   RX   R0   R<   RY   RZ   R[   R\   Rf   R=   R  R   R   R>   (   R   R    R!   R   R'  R@   RA   R(   R^   R_   RS   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  Ro   Rp   R†   t   FunctionR   t   INTR_POWR0   Rø   R   R   (
   R   R    R!   R   R@   RA   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_impl3  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_impl8  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_implB  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_implG  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_implL  s    c         C` s@   | j  \ } t j | | ƒ } |  j t j | ƒ } | | | ƒ S(   N(   R   R   R   R  Ro   t   fabs(   R   R    R!   R   R?   t   impl(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   real_abs_implQ  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_implX  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  R0   R   RX   R	  R†   R  R1  R<   R=   R>   R   R   (   R   R    R!   R   R@   R¿   RÀ   RB   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_imple  s$    	(R  c         C` s4   |  j  | | d | ƒ} | j } t |  | | | ƒ S(   NR|   (   t   make_complexR  R   (   R   R    R´   R|   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(   NR|   (   RK  RN  R   (   R   R    R´   R|   RL  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?  RK  R   RA  RN  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´   R|   (    (    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_valueR0   R   (   R   R    R´   R|   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    R|   i   s   ==t   numba_cpowft
   numba_cpowi   RR   (   R   t   underlying_floatt   make_helperRí   t   _getpointert   get_constantR  R  RN  R3   R<   t   complex_mul_implR   t	   complex64t
   complex128R   Rï   t   voidR0   Rñ   Rø   R>   R   R   (   R   R    R!   R   t   cat   cbR?   t   ftyR&   R'   t   cRí   t   pat   pbt   pct   TWORB   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    R|   (   R   RK  R  RN  Ræ   RP  R   R   (   R   R    R!   R   t   cxt   cyR?   R@   RA   RQ  R&   R'   Rd  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    R|   (   R   RK  R  RN  Rè   RP  R   R   (   R   R    R!   R   Rr  Rs  R?   R@   RA   RQ  R&   R'   Rd  Rt  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    R|   (
   R   RK  R  RN  Rz   Rè   Ræ   RP  R   R   (   R   R    R!   R   Rr  Rs  R?   R@   RA   RQ  R&   R'   Rd  Rt  t   act   bdt   adt   bcR(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyR]    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  RN  Rn   R€   t   complext   NAN(   R&   R'   t   arealt   aimagt   brealt   bimagt   ratiot   denom(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_div3  s*    				

(   Rx   R   R   (   R   R    R!   R   R„  R(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_div_impl2  s    	c   	      C` s¡   d d l  m } | j \ } | \ } |  j | | d | ƒ} |  j | | ƒ } | j | | j ƒ | _ | j | | j ƒ | _ | j ƒ  } t |  | | j	 | ƒ S(   Ni   (   R?  R|   (
   R@  R?  R   RK  RA  R  RN  RP  R   R   (	   R   R    R!   R   R?  R´   R‚   t   cmplxR(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_negate_implR  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    R|   (
   R   RK  R	  R†   R8  R  RN  R3   R   R   (   R   R    R!   R   Rr  Rs  R´   R@   RA   t   reals_are_eqt   imags_are_eqR(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_eq_implc  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    R|   (
   R   RK  R	  R†   R:  R  RN  R±   R   R   (   R   R    R!   R   Rr  Rs  R´   R@   RA   t   reals_are_net   imags_are_neR(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_ne_implo  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(   Ro   t   hypotR  RN  (   RQ  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_abs  s    (   Rx   R   R   (   R   R    R!   R   R  R(   (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_abs_impl{  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   R7   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   R0   (   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†   R:  R   R   R0   (   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   RK  R  RN  R   R   R0   R	  R†   R:  R±   (   R   R    R!   R   R´   R‚   R†  R  RN  t   zerot   real_istruet   imag_istrue(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   complex_as_boolÄ  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(   Rk   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_voidptr÷  s    c         C` sE   |  j  | ƒ } | j | j k  r1 | j | | ƒ S| j | | ƒ Sd  S(   N(   R¥  Rk   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_float  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_integer  s    	c         C` s^   |  j  | | | | j ƒ } |  j | j d ƒ } |  j | | ƒ } | | _ | | _ | j ƒ  S(   Ni    (   R   RY  R\  RK  R  RN  RP  (   R   R    R   R¡  R‚   R  RN  R†  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   non_complex_to_complex  s    		c   	      C` s‚   | j  } | j  } |  j | | d | ƒ} |  j | | ƒ } |  j | | j | | ƒ | _ |  j | | j | | ƒ | _ | j ƒ  S(   NR|   (   RY  RK  R   R  RN  RP  (	   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_boolean)  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_any-  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_boolean4  s
    c         C` sO   | j  } |  j | | | j ƒ } |  j | | | j ƒ } t j j | | f ƒ S(   N(   RY  R  R  RN  R   R   t   literal_struct(   R   R    R?   t   pyvalRc  R  RN  (    (    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_integerG  s    c         C` sh   t  |  t j t j f ƒ rd t  | t j j ƒ rd |  j | j j k rW t j	 d ƒ ‚ n  d „  } | Sd S(   s)    Typing for the np scalar 'view' method. sO   Changing the dtype of a 0d array is only supported if the itemsize is unchangedc         S` s   t  |  | ƒ S(   N(   R   (   t   scalart   viewty(    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyR=  [  s    N(
   RU   R   RÝ   Ri   t   abstractt	   DTypeSpecRk   RW   R   t   TypingError(   RÄ  RÅ  R=  (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   scalar_viewR  s    	t   view(¯   t
   __future__R    R   R   Ro   R}   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   t	   extendingR   R   t   unsafe.numbersR   R   R)   R+   R-   RN   RQ   Rb   t   divmodRi   Rd   R"  t	   ifloordivRe   t   IS_PY3R  t   idivt   truedivt   itruedivRg   R  t   imodRh   Rl   Ry   Rp   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+  R0  R2  R4  R5  R7  R9  R;  R>  RB  RC  RJ  R?   R   RÍ   R*   RÎ   R,   RÏ   R€   t   ComplexRM  RO  RR  RS  RU  RV  t   clsRq  Ru  Rv  R]  Rq   R}  R…  R‡  Rˆ  R‹  RŽ  R‘  Rá   t   NumberR’  R”  t   boolR•  R—  R˜  Rœ  R7   R£  R¨  t   voidptrRª  R­  R°  R³  R´  R¹  t   AnyR»  R¾  R¿  RÂ  RÃ  RÉ  (    (    (    s4   lib/python2.7/site-packages/numba/targets/numbers.pyt   <module>   s€  4(								9	
	!	'	"''			+->																												*			0							l																'*				 									$
!
		