
\K]c           @` s  d  Z  d d l m Z m Z m Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d d l Z d d l j j Z d d l m Z m Z m Z d d l m Z m Z m Z d d	 l m Z m Z d d
 l m Z d d l 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 d l+ m, Z, d d l m- Z- d d l. m/ Z/ m0 Z0 d   Z1 e1   Z2 e- d    Z3 e- d    Z4 e  e j5 e j6  e  d e j6  d     Z7 e d    Z8 e  e j5 e j6 e j9  e  e j5 e j6 e j:  e  d e j6 e j9  e  d e j6 e j:  d       Z; e  e j< e j6  e  d e j6  d     Z= e  e j> e j6  e  d e j6  d     Z? e  e j@ e j6  e  d e j6  d     ZA e  e jB e j6  e  d e j6  d      ZC e  e jD e j6  e  d! e j6  d"     ZE e  e jF e j6  e  d# e j6  d$     ZG d%   ZH e  e jI e j6  e  d& e j6  d'     ZJ e  e jK e j6  e  d( e j6  d)     ZL e  e jM e j6  e  d* e j6  d+     ZN e  e jO e j6  e  d, e j6  d-     ZP e e jQ  e e j6 d.  d/     ZR e e jS  e e j6 d0  d1     ZT d2   ZU e d3    ZV e d4    ZW e d5    ZX d6   ZY e eY eV d7 eZ  Z[ e eY eW d7 eZ  Z\ e eY eV d7 e]  Z^ e eY eW d7 e]  Z_ e e j`  d8    Za e e jb  d9    Zc e d"k re e jd  d;    Ze e e jf  d<    Zg e e jh  d=    Zi n  e e jj  d>    Zk e d#k re e jl  d@    Zm n  e d$k r#e e jn  dB    Zo e e jp  dC    Zq n  e dD    Zr dE   Zs e es eW   Zt e es eV   Zu e dF    Zv e e jw  dG    Zx e dH    Zy dI   Zz e ez eV   Z{ e ez ey   Z| dJ   Z} e e} e{   Z~ e e} e|   Z e dK    Z e dL    Z e e j  dM    Z e dN    Z e dO    Z e dP    Z e dQ    Z e dR    Z e dS    Z dT   Z e d%k re e j  dU    Z n  e d&k re e j  dW    Z n  e d'k re e j  dY    Z n  e d(k r$e e j  dZ    Z n  e d)k rKe e j  d\    Z n  e d]    Z e d^    Z e e j  d_    Z e d`    Z e e j  d d da   Z e db    Z e d dc   Z e e j  d dd   Z e d de   Z e e j  d df   Z dg   Z e e  dh    Z di   Z e d*k rk	e e j  d d dj   Z n  dk   Z e e  dl    Z dm   Z e e  dn    Z e e j  d do dp   Z e dq    Z e dr    Z e e j  d eZ ds   Z e e j  dt    Z d: Z e du    Z e dv    Z dw   Z e dx    Z e dy    Z dz   Z e d+k r
e e d{ e]   Z e e d{ e]   Z e e d{ eZ   Z e e d{ eZ   Z e e j  d|    Z n  e d}    Z e d~    Z d   Z e e  d    Z e d    Z e d    Z d   Z d   Z e d    Z e d    Z e d    Z d   Z e d    Z e d    Z e d,k re e j  d e] eZ d d   Z e e j  d e] d   Z n  e e j  d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z d   Z e e  d    Z e e j  eZ d   Z d   Z d   Z e  e j e j  d    Z e  e j e j  d    Z e  e j e j  d    Z e  e j e j e j  e  e j e j e j  d     Z e  e j e j e j  d    Z e  e j e j6 e j e j6  d    Z e  e j e j6  d    Z e  e j e j  d    Z e  e j e j  e  e j e j e j  d     Z e  e j e j6  e  e j e j6 e j  d     Z e  e j e j6  e  d e j6  e  e j e j6  d      Z d   Z e d    Z e d    Z e d    Z d   Z e e d e Z e e d e Z e e d e Z e  e j e j e j e j  d    Z e e j d    Ze e j d    Ze d    Ze d    Ze e j d    Ze e j	 d d   Z
d   Ze e j d d   Zd   ZeV Ze d    Ze ee  Ze ee  Ze e j d d   Ze e j eZ d   ZeZe e j d? d d   Zd-Ze d e Zd.Ze d/k rd0eZn  e d e Zd1Ze d2k red3Zn  e d e Ze e j d    Z d   Z!e!e jee e!e jee d   Z"d   Z#d   Z$d e	 f d     YZ%e e$ d    Z&e e j' d    Z(e e j) d    Z*d   Z+e e j, d d   Z-e e j. d    Z/e e j0 d d   Z1e d    Z2e d    Z3e d    Z4e d    Z5d   Z6e e j7 e6e2  e e j8 e6e3  e e j9 e6e4  e e j: e6e5  e j;d d d d d d d d d d d d d d d d d d d d d d d d d d ddddg  Z<e j;ddddd	d
dddddddddddddddddddg  Z=e d   Z>e d   Z?e d    Z@e e jA d!   ZBd S(4  s5   
Implementation of math operations on Array objects.
i    (   t   print_functiont   absolute_importt   divisionN(   t
   namedtuple(   t   IntEnum(   t   partial(   t   typest   cgutilst   generated_jit(   t   overloadt   overload_methodt   register_jitable(   t   as_dtypet   type_can_asarray(   t   version(   t   lower_builtint   impl_ret_borrowedt   impl_ret_new_reft   impl_ret_untracked(   t	   signaturei   (   t
   make_arrayt	   load_itemt
   store_itemt   _empty_nd_impl(   t   ensure_blas(   t	   intrinsic(   t   RequireLiteralValuet   TypingErrorc           C` s$   y t    Wn t k
 r t SXt S(   N(   R   t   ImportErrort   Falset   True(    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _check_blas   s
    c         ` sS   t  |  d   t j t j       |  }     f d   } | | f S(   s  
    This routine converts shape list where the axis dimension has already
    been popped to a tuple for indexing of the same size.  The original shape
    tuple is also required because it contains a length field at compile time
    whereas the shape list does not.
    i   c         ` s   |  j    } t j |  } | \ } } d   } xk t    D]] }	 |  j t j |	  }
 |  j | | t j  t j  | |
 g  } | j | | |	  } q@ W| S(   Nc         S` s   |  | S(   N(    (   t   at   i(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_indexerC   s    (	   t   get_value_typeR   t   get_null_valuet   ranget   get_constantR   t   intpt   compile_internalt   insert_value(   t   cgctxt   builderR   t   argst   lltuptyt   tupt   in_shapet   _R"   R!   t   dataidxt   data(   t   ndt
   shape_listt   tupty(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   codegen;   s    	(   t   lenR   t   UniTupleR'   (   t   tyctxR4   t   shape_tuplet   function_sigR6   (    (   R3   R4   R5   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _create_tuple_result_shape*   s
    c   	      ` s   t  | t j  s! t d   n  | j   t |      k rK d   n    }  | d } g  } | t j g | 7} | t j g 7} | t j g | 7} t j |    | | |  }     f d   } | | f S(   sH  
    Generates a tuple that can be used to index a specific slice from an
    array for sum with axis.  shape_tuple is the size of the dimensions of
    the input array.  'value' is the value to put in the indexing tuple
    in the axis dimension and 'axis' is that dimension.  For this to work,
    axis has to be a const.
    s    axis argument must be a constanti    i   c         ` s   |  j    } t j |  } | \ } } } d   } |  j | | t j   g   }	 x, t d    D] }
 | j | |	 |
  } qd W| j | |    } x0 t   d   D] }
 | j | |	 |
  } q W| S(   Nc           S` s   t  d  d   S(   N(   t   slicet   None(    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   create_full_slice   s    i    i   (   R#   R   R$   R(   R   t   slice2_typeR%   R)   (   R*   R+   R   R,   R-   R.   R0   t	   value_argR?   t
   slice_dataR!   (   t
   axis_valueR3   R5   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR6   z   s    			(	   t
   isinstanceR   t   LiteralR   t   literal_valueR7   R@   R'   t   Tuple(	   R9   R:   t   valuet   axist   beforet   aftert
   types_listR;   R6   (    (   RC   R3   R5   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _gen_index_tupleS   s     			s	   array.sumc      	   ` s^   | j  d      f d   } |  j | | | | d t d | j   } t |  | | j  |  S(   Ni    c         ` s4     } x' t  j |   D] } | | j   7} q W| S(   N(   t   npt   nditert   item(   t   arrt   ct   v(   t   zero(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_sum_impl   s    t   localsRR   (   t   return_typeR(   t   dictR   (   t   contextR+   t   sigR,   RU   t   res(    (   RT   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   array_sum   s
    c         C` s   |  S(   N(    (   RQ   RS   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _array_sum_axis_nop   s    c   
      ` sb  | j  } t | d |  d   t | d d  d k rE t j  n t  | j \ } } t  d   t | t	 j
  r| j     d k  r | j     n    d k  s   | j k r t d   n  |  j j    } |  j |    } | d | f } | j d | | g  } t  n       f d   } |  j | | | |  }	 t |  | | j  |	  S(   sJ  
    The third parameter to gen_index_tuple that generates the indexing
    tuples has to be a const so we can't just pass "axis" through since
    that isn't const.  We can check for specific values and have
    different instances that do take consts.  Supporting axis summation
    only up to the fourth dimension for now.
    t   dtypei    t   ndims   'axis' entry is out of boundsR,   c         ` s  |  j  }  s9 | d k  s' | d k r9 t d   q9 n  | | k rT t d   n  t |  j  } | | } | j |  t | |  j  } t j |  t    } xt	 |  D] }  r t
 |  j |    } | |  | 7} q | d k rt
 |  j | d  }	 | |  |	 7} q | d k rJt
 |  j | d  }
 | |  |
 7} q | d k r|t
 |  j | d  } | |  | 7} q | d k r t
 |  j | d  } | |  | 7} q q W | d  S(   Ni    i   sH   Numba does not support sum with axis parameter outside the range 0 to 3.s   axis is out of bounds for arrayi   i   (   R_   t
   ValueErrort   listt   shapet   popR<   RN   t   fullt   typeR%   RM   (   RQ   RI   R_   t   ashapet   axis_lent   ashape_without_axist   resultt
   axis_indext   index_tuple_generict   index_tuple1t   index_tuple2t   index_tuple3t   index_tuple4(   t   const_axis_valt   is_axis_constt   opRT   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_sum_impl_axis   s:    	
	N(   RW   t   getattrR>   RN   t   takeR]   R,   R   RD   R   RE   RF   R_   R`   t   typing_contextt   resolve_value_typeR&   t   replaceR   R(   R   (
   RY   R+   RZ   R,   t   rettyt   ty_arrayt   ty_axist   axis_valRs   R[   (    (   Rp   Rq   Rr   RT   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_sum_axis   s,    			3s
   array.prodc      	   C` sI   d   } |  j  | | | | d t d | j  } t |  | | j |  S(   Nc         S` s4   d } x' t  j |   D] } | | j   9} q W| S(   Ni   (   RN   RO   RP   (   RQ   RR   RS   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_prod_impl  s    RV   RR   (   R(   RX   RW   R   (   RY   R+   RZ   R,   R~   R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   array_prod  s    	s   array.cumsumc      	   ` ss   | j  j } t |    | d      f d   } |  j | | | | d t d |  } t |  | | j  |  S(   Ni    c         ` sS   t  j |  j    }  } x1 t |  j  D]  \ } } | | 7} | | | <q+ W| S(   N(   RN   t   emptyt   sizet	   enumeratet   flat(   RQ   t   outRR   t   idxRS   (   R^   RT   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_cumsum_impl,  s    
RV   RR   (   RW   R^   R   R(   RX   R   (   RY   R+   RZ   R,   t   scalar_dtypeR   R[   (    (   R^   RT   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_cumsum%  s    s   array.cumprodc      	   ` sd   | j  j } t |      f d   } |  j | | | | d t d |  } t |  | | j  |  S(   Nc         ` sS   t  j |  j    } d } x1 t |  j  D]  \ } } | | 9} | | | <q+ W| S(   Ni   (   RN   R   R   R   R   (   RQ   R   RR   R   RS   (   R^   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_cumprod_impl?  s    
RV   RR   (   RW   R^   R   R(   RX   R   (   RY   R+   RZ   R,   R   R   R[   (    (   R^   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_cumprod9  s    s
   array.meanc      	   ` s^   | j  d      f d   } |  j | | | | d t d | j   } t |  | | j  |  S(   Ni    c         ` s;     } x' t  j |   D] } | | j   7} q W| |  j S(   N(   RN   RO   RP   R   (   RQ   RR   RS   (   RT   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_mean_implQ  s    RV   RR   (   RW   R(   RX   R   (   RY   R+   RZ   R,   R   R[   (    (   RT   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   array_meanL  s
    s	   array.varc         C` s7   d   } |  j  | | | |  } t |  | | j |  S(   Nc         S` sg   |  j    } d } xG t j |   D]6 } | j   | } | t j | t j |   7} q" W| |  j S(   Ni    (   t   meanRN   RO   RP   t   realt   conjR   (   RQ   t   mt   ssdRS   t   val(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_var_impla  s    $(   R(   R   RW   (   RY   R+   RZ   R,   R   R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   array_var^  s    	s	   array.stdc         C` s7   d   } |  j  | | | |  } t |  | | j |  S(   Nc         S` s   |  j    d S(   Ng      ?(   t   var(   t   arry(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_std_impls  s    (   R(   R   RW   (   RY   R+   RZ   R,   R   R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   array_stdp  s    	c         C` s   d j  |   } | S(   Ns@   zero-size array to reduction operation {0} which has no identity(   t   format(   t   fn_namet   msg(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   zero_dim_msgy  s    	s	   array.minc         ` s   | j  d j } t d    t | t j t j f  rX | d      f d   } n3 t | t j  r|   f d   } n   f d   } |  j | | | |  } t	 |  | | j
 |  S(   Ni    t   minimumt   NaTc         ` s   |  j  d k r t     n   } t j |   } x0 | D]( } | j   } |  k r: | } Pq: q: Wx; | D]3 } | j   } |  k rm | | k  rm | } qm qm W| S(   Ni    (   R   R`   RN   RO   RP   (   R   t	   min_valuet   itt   viewRS   (   t   MSGt   nat(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_min_impl  s    c         ` s   |  j  d k r t     n  t j |   } t |  j d  } xe | D]] } | j   } | j | j k  rv | } qI | j | j k rI | j | j k  r | } q qI qI W| S(   Ni    (	   R   R`   RN   RO   t   nextRu   RP   R   t   imag(   R   R   R   R   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    	c         ` sx   |  j  d k r t     n  t j |   } t |  j d  } x/ | D]' } | j   } | | k  rI | } qI qI W| S(   Ni    (   R   R`   RN   RO   R   Ru   RP   (   R   R   R   R   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    (   R,   R^   R   RD   R   t
   NPDatetimet   NPTimedeltat   ComplexR(   R   RW   (   RY   R+   RZ   R,   t   tyR   R[   (    (   R   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   array_min  s    s	   array.maxc         ` s}   | j  d j } t d    t | t j  r@   f d   } n   f d   } |  j | | | |  } t |  | | j |  S(   Ni    t   maximumc         ` s   |  j  d k r t     n  t j |   } t |  j d  } xe | D]] } | j   } | j | j k rv | } qI | j | j k rI | j | j k r | } q qI qI W| S(   Ni    (	   R   R`   RN   RO   R   Ru   RP   R   R   (   R   R   t	   max_valueR   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_max_impl  s    	c         ` sx   |  j  d k r t     n  t j |   } t |  j d  } x/ | D]' } | j   } | | k rI | } qI qI W| S(   Ni    (   R   R`   RN   RO   R   Ru   RP   (   R   R   R   R   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    (	   R,   R^   R   RD   R   R   R(   R   RW   (   RY   R+   RZ   R,   R   R   R[   (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   array_max  s    s   array.argminc         ` s   | j  d j } t d k rU t | t j t j f  rU | d      f d   } n	 d   } |  j | | | |  } t |  | | j	 |  S(   Ni    i   i
   R   c         ` s   |  j  d k r t d   n    } d } |  j } d } x> | D]6 } |   k rl | } | } | d 7} Pn  | d 7} q@ Wx? | D]7 } |   k r | | k  r | } | } n  | d 7} q W| S(   Ni    s*   attempt to get argmin of an empty sequencei   (   R   R`   R   (   R   R   t   min_idxR   R   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_argmin_impl  s&    	
	c         S` s   |  j  d k r t d   n  x |  j D] } | } d } Pq( Wd } x6 |  j D]+ } | | k  rp | } | } n  | d 7} qO W| S(   Ni    s*   attempt to get argmin of an empty sequencei   (   R   R`   R   (   R   RS   R   R   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    	(   i   i
   (
   R,   R^   t   numpy_versionRD   R   R   R   R(   R   RW   (   RY   R+   RZ   R,   R   R   R[   (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_argmin  s    	s   array.argmaxc         C` s7   d   } |  j  | | | |  } t |  | | j |  S(   Nc         S` s   |  j  d k r t d   n  x |  j D] } | } d } Pq( Wd } x6 |  j D]+ } | | k rp | } | } n  | d 7} qO W| S(   Ni    s*   attempt to get argmax of an empty sequencei   (   R   R`   R   (   R   RS   R   t   max_idxR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_argmax_impl!  s    	(   R(   R   RW   (   RY   R+   RZ   R,   R   R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_argmax  s    	t   allc         C` s   d   } | S(   Nc         S` s.   x' t  j |   D] } | j   s t Sq Wt S(   N(   RN   RO   RP   R   R   (   R    RS   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   flat_all7  s    (    (   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_all4  s    	t   anyc         C` s   d   } | S(   Nc         S` s.   x' t  j |   D] } | j   r t Sq Wt S(   N(   RN   RO   RP   R   R   (   R    RS   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   flat_anyC  s    (    (   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_any@  s    	c         C` s9   t  |  t j t j f  r" t j St d    } | Sd S(   s$   
    A generic isnan() function
    c         S` s   t  S(   N(   R   (   t   x(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _trivial_isnanS  s    N(   RD   R   t   FloatR   RN   t   isnanR   (   R^   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   get_isnanL  s    c         C` s
   |  | k  S(   N(    (   R    t   b(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   less_thanY  s    c         C` s
   |  | k S(   N(    (   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   greater_than^  s    c         C` s"   |  j  d k r t d   n  d  S(   Ni    s3   zero-size array to reduction operation not possible(   R   R`   (   R    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   check_arrayc  s    c         ` s+   | r   f d   } n   f d   } | S(   Nc         ` s   t  j |   } t |  t  j |  } t |  j d  } x | D] } | j   } t  j | j  r t  j | j  r | } qD   | j | j  r | } qD | j | j k rD   | j	 | j	  r | } q qD qD W| S(   Ni    (
   RN   t   asarrayR   RO   R   Ru   RP   R   R   R   (   R    RQ   R   t
   return_valR   RS   (   t   comparison_op(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   implk  s    
%		c         ` s   t  j |   } t |  t  j |  } t |  j d  } xD | D]< } | j   } t  j |  sD   | |  s | } q qD qD W| S(   Ni    (   RN   R   R   RO   R   Ru   RP   R   (   R    RQ   R   R   R   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   |  s    
(    (   R   t   is_complex_dtypeR   (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nan_min_max_factoryi  s    R   c         C` s-   t  |   } t j | t j  r% t St Sd  S(   N(   t   determine_dtypeRN   t
   issubdtypet   complexfloatingt   complex_nanmint   real_nanmin(   R    t   dt(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_nanmin  s    c         C` s-   t  |   } t j | t j  r% t St Sd  S(   N(   R   RN   R   R   t   complex_nanmaxt   real_nanmax(   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_nanmax  s    i   c         ` s8   t  |  t j  s d  St |  j      f d   } | S(   Nc         ` sk   d } d } xL t  j |   D]; } | j   }   |  s | | j   7} | d 7} q q Wt  j | |  S(   Ng        i    i   (   RN   RO   RP   t   divide(   R    RR   t   countR   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nanmean_impl  s    (   RD   R   t   ArrayR   R^   (   R    R   (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   np_nanmean  s
    c         ` s8   t  |  t j  s d  St |  j      f d   } | S(   Nc         ` s   t  j |   } d } d } xl t  j |   D][ } | j   }   |  s+ | j   | } | t  j | t  j |   7} | d 7} q+ q+ Wt  j | |  S(   Ng        i    i   (   RN   t   nanmeanRO   RP   R   R   R   (   R    R   R   R   R   RS   R   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nanvar_impl  s     (   RD   R   R   R   R^   (   R    R   (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_nanvar  s
    c         C` s#   t  |  t j  s d  Sd   } | S(   Nc         S` s   t  j |   d S(   Ng      ?(   RN   t   nanvar(   R    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nanstd_impl  s    (   RD   R   R   (   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_nanstd  s    	c         ` sq   t  |  t j  s d  St  |  j t j  r7 t j } n	 |  j } | d   t |  j       f d   } | S(   Ni    c         ` sI    } x< t  j |   D]+ } | j   }   |  s | | 7} q q W| S(   N(   RN   RO   RP   (   R    RR   R   RS   (   R   RT   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nansum_impl  s    (   RD   R   R   R^   t   IntegerR'   R   (   R    Ry   R   (    (   R   RT   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_nansum  s    	i
   c         ` sq   t  |  t j  s d  St  |  j t j  r7 t j } n	 |  j } | d   t |  j       f d   } | S(   Ni   c         ` sI    } x< t  j |   D]+ } | j   }   |  s | | 9} q q W| S(   N(   RN   RO   RP   (   R    RR   R   RS   (   R   t   one(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nanprod_impl  s    (   RD   R   R   R^   R   R'   R   (   R    Ry   R   (    (   R   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   np_nanprod  s    	i   c         ` sy   t  |  t j  s d  St  |  j t j t j f  r; d   S|  j  t      d       f d   } | Sd  S(   Nc         S` s   t  j |   S(   N(   RN   t   cumprod(   R    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   <lambda>  t    i   c         ` sc   t  j |  j   }  } xA t |  j  D]0 \ } }   |  rQ | | 9} n  | | | <q+ W| S(   N(   RN   R   R   R   R   (   R    R   RR   R   RS   (   t   is_nanR   Ry   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nancumprod_impl  s    (   RD   R   R   R^   t   BooleanR   R   (   R    R   (    (   R   R   Ry   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_nancumprod  s    		c         ` sy   t  |  t j  s d  St  |  j t j t j f  r; d   S|  j  t      d       f d   } | Sd  S(   Nc         S` s   t  j |   S(   N(   RN   t   cumsum(   R    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   .  R   i    c         ` sc   t  j |  j   }  } xA t |  j  D]0 \ } }   |  rQ | | 7} n  | | | <q+ W| S(   N(   RN   R   R   R   R   (   R    R   RR   R   RS   (   R   Ry   RT   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nancumsum_impl4  s    (   RD   R   R   R^   R   R   R   (   R    R   (    (   R   Ry   RT   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_nancumsum'  s    		c         C` s5   t  |   } t |  d k r- t d   n | Sd  S(   Ni    s&   zero-size array reduction not possible(   t   _asarrayR7   R`   (   R    RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   prepare_ptp_input@  s    c         ` s     f d   } | S(   Nc         ` s7   t  |  t j  r$   f d   } n   f d   } | S(   Nc         ` sH     | j  |  j   r | S| j  |  j  k rD   | j |  j  rD | S|  S(   N(   R   R   (   t   current_valR   (   Rr   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   Q  s    c         ` s     | |   r | S|  S(   N(    (   R   R   (   Rr   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   Y  s    (   RD   R   R   (   R   R   R   (   Rr   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _compute_current_val_implJ  s    (    (   Rr   R   (    (   Rr   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _compute_current_val_impl_genI  s    c         ` sa   d   t  |  t j  r*   f d   } n3 t  |  t j  rN   f d   } n   f d   } | S(   Ni    c         ` s^   t  j |  j  rP t  j |  j  r< t t  j t  j d f St t  j d f Sn
 t   f Sd  S(   Ny              ?y                (   RN   R   R   R   R   t   nanR   (   R   (   t   UNUSED(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   g  s
    c         ` s*   t  j |   r t t  j f St   f Sd  S(   N(   RN   R   R   R   R   (   R   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   p  s    c         ` s
   t    f S(   N(   R   (   R   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   v  s    (   RD   R   R   R   (   R   R   (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _early_returnc  s    c         C` sC   t  |  d  r6 t |  j t j  r6 t d   q6 n  d   } | S(   NR^   s+   Boolean dtype is unsupported (as per NumPy)c   	      S` s   t  |   } | j } | d } | d } x[ t | j  D]J } | | } t |  \ } } | re | St | |  } t | |  } q9 W| | S(   Ni    (   R   R   R%   R   R   t   _compute_a_maxt   _compute_a_min(	   R    RQ   t   a_flatt   a_mint   a_maxR!   R   t   take_brancht   retval(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_ptp_impl  s    	


(   t   hasattrRD   R^   R   R   R   (   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_ptp{  s
    	c         C` s4   t  j |   r t St  j |  r& t S|  | k  Sd  S(   N(   RN   R   R   R   (   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nan_aware_less_than  s
    c         ` s     f d   } | S(   Nc         ` s  | | d ?}   |  | |  |  rE |  | |  | |  | <|  | <n    |  | |  |  r| |  | |  | |  | <|  | <n    |  | |  |  r |  | |  | |  | <|  | <n  |  | } |  | |  | |  | <|  | <| } | d } x t  rx- | | k  r"  |  | |  r"| d 7} q Wx- | | k rR  | |  |  rR| d 8} q&W| | k rcPn  |  | |  | |  | <|  | <| d 7} | d 8} q W|  | |  | |  | <|  | <| S(   Ni   (   R   (   t   At   lowt   hight   midt   pivotR!   t   j(   t	   pivotimpl(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   _partition  s.       

	""
(    (   R
  R  (    (   R
  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _partition_factory  s    !c         ` s     f d   } | S(   Nc         ` st     |  | |  } xW | | k rk | | k  rL | d }   |  | |  } q | d }   |  | |  } q W|  | S(   sJ   
        Select the k'th smallest element in array[low:high + 1].
        i   (    (   R   t   kR  R  R!   (   t   partitionimpl(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _select  s    

(    (   R  R  (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _select_factory  s    c         C` s   x t  r | | k s t  t |  | |  } | | k  rF | d } q | | d k rc | d } q | | k r t |  | d | d |  Pq t |  | | | d  Pq W|  | |  | d f S(   s   
    Select the k'th and k+1'th smallest elements in array[low:high + 1].

    This is significantly faster than doing two independent selections
    for k and k+1.
    i   (   R   t   AssertionErrorR  R  (   R   R  R  R  R!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _select_two  s    	c         C` sl   d } | d } | d ?} | d @d k rU t  |  | d | |  \ } } | | d St |  | | |  Sd S(   st   
    The main logic of the median() call.  *temp_arry* must be disposable,
    as this function will mutate it.
    i    i   i   N(   R  R  (   t	   temp_arryt   nR  R  t   halfR    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _median_inner  s    

c         C` s#   t  |  t j  s d  Sd   } | S(   Nc         S` s&   |  j    } | j d } t | |  S(   Ni    (   t   flattenRb   R  (   R    R  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   median_impl  s    (   RD   R   R   (   R    R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_median  s    	c      
   C` sk  t  |   } | d k r@ t j t  |  |  d d t j } n't j t  |  d t j } xt t  |   D]} | | } | d k r t j |   } t j t j |    rYt j |  r t j	 } q qYn| d k rt j
 |   } t j t j |    rYt j |  t j k  } t j |  t j k  } | | | }	 |	 d k rbt j	 } n  | d k r| d k rt j	 } n  | d k rt j	 } n  |	 d k r| d k r| d k rt j	 } qqqqYn d | d t j | d  }
 t j |
  } |
 | } t |  d t | d  d d d	 | d \ } } | d | | | } | | | <qq W| S(
   Ni   i    R^   id   i   g      Y@R  R  R  (   R7   RN   Rd   t   float64R   R%   t   maxR   t   isfiniteR   t   mint   sumt   inft   true_dividet   matht   floorR  t   int(   R    t   qR  R   R!   t
   percentileR   t   num_pos_inft   num_neg_inft
   num_finitet   rankt   fR   t   lowert   upper(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _collect_percentiles_inner  sD    (

2c         C` sn   | r* |  | }  t  |   d k r= t Sn t j |  r= t St  |   d k rf |  d } t j |  St Sd  S(   Ni    i   (   R7   R   RN   R   R  R   (   R    t   nan_maskt   skip_nanR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _can_collect_percentilesN  s    
c         C` s   t  } |  j d k r~ |  j d k  r~ x t |  j  D]C } |  | d k  sm |  | | k sm t j |  |  r4 t } Pq4 q4 WnK t j t j |    s t j |  d k   s t j |  | k  r t } n  | S(   Ni   i
   g        (   R   R_   R   R%   RN   R   R   R   (   R$  t   q_upper_boundt   validR!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   check_valid_  s    3B	c         C` s%   t  |  d d s! t d   n  d  S(   NR1  g      Y@s)   Percentiles must be in the range [0, 100](   R3  R`   (   R$  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   percentile_is_validp  s    c         C` s%   t  |  d d s! t d   n  d  S(   NR1  g      ?s%   Quantiles must be in the range [0, 1](   R3  R`   (   R$  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   quantile_is_validv  s    c         C` s   t  j | d t  j j   } | |  | | } t  j |  d t  j j   } t  j |  } t | | |  r | | } t | |  } n t  j t |  t  j	  } | S(   NR^   (
   RN   R   R  R  R   R0  R-  Rd   R7   R   (   R    R$  t   check_qt   factorR/  R  R.  R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _collect_percentiles|  s    

c         ` s   t  |   } t j | t j  r0 t d   n      f d   }     f d   } t | t j t j f  ry | St | t j	  r | j
 d k r | S| Sd S(   s   
    The underlying algorithm to find percentiles and quantiles
    is the same, hence we converge onto the same code paths
    in this inner function implementation
    s   Not supported for complex dtypec         ` s   t  |  |      d S(   Ni    (   R8  (   R    R$  (   R6  R7  R/  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_percentile_q_scalar_impl  s    c         ` s   t  |  |      S(   N(   R8  (   R    R$  (   R6  R7  R/  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_percentile_impl  s    i    N(   R   RN   R   R   R   RD   R   t   NumberR   R   R_   (   R    R$  R/  R7  R6  R   R9  R:  (    (   R6  R7  R/  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _percentile_quantile_inner  s    !c      	   C` s   t  |  | d t d d d t S(   NR/  R7  g      ?R6  (   R<  R   R4  (   R    R$  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_percentile  s    i   c      	   C` s   t  |  | d t d d d t S(   NR/  R7  g      ?R6  (   R<  R   R4  (   R    R$  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_nanpercentile  s    i   c      	   C` s   t  |  | d t d d d t S(   NR/  R7  g      Y@R6  (   R<  R   R5  (   R    R$  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_quantile  s    c      	   C` s   t  |  | d t d d d t S(   NR/  R7  g      Y@R6  (   R<  R   R5  (   R    R$  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_nanquantile  s    i	   c         ` s8   t  |  t j  s d  St |  j      f d   } | S(   Nc         ` s   t  j |  j |  j  } d } xF t  j |   D]5 } | j   }   |  s. | | | <| d 7} q. q. W| d k rz t  j St | |  S(   Ni    i   (   RN   R   R   R^   RO   RP   R   R  (   R    R  R  R   RS   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   nanmedian_impl  s    
(   RD   R   R   R   R^   (   R    RA  (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_nanmedian  s
    c   	      C` s   t  j |   } t  j |  j d   } xh | D]` } |  | j   } d } t |  d } x' | D] } t | | | |  | } q_ W| | | <q, W| S(   Nii    i   (   RN   t
   empty_liket   ndindexRb   t   copyR7   t   _select_w_nan(	   R    t	   kth_arrayR   R   t   sR   R  R  t   kth(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_partition_impl_inner  s    
c         C` s   t  |  j t j  } | j d k r6 t d   n  t j t j |  |  j d k  rj t d   n  t j	 |  } xK t j
 |  D]: \ } } | d k  r | |  j d | | <q | | | <q Wt j |  S(   s  
    Returns a sorted, unique array of kth values which serve
    as indexers for partitioning the input array, a.

    If the absolute value of any of the provided values
    is greater than a.shape[-1] an exception is raised since
    we are partitioning along the last axis (per Numpy default
    behaviour).

    Values less than 0 are transformed to equivalent positive
    index values.
    i   s   kth must be scalar or 1-Dis   kth out of boundsi    (   R   t   astypeRN   t   int64R_   R`   R   t   absRb   RC  t   ndenumeratet   unique(   R    RI  RG  R   t   indexR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   valid_kths  s    %c         C` s   t  |  t j t j t j f  s0 t d   n  t  |  t j  r` |  j d k r` t d   n  t | d |  } t  | t j t j	 f  s t d   n  d   } | S(   Ns(   The first argument must be an array-likei    s3   The first argument must be at least 1-D (found 0-D)R^   s   Partition index must be integerc         S` sE   t  |   } | j d k r% | j   St | |  } t | |  Sd  S(   Ni    (   R   R   RE  RQ  RJ  (   R    RI  t   a_tmpRG  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_partition_impl,  s
    
(
   RD   R   R   t   SequenceRG   t	   TypeErrorR_   Rt   R   R   (   R    RI  t   kthdtRS  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_partition  s    !!	c         C` s   t  d |   t  d |  f } t j | d t j } xh t | d  D]V } t t  d | | d  | d  } d | | d  |  f <d | | | d   f <qG W| S(   Ni    R^   i   (   R  RN   R   R  R%   R  (   t   Nt   MR  Rb   R   R!   t   m_max(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   _tri_impl:  s    $c         C` s:   t  | t t j f  s' t d   n  d  d d  } | S(   Ns   k must be an integeri    c         S` s%   | d  k r |  } n  t |  | |  S(   N(   R>   R[  (   RX  RY  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   tri_implN  s    	(   RD   R#  R   R   RU  R>   (   RX  RY  R  R\  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_triG  s    c         C` sd   |  j  d k s t  t |   } t j | | f d |  j } x t |  D] } |  | | <qL W| S(   sq   
    Takes a 1d array and tiles it to form a square matrix
    - i.e. a facsimile of np.tile(m, (len(m), 1))
    i   R^   (   R_   R  R7   RN   R   R^   R%   (   R   t   len_mR   R!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _make_squareV  s    c         C` sZ   t  j |  j d d |  j d d | j t  j  } t  j | |  t  j |  d |  j  S(   NiRY  iR  R^   (   RN   t   triRb   RK  t   uintt   wheret
   zeros_likeR^   (   R   R  t   mask(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_tril_impl_2dg  s    5c         C` sm   t  | t t j f  s' t d   n  d d  } d d  } |  j d k rR | S|  j d k re t S| Sd  S(   Ns   k must be an integeri    c         S` s   t  |   } t | |  S(   N(   R_  Re  (   R   R  t   m_2d(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_tril_impl_1dt  s    c         S` s   t  j |  j d d |  j d d | j t  j  } t  j |  j d   } t  j |   } t  j | d |  j } x+ | D]# } t  j	 | |  | |  | | <qy W| S(   NiRY  iR  R^   (
   RN   R`  Rb   RK  Ra  RD  RC  Rc  R^   Rb  (   R   R  Rd  R   t   zt   zero_optt   sel(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_tril_impl_multix  s    5!i   i   (   RD   R#  R   R   RU  R_   Re  (   R   R  Rg  Rk  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   my_trilm  s    	c         C` s^   t  j |  j d d |  j d d | d j t  j  } t  j | t  j |  d |  j |   S(   NiRY  iR  i   R^   (   RN   R`  Rb   RK  Ra  Rb  Rc  R^   (   R   R  Rd  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_triu_impl_2d  s    9c         C` sm   t  | t t j f  s' t d   n  d d  } d d  } |  j d k rR | S|  j d k re t S| Sd  S(   Ns   k must be an integeri    c         S` s   t  |   } t | |  S(   N(   R_  Rm  (   R   R  Rf  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_triu_impl_1d  s    c         S` s   t  j |  j d d |  j d d | d j t  j  } t  j |  j d   } t  j |   } t  j | d |  j } x+ | D]# } t  j	 | | |  |  | | <q} W| S(   NiRY  iR  i   R^   (
   RN   R`  Rb   RK  Ra  RD  RC  Rc  R^   Rb  (   R   R  Rd  R   Rh  Ri  Rj  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_triu_impl_multi  s    9!i   i   (   RD   R#  R   R   RU  R_   Rm  (   R   R  Rn  Ro  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   my_triu  s    	c         C` s   d  S(   N(    (   RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _prepare_array  s    c         C` s'   |  d  t j f k r d   Sd   Sd  S(   Nc         S` s   t  j d  S(   N(    (   RN   t   array(   RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     R   c         S` s   t  |   j   S(   N(   R   t   ravel(   RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     R   (   R>   R   t   none(   RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _prepare_array_impl  s    c         C` s   |  } x t  r t | t j t j f  r4 t |  St | d d   } | d  k	 rh |   d k rh t j	 St | d d   } | d  k r t
 d   n  t | t j  r | j } q	 t |  Sq	 Wd  S(   Nt   __len__i    R^   s   type has no dtype attr(   R   RD   R   R;  R   R   Rt   R>   RN   R  RU  RT  R^   (   t   inobjt   objt   lR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _dtype_of_compound  s    	
c         C` s  t  |  t j  r9 t  |  j t j  r9 t d   q9 n  t d k r t |   } d  } t	 |  sr t |  } n  d  } t	 |  s t |  } n  | d  k	 r t
 j | |  r d } t |   n  | d  k	 r t
 j | |  r d } t |   q n  d  d  d  } | S(   Ns+   Boolean dtype is unsupported (as per NumPy)i   i   s3   dtype of to_begin must be compatible with input arys1   dtype of to_end must be compatible with input aryc   
      S` s  t  |  } t  |   } t  |  } | j } t |  d k r t j t |  t |  t |  d d | } t |  } t |  t |  d }	 | | | *t j |  | | |	 +| | |	 )nE t j t |  t |  d | } t |  } | | | *| | | )| S(   Ni    i   R^   (   Rq  R^   R7   RN   R   t   diff(
   t   aryt   to_endt   to_begint   startR  t   endt	   out_dtypeR   t	   start_idxt   mid_idx(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_ediff1d_impl  s     	3
%

(   i   i   (   RD   R   R   R^   R   RU  R   Rz  R>   t   _is_nonelikeRN   t   can_cast(   R|  R}  R~  t   ary_dtt   to_begin_dtt	   to_end_dtR   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   np_ediff1d  s&    c         C` s   d  S(   N(    (   RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _select_element   s    c         C` s<   t  |  d d   d k } | r+ d   } | Sd   } | Sd  S(   NR_   i    c         S` s'   t  j d d |  j } |  | (| d S(   Ni   R^   i    (   i   (   RN   Rr  R^   (   RQ   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    c         S` s   |  S(   N(    (   RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    (   Rt   R>   (   RQ   t   zerodR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _select_element_impl  s    		c         C` s   d  S(   N(    (   t   dxR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _get_d  s    c         C` s%   t  |   r d   } n	 d   } | S(   Nc         S` s   t  j |  S(   N(   RN   R   (   R   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    c         S` s   t  j t  j |    S(   N(   RN   R{  R   (   R   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    (   R  (   R   R  R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   get_d_impl  s    	g      ?c         C` sm   t  |  t j t j f  r* t d   n0 t  |  t j  rZ |  j d k rZ t d   n  d  d d  } | S(   Ns   y cannot be a scalari    s   y cannot be 0Dg      ?c         S` sx   t  j |   } t | |  } | d t d d   f | d t d  d  f d } t  j | | d  } t |  } | S(   N.i   ig       @(   RN   R   R  R=   R>   R  R  (   t   yR   R  t   yarrt   dt   y_avet   rett	   processed(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   -  s    4(   RD   R   R;  R   R   R   R_   R>   (   R  R   R  R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_trapz"  s    !c         C` s8  | j  \ } } | t |   k s' t  | | k s9 t  | r x t |  D]a } | d k rw d | d d  | f <qL t j |  | d d  | d f  | d d  | f <qL Wn x} t | d d d  D]e } | | d k r d | d d  | f <q t j |  | d d  | d f  | d d  | f <q Wd S(   s*  
    Generate an N-column Vandermonde matrix from a supplied 1-dimensional
    array, x. Store results in an output matrix, out, which is assumed to
    be of the required dtype.

    Values are accumulated using np.multiply to match the floating point
    precision behaviour of numpy.vander.
    i    i   Ni(   Rb   R7   R  R%   RN   t   multiply(   R   RX  t
   increasingR   R   R  R!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   _np_vander8  s    
=c         C` s=   |  j  d k r t d   n  | d k  r9 t d   n  d  S(   Ni   s.   x must be a one-dimensional array or sequence.i    s#   Negative dimensions are not allowed(   R_   R`   (   R   RX  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _check_vander_paramsT  s    c         ` s   | d  t j f k r9 t | t j  s9 t d   q9 n  d  t   f d  } d  t d  } t |  t j  r t |  j	  } t
 j | t    | St |  t j t j f  r | Sd  S(   Ns,   Second argument N must be None or an integerc         ` sf   | d  k r t |   } n  t |  |  t j t |   t |  f d   } t |  | | |  | S(   NR^   (   R>   R7   R  RN   R   R#  R  (   R   RX  R  R   (   R^   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_vander_implb  s    'c         S` sx   | d  k r t |   } n  t j |   } t | |  t j t |   t |  f d | j } t | | | |  | S(   NR^   (	   R>   R7   RN   Rr  R  R   R#  R^   R  (   R   RX  R  t   x_arrR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_vander_seq_impln  s    *(   R>   R   Rt  RD   R   R   R   R   R   R^   RN   t   promote_typesR#  RG   RT  (   R   RX  R  R  R  t   x_dt(    (   R^   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_vander\  s    c         C` s]   t  | t j t j f  s* t d   n  d   } t  |  t j t j f  rU d   S| Sd  S(   Ns   shift must be an integerc         S` ss   t  j |   } t  j | j d | j } | j } x9 t | j  D]( } | | | j } | | | j | <qC W| S(   NR^   (   RN   R   R   Rb   R^   R   R%   R   (   R    t   shiftRQ   R   t   arr_flatR!   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_roll_impl  s    	c         S` s   t  j |   S(   N(   RN   R   (   R    R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     R   (   RD   R   R   R   R   R;  (   R    R  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_roll  s    	c         C` s  d } | } |  | | d k r$ | S|  | d k  r8 d S| d k r d } x* | | k  rv |  | | k rv | d 7} qM W| d S| | d k r | d } n  | d k  r d } n  |  | | k  r|  | | d k  r| d } | t  k r|  | | t  k r| t  } qq| d Sns |  | | d k  r2| S|  | | d k  rN| d S| d } | | t  d k  r|  | | t  k  r| t  } n  xE | | k  r| | | d ?} |  | | k r| d } q| } qW| d S(   Ni    i   ii   i   i   (   t   LIKELY_IN_CACHE_SIZE(   t   keyRQ   t   lengtht   guesst   imint   imaxR!   t   imid(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   binary_search_with_guess  sH    	


c         C` s  t  j |   } t  j |  } t  j |  } t |  d k rN t d   n  t |  t |  k ru t d   n  | j d k r t  j | j d | d d | St  j | j d | } | j } t |  }	 | d }
 | |	 d } |	 d k ru| d } | d } xt |  D]X } | j	 | } | | k  rE|
 | j	 | <q| | k ra| | j	 | <q| | j	 | <qWntd } |	 | k rt  j |	 d d | } n t  j d d | } | j rKx t |	 d  D]r } d | | d | | } | | d j
 | | j
 | } | | d j | | j | } | d | | | <qWn  xt |  D]} | j	 | } t  j |  r| } d } | d | | j	 | <qXn  t | | |	 |  } | d	 k r|
 | j	 | <qX| |	 k r| | j	 | <qX| |	 d k r| | | j	 | <qX| j r(| | } nh d | | d | | } | | d j
 | | j
 | } | | d j | | j | } | d | } | j
 | | | | | j
 } | j | | | | | j } | d | | j	 | <qXW| S(
   Ni    s   array of sample points is emptys#   fp and xp are not of the same size.i   t
   fill_valueR^   y              ?g        i(   RN   R   R7   R`   R   Rd   Rb   R   R%   R   R   R   R   R  (   R   t   xpt   fpR^   t   dzR  t   dyt   drest   lenxt   lenxpt   lvalt   rvalt   xp_valt   fp_valR!   t   x_valR	  t   slopest   inv_dxR   R   t   slope(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_interp_impl_complex_fp_inner  st     	


	  	    	c         ` s   t    f d    } | S(   Nc      	   ` sE  t  j |   } t  j |  } t  j |  } t |  d k rN t d   n  t |  t |  k ru t d   n  | j d k r t  j | j d | d d | St  j | j d | } | j } t |  }	 | d }
 | |	 d } |	 d k ru| d } | d } x5t |  D]X } | j	 | } | | k  rE|
 | j	 | <q| | k ra| | j	 | <q| | j	 | <qWnd } |	 | k rt  j |	 d d | } n t  j d d | } | j rKx t |	 d  D]r } d | | d | | } | | d j
 | | j
 | } | | d j | | j | } | d | | | <qWn  xt |  D]} | j	 | } t  j |  r| } d } | d | | j	 | <qXn  t | | |	 |  } | d	 k r|
 | j	 | <qX| |	 k r| | j	 | <qX| |	 d k r| | | j	 | <qX| | | k r6| | | j	 | <qX| j rL| | } nh d | | d | | } | | d j
 | | j
 | } | | d j | | j | } | d | }   rt |  | | | | | |  } | | j	 | <qX| j
 | | | | | j
 } | j | | | | | j } | d | | j	 | <qXW| S(
   Ni    s   array of sample points is emptys#   fp and xp are not of the same size.i   R  R^   y              ?g        i(   RN   R   R7   R`   R   Rd   Rb   R   R%   R   R   R   R   R  t'   np_interp_impl_complex_fp_innermost_117(   R   R  R  R^   R  R  R  R  R  R  R  R  R  R  R!   R  R	  R  R  R   R   R  Ri   (   t   np117_nan_handling(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   F  s    	 	


	  	    (   R   (   R  R   (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt'   np_interp_impl_complex_fp_inner_factoryE  s    ec   	      C` s:  | j  | | | | | j  } t j |  r | j  | | | d | | d j  } t j |  r | | j  | | d j  k r | | j  } q n  | j | | | | | j } t j |  r.| j | | | d | | d j } t j |  r.| | j | | d j k r.| | j } q.n  | d | S(   Ni   y              ?(   R   RN   R   R   (	   R   R  R  R  R  R!   R	  R   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR    s    	 (- (-c         C` s  t  j |   } t  j |  } t  j |  } t |  d k rN t d   n  t |  t |  k ru t d   n  | j d k r t  j | j d | d d | St  j | j d | } | j } t |  }	 | d }
 | |	 d } |	 d k ru| d } | d } xt |  D]X } | j	 | } | | k  rE|
 | j	 | <q| | k ra| | j	 | <q| | j	 | <qWndd } |	 | k r| d | d  | d | d  } n t  j d d | } xt |  D]} | j	 | } t  j
 |  r| | j	 | <qn  t | | |	 |  } | d k r4|
 | j	 | <q| |	 k rP| | j	 | <q| |	 d k rt| | | j	 | <q| j r| | } n* | | d | | | | d | | } | | | | | | | j	 | <qW| S(   Ni    s   array of sample points is emptys#   fp and xp are not of the same size.i   R  R^   i(   RN   R   R7   R`   R   Rd   Rb   R   R%   R   R   R  (   R   R  R  R^   R  R  R  R  R  R  R  R  R  R  R!   R  R	  R  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_interp_impl_inner  sZ     	


%	*%c         ` s     f d   } | S(   Nc         ` s  t  j |   } t  j |  } t  j |  } t |  d k rN t d   n  t |  t |  k ru t d   n  | j d k r t  j | j d | d d | St  j | j d | } | j } t |  }	 | d }
 | |	 d } |	 d k ru| d } | d } x~t |  D]X } | j	 | } | | k  rE|
 | j	 | <q| | k ra| | j	 | <q| | j	 | <qWnd } |	 | k r| d | d  | d | d  } n t  j d d | } xt |  D]} | j	 | } t  j
 |  r| | j	 | <qn  t | | |	 |  } | d k r4|
 | j	 | <q| |	 k rP| | j	 | <q| |	 d k rt| | | j	 | <q| | | k r| | | j	 | <q| j r| | } n* | | d | | | | d | | } | | | | | | | j	 | <  rt  j
 | j	 |  r| | | | d | | d | j	 | <t  j
 | j	 |  r| | | | d k r| | | j	 | <qqqqW| S(   Ni    s   array of sample points is emptys#   fp and xp are not of the same size.i   R  R^   i(   RN   R   R7   R`   R   Rd   Rb   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  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     sh     	


%	*!).(    (   R  R   (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_interp_impl_inner_factory  s    WR  c   
      ` s  t  | d  r- | j d k r- t d   n  t  | d  rZ | j d k rZ t d   n  d } t |  } t j | t j  r t |   n  t d k  r t |  } t j | t j  r t |   q n  t d k r t } t	 } n' t d k rt
 } t } n t } t } t |  } t j | t j    t j   t j  rP|  n |     f d	   }    f d
   }	 t |  t j  rt |  t j  rt |   n  |	 S| S(   NR_   i   s   xp must be 1Ds   fp must be 1Ds:   Cannot cast array data from complex dtype to float64 dtypei   i   i   c         ` s    |  | |    S(   N(    (   R   R  R  (   R^   t   inner(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_interp_impl  s    c         ` s    |  | |    j  d S(   Ni    (   R   (   R   R  R  (   R^   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_interp_scalar_impl  s    (   i   i   (   i   i   (   i   i   (   R  R_   R   R   RN   R   R   R   t   np_interp_impl_inner_post_np117t'   np_interp_impl_complex_inner_post_np117t   np_interp_impl_inner_pre_np117t&   np_interp_impl_complex_inner_pre_np117R  R  t   result_typeR  RD   R   R;  R   (
   R   R  R  t   complex_dtype_msgt   xp_dtt   fp_dtR   t   impl_complexR  R  (    (   R^   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_interp  s@    			c         C` s   |  j  d k s t  |  j \ } } t j | d f d |  j } xA t |  D]3 } t j |  | d  d   f  | | | d f <qO W| S(   Ni   i   R^   i    (   R_   R  Rb   RN   R   R^   R%   R  (   R    R   R  R   R!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   row_wise_average  s    1c         C` s   | d  k r$ | r d } q$ d } n  |  j d | } t | d  } |  t |   8}  t j |  t j |  j   } | t j d |  9} | S(   Ni    i   g        (	   R>   Rb   R  R  RN   t   dotR   t   TR   (   t   Xt   biast   ddoft   factRR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_cov_impl_inner  s    		c           C` s   d  S(   N(    (    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _prepare_cov_input_inner  s    c         C` s.   | d  t j f k r! d   } n	 d   } | S(   Nc         S` s+   t  j t |    } | s' | j } n  | S(   N(   RN   t
   atleast_2dR   R  (   R   R  t   rowvarR^   t   m_arr(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR    s    c         S` s  t  j t |    } t  j t |   } | sq | j d d k rO | j } n  | j d d k rq | j } qq n  | j \ } } | j \ } }	 | |	 k r t d   n  t  j | | | f d | }
 | |
 d  |  d  d   f <| |
 | d   d  d   f <|
 S(   Ni    i   s$   m and y have incompatible dimensionsR^   (   RN   R  R   Rb   R  R`   R   (   R   R  R  R^   R  t   y_arrt   m_rowst   m_colst   y_rowst   y_colsR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR  	  s    (   R>   R   Rt  (   R   R  R  R^   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _prepare_cov_input_impl  s    	c         C` s;   |  j  d k r7 |  j d d k r7 d } t |   n  d  S(   Ni   i    i   s   2D array containing a single row is unsupported due to ambiguity in type inference. To use numpy.cov in this case simply pass the row as a 1D array, i.e. m[0].(   R_   Rb   t   RuntimeError(   R   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _handle_m_dim_change	  s    "c         C` s   |  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   (	  R   c         C` s6  t  j } t |  t j  r- t |  j  } nt |  t j t j f  rW t |   } n t |  t j	 t j
 f  r2t   } xM |  D]E } t | d  r g  | D] } | j |  ^ q q | j |  q Wt |  d k rt  j g  | D] } t |  ^ q   } q2t |  d k r2t | j    } q2n  | S(   NR   i   (   RN   R  RD   R   R   R   R^   R;  R   R8   RG   t   setR  t   addR7   R  Rc   (   t
   array_liket   array_like_dtt   coltypesR   RS   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   +	  s     		#+c         C` s   t  |  t j  r< |  j d k r t d j |    q ni t  |  t j  r t  |  j d t j  r t  |  j d j d t j  r t d j |    q q n  d  S(   Ni   s   {0} has more than 2 dimensionsi    (   RD   R   R   R_   RU  R   RT  R  (   R  t   name(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   check_dimensions@	  s     c         C` sG   t  j |   s t d   n  |  t |   d k rC t d   n  d  S(   Ns)   Cannot convert non-finite ddof to integeri    s   ddof must be integral value(   RN   R  R`   R#  (   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _handle_ddofJ	  s    c         C` s   |  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   R	  R   c         C` s'   | |   | |  t  |  | | |  S(   N(   R  (   R   R  R  R^   R  t   _DDOF_HANDLERt   _M_DIM_HANDLER(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _prepare_cov_inputU	  s    

c         C` s   | d  t j f k } t |  t j  r: |  j d k r: | St |  t j  r t d   |  j D  ri | St |  j  d k r t |  j d t j  r | Sn  t |  t j	 t j
 f  r | St |  t j  r t |  j d t j  r | r t Sn  t S(   Ni   c         s` s*   |  ]  } t  | t j t j f  Vq d  S(   N(   RD   R   R;  R   (   t   .0R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pys	   <genexpr>c	  s    i    (   R>   R   Rt  RD   R   R_   t	   BaseTupleR   R7   R;  R   RT  R  R   R   (   t   mandatory_inputt   optional_inputt   opt_is_none(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_result_expected\	  s    !. c         C` s+   t  j t  j |   d k t  j |   |   S(   Ni   (   RN   Rb  t   fabst   sign(   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   _clip_corrs	  s    c         C` s*   t  |  j  } t  |  j  } | d | S(   Ny              ?(   R  R   R   (   R   R   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _clip_complexx	  s    c   	      ` s1  t  |  d  t  | d  | d  t j f k r8 t   nK t | t j t j f  r\ t   n' t | t j  rw t	   n t
 d   t  t |  t j  r t  n  t |   } t |  } t j | | t j   d  t t d      f d  } d  t t d      f d  } t |  |  r)| S| Sd  S(   NR   R  s)   ddof must be a real numerical scalar typec         ` s   t  |  | |  |     j   } t j t j | j  d k  rx t j | j d | j d f d t j d  St | | |  Sd  S(   Ni    R  R^   (	   R  RK  RN   R   Rr  Rb   Rd   R   R  (   R   R  R  R  R  R  (   R  R  R^   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_cov_impl	  s    '!0c         ` sz   t  |  | | |      j   } t j t j | j  d k  rT t j } n t | | |  j d } t j |  S(   Ni    (	   R  RK  RN   R   Rr  Rb   R   R  R   (   R   R  R  R  R  R  t   variance(   R  R  R^   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_cov_impl_single_variable	  s
    '!(   R  R>   R   Rt  t   _handle_ddof_nopRD   R   R   R   R  R   t   _handle_m_dim_nopR   R  R   RN   R  R  R   R   R  (	   R   R  R  R  R  t   m_dtt   y_dtR  R  (    (   R  R  R^   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_cov	  s(    				!!
c         ` s   t  |   } t  |  } t j | | t j  } | t j k rH t   n t   d  t   f d  } d  t d  } t	 |  |  r | S| Sd  S(   Nc         ` s   t  j |  | |  } t  j |  } t  j | j  } xS t | j d  D]> } | | d  d   f c | <| d  d   | f c | <qJ W  |  S(   Ni    (   RN   t   covt   diagt   sqrtR   R%   Rb   (   R   R  R  RR   R  t   stddevR!   (   t   clip_fn(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_corrcoef_impl	  s     c         S` s   t  j |  | |  } | | S(   N(   RN   R  (   R   R  R  RR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt    np_corrcoef_impl_single_variable	  s    (
   R   RN   R  R  t   complexR  R  R>   R   R  (   R   R  R  R  R   R^   R  R  (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_corrcoef	  s    	c         C` sU   t  d k  r0 t |  t j  s0 t d   q0 n  t |   rH d   } n	 d   } | S(   Ni   i   s   Argument 'a' must be an arrayc         S` s)   t  j |   } t  j t  j |   d S(   Ni    (   RN   R   t   nonzeroRs  (   R    RQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   	  s    c         S` sM   |  d  k r. g  t d  D] } | ^ q } n	 d g } t j | d t j S(   Ni    R^   (   R>   R%   RN   Rr  R   R'   (   R    R   R2   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   	  s    "	(   i   i   (   R   RD   R   R   R   R   (   R    R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_flatnonzero	  s    	c         C` s   |  j  d k r\ |  j d } |  j d } d | } | rF | | } q | t | |  } nh t j |  j  } t j t j |  d k  s t d   n  d t j | d   j	   } | j
   } | | f S(   Ni   i    i   s/   All dimensions of input must be of equal lengthi(   R_   Rb   R  RN   Rr  R   R{  R`   R   R  t   prod(   R    t   wrapR   R  t   stepR  Rb   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _fill_diagonal_params	  s    
c         C` sC   t  |  |  \ } } x' t d | |  D] } | |  j | <q( Wd  S(   Ni    (   R  R%   R   (   R    R   R  R  R  R!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _fill_diagonal_scalar
  s    c         C` sm   t  |  |  \ } } d } t |  } x? t d | |  D]+ } | | |  j | <| d 7} | | } q: Wd  S(   Ni    i   (   R  R7   R%   R   (   R    R   R  R  R  t   ctrt   v_lenR!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _fill_diagonal
  s    
c         C` sz   t  j |  j  } | j } | j } t  j t  j |   sg t  j | | k   sg t  j | | k  rv t d   n  d  S(   Ns'   Unable to safely conform val to a.dtype(   RN   t   iinfoR^   R  R  R   R  R`   (   R    R   R  t   v_mint   v_max(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _check_val_int
  s
    		Cc         C` st   t  j |  j  } | j } | j } | t  j |  } t  j | | k   sa t  j | | k  rp t d   n  d  S(   Ns'   Unable to safely conform val to a.dtype(   RN   t   finfoR^   R  R  R  R   R`   (   R    R   R  R  R  t   finite_vals(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _check_val_float'
  s    		*c         C` s   |  S(   N(    (   R   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   4
  R   c         C` s   d  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   7
  s    c         ` ss   t  |  t j  r d   St  |  t j t j f  r; d   St  |  t j t j f  ro t |       f d   Sd  S(   Nc         S` s   |  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   >
  R   c         S` s   t  j |   S(   N(   RN   Rr  (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   @
  R   c         ` s   t  j |  g d   S(   NR^   (   RN   Rr  (   R   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   C
  R   (   RD   R   R   RT  RG   R;  R   R   (   R   (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _asarray_impl;
  s    c         ` s   |  j  d k r t |  j t j  r- t   n$ t |  j t j  rK t   n t   t	   f d  } t	   f d  } t | t j t j t j
 f  r | St | t j t j t j f  r | Sn d |  j  } t |   d  S(   Ni   c         ` s3   t  |  j   }   |  |  t |  | |  d  S(   N(   R   R  R  (   R    R   R  t   tmpval(   t   checker(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_implT
  s    c         ` s3   t  |  j   }   |  |  t |  | |  d  S(   N(   R   R  R  (   R    R   R  R  (   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   non_scalar_implY
  s    s4   The first argument must be at least 2-D (found %s-D)(   R_   RD   R^   R   R   R  R   R  t
   _check_nopR   R   RG   RT  R   R   (   R    R   R  R  R   R   (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_fill_diagonalF
  s    		!!c         C` s   d |  j  f S(   Ns   llvm.rint.f%d(   t   bitwidth(   t   tp(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _np_round_intrinsicg
  s    c         C` s^   |  j  |  } | j } t j j | | g  } | j | d t |  } | j | | f  S(   NR  (   R#   t   modulet   lct   Typet   functiont   get_or_insert_functionR%  t   call(   RY   R+   R$  R   t   lltyR&  t   fntyt   fn(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _np_round_floatl
  s
    	c         C` s6   t  |  | | j d | d  } t |  | | j |  S(   Ni    (   R/  R,   R   RW   (   RY   R+   RZ   R,   R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_round_unary_floatt
  s     c         C` s    | d } t  |  | | j |  S(   Ni    (   R   RW   (   RY   R+   RZ   R,   R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_round_unary_integerz
  s    
c         C` s   | j  d j } |  j | | j  d | d  } t |  | | | j  | _ t |  | | | j  | _ | j   } t |  | | j |  S(   Ni    (	   R,   t   underlying_floatt   make_complexR/  R   R   t	   _getvalueR   RW   (   RY   R+   RZ   R,   t   flttyRh  R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_round_unary_complex
  s     c         C` s7   d   } |  j  | | | |  } t |  | | j |  S(   Nc         S` s   t  j |   s t  j |   r" |  S| d k r | d k rQ d | d } d } n d | } d } |  | | } t  j |  r |  St j |  | | Sd | } |  | } t j |  | Sd  S(   Ni    i   g      $@gMDg      ?(   R!  t   isinfR   RN   t   round(   R   t   ndigitst   pow1t   pow2R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   round_ndigits
  s    	

(   R(   R   RW   (   RY   R+   RZ   R,   R<  R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_round_binary_float
  s    	c         C` s7   d   } |  j  | | | |  } t |  | | j |  S(   Nc         S` s+   t  t j |  j |  t j |  j |   S(   N(   R	  RN   R8  R   R   (   Rh  R9  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR<  
  s    (   R(   R   RW   (   RY   R+   RZ   R,   R<  R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_round_binary_complex
  s    	c         C` s7   d   } |  j  | | | |  } t |  | | j |  S(   Nc         S` s[   |  j  | j  k r! t d   n  x3 t j |   D]" \ } } t j | |  | | <q1 W| S(   Ns   invalid output shape(   Rb   R`   RN   RN  R8  (   RQ   t   decimalsR   RP  R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_round_impl
  s
    (   R(   R   RW   (   RY   R+   RZ   R,   R@  R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_round
  s    	c         C` s7   d   } |  j  | | | |  } t |  | | j |  S(   Nc         S` sF   t  j |   } x0 t  j |   D] \ } } t  j |  | | <q W| S(   N(   RN   Rc  RN  t   sinc(   RQ   R   RP  R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_sinc_impl
  s    (   R(   R   RW   (   RY   R+   RZ   R,   RC  R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   array_sinc
  s    	c      	   C` sO   | j  } d   } |  j | | | | d t d |  } t |  | | j  |  S(   Nc         S` s3   |  d k r d }  n  |  t  j 9}  t  j |   |  S(   Ng        g#B;(   RN   t   pit   sin(   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_sinc_impl
  s    	RV   RR   (   RW   R(   RX   R   (   RY   R+   RZ   R,   R   RG  R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_sinc
  s
    		c         ` s   | j  d t j      f d   } t |  d k ri | t j f } t | j  | j t j	 f  } n  |  j
 | | | |  } t |  | | j  |  S(   Ni   c         ` s:   | r  t  j |  j |  j    St  j |  j |  j  Sd  S(   N(   RN   t   arctan2R   R   (   R   t   deg(   t   deg_mult(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_angle_impl
  s    i   (   RW   RN   RE  R7   R   t	   false_bitR   R,   R   t   booleanR(   R   (   RY   R+   RZ   R,   RL  R[   (    (   RK  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_angle_kwarg
  s    "c         ` s   | j  j     f d   } t |  d k r_ | t j f } t | j  | j t j f  } n  |  j	 | | | |  } t
 |  | | j  |  S(   Nc         ` sO   t  j |  d   } x3 t  j |   D]" \ } } t  j | |  | | <q% W| S(   NR^   (   RN   Rc  RN  t   angle(   RQ   RJ  R   RP  R   (   t	   ret_dtype(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_angle_impl
  s    i   (   RW   R^   R7   R   RM  R   R,   R   RN  R(   R   (   RY   R+   RZ   R,   RR  R[   (    (   RQ  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_angle_kwarg
  s    "s   array.nonzeroc         C` sE  | j  d } | j } | j } | j } t |  |  | | d  } t j | | j  }	 t j | | j  }
 | j	 } | j
 } |  j t j d  } |  j t j d  } t j | |  } t j | |	 | j   } t j | | |	 |
 | |  } t |  | | |  } |  j | | j |  } | j |  * | j | j | j |  |  |  Wd  QXWd  QX| j |  f } g  t |  D]! } t |  | | |  j   ^ q} g  | D] } t |  |  | |  ^ q} g  | D] } | j	 ^ q} t j | |  } t j | |	 | j   } t j | | |	 |
 | |  } t |  | | |  } |  j | | j |  } | j |   | s| f } n  | j |  } xS t |  D]E } t j | | | | d d | g  } t |  | | | | |  qW| j | j | |  |  Wd  QXWd  QX|  j | | j |  } t |  | | j |  S(   Ni    i   t   C(    (   R,   RW   R^   R   R   R   t   unpack_tupleRb   t   stridesR2   t   layoutR&   R   R'   t   alloca_once_valuet	   loop_nestRe   t   get_item_pointer2R   t   is_truet   if_thent   storeR  t   loadR%   R   R4  R   t
   make_tupleR   (   RY   R+   RZ   R,   t   arytyRy   t   outarytyt   noutsR|  Rb   RV  R2   RW  RT   R   R   t   indicest   ptrR   t   nzt	   out_shapeR!   t   outsR   t   outaryst	   out_datasRP  t   curR.   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_nonzero   sT    					11+(c         ` s   t  d   | j D  } t j t | j d j  t | j d j     | t  d  k so | t  d  k r   f d   } n   f d   } |  j | | | |  } t |  | | j |  S(   s'   
    np.where(array, array, array)
    c         s` s   |  ] } | j  Vq d  S(   N(   RW  (   R  R    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pys	   <genexpr>?  s    i   i   RT  t   Fc   
      ` s   |  j  } | j  | k s' | j  | k r6 t d   n  t j | d   } |  j } | j } | j } | j } x9 t |  j  D]( }	 | |	 r | |	 n | |	 | |	 <q W| S(   Ns%   all inputs should have the same shapeR^   (   Rb   R`   RN   RC  R   R%   R   (
   t   condR   R  Rb   R[   t   cft   xft   yft   rfR!   (   t   npty(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   where_implF  s    					&c         ` s   |  j  } | j  | k s' | j  | k r6 t d   n  t j |  j  d   } x; t j |   D]* \ } } | rz | | n | | | | <q^ W| S(   Ns%   all inputs should have the same shapeR^   (   Rb   R`   RN   R   RN  (   Rm  R   R  Rb   R[   R   RR   (   Rr  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyRs  S  s    	"(	   R  R,   RN   R  R   R^   R(   R   RW   (   RY   R+   RZ   R,   t   layoutsRs  R[   (    (   Rr  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   array_where;  s    $	c         C` s:   x3 t  j |   D]" \ } } | r( | n | | | <q W| S(   N(   RN   RN  (   Rm  R   R  R[   R   RR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _where_x_y_scalar`  s    c         C` s>   x7 t  j |   D]& \ } } | r( | n | | | | <q W| S(   N(   RN   RN  (   Rm  R   R  R[   R   RR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _where_x_scalarg  s    c         C` s>   x7 t  j |   D]& \ } } | r, | | n | | | <q W| S(   N(   RN   RN  (   Rm  R   R  R[   R   RR   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _where_y_scalarn  s    c         ` s   | j  \ } } } t |  } t |  }	 t j | |	   | j d k r`    f d   }
 n    f d   }
 |  j | |
 | |  } t |  | | j |  S(   NRl  c         ` s4   t  j t  j |  j d   }   |  | | |  S(   NR^   (   RN   t   asfortranarrayR   Rb   (   Rm  R   R  R[   (   R   Rr  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyRs  }  s    !c         ` s+   t  j |  j d  }   |  | | |  S(   NR^   (   RN   R   Rb   (   Rm  R   R  R[   (   R   Rr  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyRs    s    (   R,   R   RN   R  RW  R(   R   RW   (   RY   R+   RZ   R,   R   Rm  R   R  R  R   Rs  R[   (    (   R   Rr  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _where_inneru  s    R   c   
      C` s  | j  \ } } } t | t j  r t | t j  rx t | t j  rQ t } q t | t j t j f  r t } q n] t | t j t j f  r t | t j  r t } q t | t j t j f  r t	 } q n  | |  | | |  Sd   } |  j
 | | | |  }	 t |  | | j |	  S(   Nc         S` s/   |  r | n | } t  j |  } | | d <| S(   sH   
        np.where(scalar, scalar, scalar): return a 0-dim array
        (    (   RN   RC  (   Rm  R   R  t   scalRQ   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   scalar_where_impl  s    
(   R,   RD   R   R   Ru  R;  R   t   array_array_scalar_wheret   array_scalar_array_wheret   array_scalar_scalar_whereR(   R   RW   (
   RY   R+   RZ   R,   Rm  R   R  R   R|  R[   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   any_where  s     			c         C` s   d   } | S(   Nc         S` s   |  j  S(   N(   R   (   R    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_real_impl  s    (    (   R    R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_real  s    	c         C` s   d   } | S(   Nc         S` s   |  j  S(   N(   R   (   R    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_imag_impl  s    (    (   R    R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_imag  s    	c         C` s   |  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     R   c         C` s   t  j |   S(   N(   RN   R   (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     R   c         ` s   t  |  t j t j f  s* t d   n  t  | t j t j t j f  r t  | t j  rf t   n* t  | j t j  s t d   n  t	     f d   } | St  | t j  s t d   n  d   } | Sd  S(   Ns)   arr must be either an Array or a Sequences   obj should be of Integer dtypec         ` sW   t  j t  j |    }  |  j } t  j | d t  j }   |  } t | | <|  | S(   NR^   (   RN   Rs  R   R   t   onest   bool_R   (   RQ   Rx  RX  t   keep(   t   handler(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_delete_impl  s    	
c         S` s   t  j t  j |    }  |  j } | } | | k  s@ | | k rO t d   n  | d k  rh | | 7} n  t  j |  |  |  | d f  S(   Ns"   obj must be less than the len(arr)i    i   (   RN   Rs  R   R   t
   IndexErrort   concatenate(   RQ   Rx  RX  t   pos(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_delete_scalar_impl  s    	(
   RD   R   R   RT  R   t	   SliceTypet   np_delete_handler_issliceR^   R   t   np_delete_handler_isarray(   RQ   Rx  R  R  (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_delete  s    !		c         C` s6   t  |  t j  s" |  j d k r& d  Sd d  } | S(   Ni    i   c         S` s  | d k r |  j    S| d k  r1 t d   n  |  j d } |  j d  t | | d  f } t j | |  j  } | j d k r | S|  j d | f  } | j d | j d f  } t j | |  j  } x t	 | j d  D] } x> t	 | d  D], }	 | | |	 d f | | |	 f | |	 <q WxP t	 d |  D]? }
 x6 t	 | |
 d  D]  }	 | |	 d | |	 | |	 <qSWq8W| | |  | | <q W| S(   Ni    s"   diff(): order must be non-negativeii   (
   RE  R`   Rb   R  RN   R   R^   R   t   reshapeR%   (   R    R  R   Rf  R   t   a2t   out2t   workt   majorR!   t   niter(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   diff_impl  s(    
!*"(   RD   R   R   R_   (   R    R  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_diff_impl  s    "c         C` sj   t  | t j  r< | j d k rf t d j |     qf n* t  | t j  sf t d j |     n  d  S(   Ni   s$   {0}(): input should have dimension 1s+   {0}(): input should be an array or sequence(   RD   R   R   R_   RU  R   RT  (   t	   func_namet   seq(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   validate_1d_array_like  s    		c         ` s   t  d |   t |  j t j  s& d  S| d  t j f k rr t  d |  t j  t	 d     t	 d      n' t j
  t	 d     t	 d      d      f d  } | S(   Nt   bincountc         S` s+   t  |   t  |  k r' t d   n  d  S(   Ns7   bincount(): weights and list don't have the same length(   R7   R`   (   R    t   weights(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   validate_inputs2  s    c         S` s   |  | c | | 7<d  S(   N(    (   R   R   R   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   count_item7  s    c         S` s   d  S(   N(    (   R    R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR  >  s    c         S` s   |  | c d 7<d  S(   Ni   (    (   R   R   R   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR  B  s    c         ` s    |  |  t  |   } | d k r/ |  d n d } xI t d |  D]8 } |  | d k  rj t d   n  t | |  |  } qE Wt j | d   } x+ t |  D] }   | | |  | |  q W| S(   Ni    ii   s/   bincount(): first argument must be non-negative(   R7   R%   R`   R  RN   t   zeros(   R    R  R  R   R!   R   (   R  R  R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   bincount_implF  s    (   R  RD   R^   R   R   R>   Rt  RN   R  R   R'   (   R    R  R  (    (   R  R  R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_bincount&  s    		c         ` s     f d   } | S(   Nc         ` s   t  |   } t j |  rW x5 t | d d  D]! } t j |  | d  s. | Sq. Wd Sd } | } xD | | k r | | d ?}   |  | |  r | d } qf | } qf W| S(   Ni    ii   (   R7   RN   R   R%   (   R    RS   R  R!   t   lot   hiR  (   t   func(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   searchsorted_innerY  s    
(    (   R  R  (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _searchsortedX  s    c         C` s
   |  | k S(   N(    (   R   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   q  R   t   leftc         ` s   t  | d |  } | d k r' t   n% | d k r< t   n t d |   t | t j  rs d   f d  } n9 t | t j  r d   f d  } n d   f d  } | S(   NRF   R  t   rights"   Invalid value given for 'side': %sc         ` sd   t  j | j t  j  } xE t  j | | f  D]. \ } }   |  | j    } | j |  q. W| S(   N(   RN   R   Rb   R'   RO   RP   t   itemset(   R    RS   t   sideR   R   t   outviewRP  (   t	   loop_impl(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   searchsorted_impl  s
    "c         ` sS   t  j t |  t  j  } x1 t t |   D] }   |  | |  | | <q. W| S(   N(   RN   R   R7   R'   R%   (   R    RS   R  R   R!   (   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR    s    c         ` s     |  |  S(   N(    (   R    RS   R  (   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR    s    (   Rt   t   _searchsorted_leftt   _searchsorted_rightR`   RD   R   R   RT  (   R    RS   R  t   side_valR  (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   searchsortedv  s    		c         ` s   t  d      t  d     t  d     t |  t j  r[ t     f d  } | St |  t j  r t     f d  } | Sd  S(   Nc         S` s   t  |   } t } t } | d k r |  d } xm t d |  D]Y } |  | } | o^ | | k } | oq | | k  } | r | r t d   n  | } q> Wn  | S(   Ni   i    s3   bins must be monotonically increasing or decreasing(   R7   R   R%   R`   (   t   binsR  t   is_increasingt   is_decreasingt   prevR!   Rj  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   are_bins_increasing  s    

c         S` s  t  |  } d } | } | r t j |   ri x5 t | d d  D]! } t j | | d  s@ | Sq@ Wd Sx | | k r | | d ?} | | |  k  r | d } ql | } ql WnW t j |   r | SxA | | k r| | d ?} | | |  k r | d } q | } q W| S(   Ni    ii   (   R7   RN   R   R%   (   R   R  R  R  R  R  R!   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   digitize_scalar  s,    
c         S` s  t  |  } d } | } | r t j |   rb x. t d |  D] } t j | |  s= | Sq= W| Sx | | k r | | d ?} | | |  k  r | } qe | d } qe WnW t j |   r d SxA | | k r | | d ?} | | |  k r | } q | d } q W| S(   Ni    i   (   R7   RN   R   R%   (   R   R  R  R  R  R  R!   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   digitize_scalar_decreasing  s,    		c         ` s     |  } t  j |  j t  j  } xi t  j |  | f  D]R \ } } | rg  | j   | |  } n  | j   | |  } | j |  q: W| S(   N(   RN   R   Rb   R'   RO   RP   R  (   R   R  R  R  R   R   R  RP  (   R  R  R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   digitize_impl  s    "c         ` s     |  } t  j t |   t  j  } xW t t |    D]C } | rc  |  | | |  | | <q:  |  | | |  | | <q: W| S(   N(   RN   R   R7   R'   R%   (   R   R  R  R  R   R!   (   R  R  R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR    s    (   R   RD   R   R   R   RT  (   R   R  R  R  (    (   R  R  R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_digitize  s    &%
c         ` sv   t  | t t j f  rc | d  t j f k rQ t d    d d    f d  } qr d d  d  } n d d  d  } | S(   NR  i
   c         ` sv     }   } xM t  j |   D]< } | j   } | | k rD | } n  | | k  r | } q q Wt  j |  | | | f  S(   N(   RN   RO   RP   t	   histogram(   R    R  R%   t   bin_mint   bin_maxR   RS   (   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   histogram_impl%  s    	c         S` s,  | d k r t  d   n  | \ } } | | k sB t  d   n  t j | t j  } | | k r	| | | } x t j |   D] } | j   } t j | | |  }	 d |	 k o | k  n r | t |	  c d 7<q | | k r | | d c d 7<q q Wn  t j	 | | | d  }
 | |
 f S(   Ni    s0   histogram(): `bins` should be a positive integers;   histogram(): max must be larger than min in range parameteri   (
   R`   RN   R  R'   RO   RP   R!  R"  R#  t   linspace(   R    R  R%   R  R  t   histt	   bin_ratioR   RS   R   t
   bins_array(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR  1  s"    c         S` s@  t  |  d } x; t |  D]- } | | | | d k s t d   q q W| d } | | } t j | t j  } | d k r6x t j |   D] } | j   }	 | |	 k o | k n s q n  d }
 | d } xE |
 | k  r|
 | d d ?} |	 | | k  r| d } q | }
 q W| |
 c d 7<q Wn  | | f S(   Ni   s-   histogram(): bins must increase monotonicallyi    (   R7   t   _rangeR`   RN   R  R'   RO   RP   (   R    R  R%   t   nbinsR!   R  R  R  R   RS   R  R  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR  I  s*    



(   RD   R#  R   R   R>   Rt  t   float(   R    R  R%   R  (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_histogram  s     t   ibetaR   t   machept   epst   negept   epsnegt   iexpt   minexpt   xmint   maxexpt   xmaxt   irndt   ngrdt   epsilont   tinyt   huget	   precisiont
   resolutiont   MachArR  R  t   nexpt   nmantt   bitsR  R  c          ` sG   t  j   }  t g  t D] } t |  |  ^ q      f d   } | S(   Nc           ` s
   t      S(   N(   R  (    (   t   _mach_ar_data(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    (   RN   R  t   tuplet   _mach_ar_supportedRt   (   R*  R   R   (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   MachAr_impl  s    (c         ` s%   t        f d    } d  S(   Nc         ` sb   t  |  d |   }  t |   } t g   D] } t  | |  ^ q.       f d   } | S(   NR^   c         ` s
        S(   N(    (   t   arg(   t	   containerR2   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     s    (   Rt   R   R  (   R  t   nbtyR*  R   R   (   t   attrR  t   np_func(   R2   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   xinfo_impl  s
    ((   R	   (   R  R  R  R  (    (   R  R  R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   generate_xinfo  s    c         ` s   t  d    } t s | St j t j B} |  | k o> | | k } | sK | St |   } t |  } t j | |    t    f d    } | Sd  S(   Nc         S` s=   d } x0 t  t |    D] } | |  | | | } q W| S(   Ni    (   R%   R7   (   R    R   t   accR!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   _innerprod  s    c         ` s"   t  j |  j    | j     S(   N(   RN   R  RK  (   R    R   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   _dot_wrap  s    (   R   t
   _HAVE_BLASR   t   real_domaint   complex_domainR   RN   R  (   t   dtat   dtbR  t   fltyt   floatst   a_dtt   b_dtR  (    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _get_inner_prod  s    c         C` s;   t  |  t j  r7 |  j d k s7 t d |   q7 n  d  S(   Ni   s!   %s() only supported on 1D arrays (   RD   R   R   R_   R   (   R    R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   _assert_1d  s    c         C` s   d  S(   N(    (   t   ap1t   ap2t   modet	   direction(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _np_correlate_core  s    t   _corr_conv_Modec           B` s    e  Z d  Z d Z d Z d Z RS(   s   
    Enumerated modes for correlate/convolve as per:
    https://github.com/numpy/numpy/blob/ac6b1a902b99e340cf7eeeeb7392c91e38db9dd8/numpy/core/numeric.py#L862-L870
    i    i   i   (   t   __name__t
   __module__t   __doc__t   VALIDt   SAMEt   FULL(    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR    s   c         ` sd   t  |  j  } t  | j  } t j | |   t |  j | j   t       f d   } | S(   Nc         ` s  |   j  k p |   j k s- t d   n  t |   } t |  } | } | } |   j  k r} | | d } d } d }	 n@ |   j k r | d }	 | d } | | d } n t d   t j |   }
 | | } | d k r d } d } n+ | d k r| d } d } n t d   xB t |  D]4 }  |  | d  | | d  |
 | <| | } q,WxD t | | d  D]. }  |  | | | !|  |
 | <| | } qyWx@ t |	 d d  D], }  |  | | |   |
 | <| | } qW|
 S(   Ns   Invalid modei   i    is   Invalid direction(   R   R  R`   R7   RN   R  R%   (   R  R  R  R  t   n1t   n2R  R  t   n_leftt   n_rightR  R   t   incR!   (   t   ModeR   t	   innerprod(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR     sD    		


	
	$(   R   R^   RN   R  R  R  (   R  R  R  R  R  R  R   (    (   R  R   R	  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _np_correlate_core_impl  s    4c         ` s   t  |  d  t  | d  t d    } t d    } t   |  j t j k r | j t j k rq |  |  q |  |  n- | j t j k r |  |  n |  |      f d   } | S(   Ns   np.correlatec         S` s   t  j |   S(   N(   RN   R   (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   op_conj  s    c         S` s   |  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   op_nop  s    c         ` s`   t  |   t  |  k  r: t  |   |     j d  St  |    |    j d  Sd  S(   Nii   (   R7   R  R   (   R    RS   (   R  t   a_opt   b_op(    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   0  s    "(   R  R   R  R^   R   R  (   R    RS   R  R  R   (    (   R  R  R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _np_correlate  s$    			c         ` s3   t  |  d  t  | d  t     f d   } | S(   Ns   np.convolvec         ` s   t  |   } t  |  } | d k r3 t d   n  | d k rN t d   n  | | k  r} t | |  d  d  d    j d  St |  | d  d  d    j d  Sd  S(   Ni    s   'a' cannot be emptys   'v' cannot be emptyii   (   R7   R`   R  R  (   R    RS   t   lat   lv(   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   @  s    #(   R  R  (   R    RS   R   (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_convolve9  s
    c         C` s   |  d  k p t |  t j  S(   N(   R>   RD   R   t   NoneType(   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR  Q  s    c         ` s  t  |   s d  Sd  } t |  t j  rd t |  sF |  j | j k rU d  d  } q d  d  } n t |  t j t j f  r t |  r d  d  } q d  d  } nT t |  t j	 t j
 f  r t |  r |  n | } t |    d    f d  } n  | S(   Nc         S` s   |  S(   N(    (   R    R^   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   `  s    c         S` s   |  j  |  S(   N(   RK  (   R    R^   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   c  s    c         S` s   t  j |   S(   N(   RN   Rr  (   R    R^   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   j  s    c         S` s   t  j |  |  S(   N(   RN   Rr  (   R    R^   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   m  s    c         ` s   t  j |     S(   N(   RN   Rr  (   R    R^   (   R   (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyR   s  s    (   R   R>   RD   R   R   R  R^   RT  RG   R;  R   R   (   R    R^   R   t   dt_conv(    (   R   s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   np_asarrayU  s     c         C` s   d   } | S(   Nc         S` s   t  j |   j   } t  j |  } | j d k rB t d   n  t  j | | j  r | j | j k r d } t |   n  t | j | j  } g  t |  D] } | | r | j | ^ q } t  j	 |  S(   Ni    s"   Cannot extract from an empty arrays+   condition shape inconsistent with arr shape(
   RN   R   R  R   R`   R   R  R%   R   Rr  (   t	   conditionRQ   Rm  R    R   t   max_lenR   R   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_extract_impl|  s    (0(    (   R  RQ   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt
   np_extracty  s    	c         C` s  d d  } t  |  t j t j f  s6 t d   n  t  | t j t j f  s` t d   n  t  | t t j t j f  s t d   n  t  |  d t j  s t d   n  t  | d t j  s t d   n  t  |  d t j  rt  |  d j	 t j  st d   qn  t  |  d t j  rpt  |  d t j  o[t  |  d d t j  spt d	   qpn  t  |  d t j  r|  d j
 | d j
 k rt d
   n  t  |  d t j  r|  d j
 d k  rt d   n  | S(   Ni    c         S` s   t  |   t  |  k r' t d   n  | t j | d j | d j  } xM t t  |   d d d  D]/ } |  | } | | } t j | | |  } qh W| S(   Ns7   list of cases must be same length as list of conditionsi    i   i(   R7   R`   RN   R  Rb   R^   R%   Rb  (   t   condlistt
   choicelistt   defaultR   R!   Rm  t   choice(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_select_arr_impl  s    $#

s"   condlist must be a List or a Tuples$   choicelist must be a List or a Tuples,   default must be a scalar (number or boolean)s    items of condlist must be arrayss"   items of choicelist must be arrayss%   condlist arrays must contain booleanss*   condlist tuples must only contain booleanssH   condlist and choicelist elements must have the same number of dimensionsi   s/   condlist arrays must be of at least dimension 1(   RD   R   t   ListR8   RU  R#  R;  R   R   R^   R_   (   R  R  R  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_select  s.    0)c         C` sR   t  j |   } t  j t  j | |  d d  d | |  d d d | |  d  S(   Ni   g       @(   RN   t   arangeRb  t
   less_equal(   RY  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_bartlett_impl  s    ,c         C` s[   t  j |   } d d t  j d t  j | |  d  d t  j d t  j | |  d  S(   NgzG?g      ?g       @i   g{Gz?g      @(   RN   R!  t   cosRE  (   RY  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_blackman_impl  s    'c         C` s7   t  j |   } d d t  j d t  j | |  d  S(   NgHzG?gq=
ףp?g       @i   (   RN   R!  R$  RE  (   RY  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_hamming_impl  s    c         C` s7   t  j |   } d d t  j d t  j | |  d  S(   Ng      ?g       @i   (   RN   R!  R$  RE  (   RY  R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_hanning_impl  s    c         ` s     f d   } | S(   Nc         ` s4   t  |  t j  s! t d   n    f d   } | S(   Ns   M must be an integerc         ` sN   |  d k  r" t  j d d t  j S|  d k rD t  j d d t  j S  |   S(   Ni   R^   (    (   RN   Rr  t   float_R  (   RY  (   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   window_impl  s
    (   RD   R   R   R   (   RY  R)  (   R  (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   window_overload  s    (    (   R  R*  (    (   R  s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   window_generator  s    g4!\Tg}b3<gr넱g^<g"P
g'&&KF5=gbLag$ӛ/=gjzg<t̾=gVg4T&>g0Kg5dMv;p>g"c쑾g$>g'doҾgY(X?>gZY&+g|t(?gRBguZ?gI ^qga?g!Ng-Ί>?g-4pKgw?gWӿg*5N?gT`g0fFVg!<gA`<gҫ`g8箸g}<g攐*<gbe~g2hϙ]'gE_V=gsk[=g&GCi=gfCg{~5g%t9QgO $=guo >g["d,->gmրVX>gna>g+A>gRx?gI墌k?g	b?c         C` s^   | d } d } x? t  d t |   D]( } | } | } |  | | | | } q& Wd | | S(   Ni    g        i   g      ?(   R%   R7   (   R   t   valst   b0t   b1R!   t   b2(    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _chbevl9  s    
c         C` sy   |  d k  r |  }  n  |  d k rJ d |  d } t  j |   t | t  St  j |   t d |  d t  t  j |   S(   Ni    g       @g      ?g       @g      @@(   RN   t   expR0  t   _i0At   _i0BR  (   R   R  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _i0F  s    
c         C` s   t  j |  d t  j } t t  j |   } xO t t |   D]; } t | t  j d |  | | | d   | | | <q@ W| S(   NR^   i   g       @(   RN   RC  R(  R4  R%   R7   R  (   R  t   alphat   betaR  t   tR!   (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   _i0nQ  s
    9c         C` sX   t  |  t j  s! t d   n  t  | t j t j f  sK t d   n  d   } | S(   Ns   M must be an integers    beta must be an integer or floatc         S` st   |  d k  r" t  j d d t  j S|  d k rD t  j d d t  j St  j d |   } |  d d } t | | |  S(   Ni   R^   i    g       @(    (   RN   Rr  R(  R  R!  R8  (   RY  R6  R  R5  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   np_kaiser_implc  s    (   RD   R   R   R   R   (   RY  R6  R9  (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt	   np_kaiser[  s    	(   i   i   (   i   i
   (   i   i   (   i   i
   (   i   i   (   i   i   (   i   i   (   i   i	   (   i   i   (   i   i
   (   i   i
   (   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  (   i   i   (   R  (   R  R  (   i   i   (   R  (C  R  t
   __future__R    R   R   R!  t   collectionsR   t   enumR   t	   functoolsR   t   numpyRN   t   llvmlite.llvmpy.coret   llvmpyt   coreR'  t   numbaR   R   R   t   numba.extendingR	   R
   R   t   numba.numpy_supportR   R   R   R   t   numba.targets.imputilsR   R   R   R   t   numba.typingR   t   arrayobjR   R   R   R   t   linalgR   R   t   numba.errorsR   R   R   R  R<   RM   R  R   R\   R]   R'   t   IntegerLiteralR}   R  R   R   R   R   R   R   R   R   R   t   stdR   R   R  R   R  R   t   argminR   t   argmaxR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   nanminR   t   nanmaxR   R   R   R   R   t   nanstdR   t   nansumR   t   nanprodR   t
   nancumprodR   t	   nancumsumR   R   R   R   R   R   t   ptpR  R  R  R  t   _partition_w_nanR  R  RF  R  R  t   medianR  R-  R0  R3  R4  R5  R8  R<  R%  R=  t   nanpercentileR>  t   quantileR?  t   nanquantileR@  t	   nanmedianRB  RJ  RQ  t	   partitionRW  R[  R`  R>   R]  R_  Re  t   trilRl  Rm  t   triuRp  Rq  Ru  Rz  t   ediff1dR  R  R  R  R  t   trapzR  R  R  t   vanderR  t   rollR  R  R  R  R  R  R  R  R  R  R  R  t   interpR  R  R  R  R  R  R  R   R  R  R  R  R  R  R  R  R  t   corrcoefR
  t   flatnonzeroR  R  R  R  R  R  R!  R   R  t   fill_diagonalR"  R%  R/  R8  R   R0  R   R1  R   R6  R=  R>  RA  RB  RD  R;  RH  RP  R   RO  RS  R  Rb  Rk  Ru  Rv  Rw  Rx  Rz  R  R}  R~  t   AnyR  R   R  R   R  R  R  t   deleteR  R{  R  R  R  R  R  t   _ltt   _leR  R  R  t   digitizeR  R%   R  R  R  R  R  t   _finfo_supportedR  t   _iinfo_supportedR  R  R  R  R  R  R  R
  t	   correlateR  t   convolveR  R  R   R  t   extractR  t   selectR   R#  R%  R&  R'  R+  t   bartlettt   blackmant   hammingt   hanningRr  R2  R3  R0  R4  R8  t   kaiserR:  (    (    (    s6   lib/python2.7/site-packages/numba/targets/arraymath.pyt   <module>   s  ""			)L*_	?'6		"					%	3	

"		7		&E`	iU	[H	(			
	5#	 		
'$
*''$9	%	*!/&	
1	"Q     
				
@'	#6	
