ó
\K]c           @@ sg  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d d l m Z m	 Z	 d d l
 m Z m Z m Z m Z m Z d d l m Z m Z m Z m Z m Z m Z m Z m Z d d l m Z d d	 l m Z m Z d  d
 l m Z e ƒ  Z e j  Z! e j" Z# e j$ Z% d e f d „  ƒ  YZ& e# e j' ƒ d e f d „  ƒ  Yƒ Z( d e& f d „  ƒ  YZ) e) j* Z+ d e) f d „  ƒ  YZ, d e) f d „  ƒ  YZ- 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/ d0 d1 g Z. d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC g Z/ dD dE dF dG dH dI dJ g Z0 dK dL dM dN dO dP dQ dR dS dT dU dV dW dX g Z1 dY dZ d[ d\ d] d^ d_ d` da db dc dd de g Z2 e3 da d_ g ƒ Z4 e3 dJ d/ d0 g ƒ Z5 e j6 e j7 k rìe5 j8 d. ƒ n  df „  Z9 e: e. e/ e0 e1 e2 g g  ƒ Z; g  e; D] Z< e< e4 k re< ^ qZ= x e= D] Z> e9 e> ƒ q?Wg  e; D] Z? e@ e e? ƒ ^ qZZ; g  e= D] Z? e@ e e? ƒ ^ q|Z= e- jA ƒ  e) jA ƒ  e, jA ƒ  e3 e- j* jB ƒ  ƒ jC e) j* jB ƒ  ƒ jC e, j* jB ƒ  ƒ ZD [. [/ [0 [1 [2 [4 [5 [9 dg e f dh „  ƒ  YZE di „  ZF xB dj dk dl dm dn do dp dq dr ds dt du dv dw g D] Z> eF e> ƒ qVWe3 dx „  e jG Dƒ ƒ ZH eH j8 e jI ƒ eH j8 e jJ ƒ eH j8 e jK ƒ eH j8 e jL ƒ eH j8 e jM ƒ dy „  ZN eN e# ƒ dz „  ZO d{ „  ZP d| „  ZQ e# e jR ƒ d} e f d~ „  ƒ  Yƒ ZS e# e jT ƒ e# e jU ƒ e# e jV ƒ d e f d€ „  ƒ  Yƒ ƒ ƒ ZW e# e jX ƒ e# e jY ƒ d e f d‚ „  ƒ  Yƒ ƒ ZZ e# e j[ ƒ eZ ƒ e dÓ k r	e# e j\ ƒ d„ e f d… „  ƒ  Yƒ Z] e# e j^ ƒ d† e f d‡ „  ƒ  Yƒ Z_ n  e# e j` ƒ dˆ e f d‰ „  ƒ  Yƒ Za dŠ „  Zb e# e jc ƒ d‹ e f dŒ „  ƒ  Yƒ Zd e# e je ƒ d e f dŽ „  ƒ  Yƒ Zf e# e jg ƒ d e f d „  ƒ  Yƒ Zh e# e ji ƒ d‘ e f d’ „  ƒ  Yƒ Zj e# e jk ƒ d“ e f d” „  ƒ  Yƒ Zl e# e jm ƒ d• e f d– „  ƒ  Yƒ Zn e# e jo ƒ d— e f d˜ „  ƒ  Yƒ Zp e# e jq ƒ d™ e f dš „  ƒ  Yƒ Zr d› e f dœ „  ƒ  YZs e# e jt ƒ d es f dž „  ƒ  Yƒ Zu e# e jv ƒ dŸ es f d  „  ƒ  Yƒ Zw e# e jx ƒ d¡ es f d¢ „  ƒ  Yƒ Zy d£ „  Zz ez d¤ „ Z{ d¥ „  Z| e# e j} ƒ d¦ e f d§ „  ƒ  Yƒ Z~ e dÔ k r[e# e j ƒ d© e f dª „  ƒ  Yƒ Z€ n  d« e f d¬ „  ƒ  YZ e# e j‚ ƒ d© e f d­ „  ƒ  Yƒ Z€ e# e jƒ ƒ d© e f d® „  ƒ  Yƒ Z€ e# e j„ ƒ d© e f d¯ „  ƒ  Yƒ Z€ d° „  Z… e# e j† ƒ d± e f d² „  ƒ  Yƒ Z‡ d³ eˆ f d´ „  ƒ  YZ‰ e# e jŠ ƒ dµ e‰ e f d¶ „  ƒ  Yƒ Z‹ e# e jŒ ƒ d· e f d¸ „  ƒ  Yƒ Z e	 jŽ r¥	e# e j ƒ d¹ e‰ e f dº „  ƒ  Yƒ Z n  d» „  Z‘ e# e j’ ƒ d¼ e f d½ „  ƒ  Yƒ Z“ e# e j” ƒ d¾ e f d¿ „  ƒ  Yƒ Z• e# e ƒ e# e j– ƒ dÀ e f dÁ „  ƒ  Yƒ ƒ Z— e# e j˜ ƒ e# e j™ dÂ e j˜ ƒdÃ e f dÄ „  ƒ  Yƒ ƒ Zš e# e j› ƒ dÅ e f dÆ „  ƒ  Yƒ Zœ e# e j ƒ dÇ e f dÈ „  ƒ  Yƒ Zž e# e jŸ ƒ dÉ e f dÊ „  ƒ  Yƒ Z  e# e j¡ ƒ dË e f dÌ „  ƒ  Yƒ Z¢ e# e j£ ƒ dÍ e f dÎ „  ƒ  Yƒ Z¤ e# e ƒ dÏ e f dÐ „  ƒ  Yƒ Z¥ e# e ƒ dÑ e¥ f dÒ „  ƒ  Yƒ Z¦ d S(Õ   i    (   t   absolute_importt   print_functionNi   (   t   typest   utilsi   (   t   AttributeTemplatet   AbstractTemplatet   CallableTemplatet   Registryt	   signature(   t   ufunc_find_matching_loopt   supported_ufunc_loopt   as_dtypet
   from_dtypeR   t   resolve_output_typet   carrayt   farray(   t   version(   t   TypingErrort   NumbaPerformanceWarning(   t   pndindext   Numpy_rules_ufuncc           B@ s/   e  Z e d  „  ƒ Z e d „  ƒ Z d „  Z RS(   c         @ sä  | j  } | j } | j } | | | k s1 t ‚ | d k ra d } t d | j | j ƒ ƒ ‚ n  t | ƒ | k  r£ d } t d | j | j t | ƒ | ƒ ƒ ‚ n  t | ƒ | k rå d } t d | j | j t | ƒ | ƒ ƒ ‚ n  g  | D]' } t | t	 j
 ƒ r| j n | ^ qì } g  | D]' } t | t	 j
 ƒ rA| j n d ^ q }	 t |	 ƒ ‰  | | }
 t ‡  f d †  |	 | Dƒ ƒ s§d } t d | j | j ƒ ƒ ‚ n  t d	 „  |
 Dƒ ƒ sád
 } t d | j | j ƒ ƒ ‚ n  t d „  |
 Dƒ ƒ sd } t d | j | j ƒ ƒ ‚ n  g  | D]' } t | t	 j
 ƒ rC| j n | ^ q"} d } ˆ  d k rÔt |
 ƒ | j k  rÔd } g  | D]' } t | t	 j
 ƒ r¤| j n d ^ qƒ} d | k rÔd | k rÔd } qÔn  | |
 ˆ  | f S(   sÏ  
        Process argument types to a given *ufunc*.
        Returns a (base types, explicit outputs, ndims, layout) tuple where:
        - `base types` is a tuple of scalar types for each input
        - `explicit outputs` is a tuple of explicit output types (arrays)
        - `ndims` is the number of dimensions of the loop and also of
          any outputs, explicit or implicit
        - `layout` is the layout for any implicit output to be allocated
        i   s<   ufunc '{0}': not supported in this mode (more than 1 output)t   msgs;   ufunc '{0}': not enough arguments ({1} found, {2} required)s8   ufunc '{0}': too many arguments ({1} found, {2} maximum)i    c         3@ s   |  ] } | ˆ  k Vq d  S(   N(    (   t   .0t   d(   t   ndims(    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>C   s    s:   ufunc '{0}' called with unsuitable explicit output arrays.c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   t
   isinstanceR   t   ArrayCompatible(   R   t   output(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>G   s   s?   ufunc '{0}' called with an explicit output that is not an arrayc         s@ s   |  ] } | j  Vq d  S(   N(   t   mutable(   R   R   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>L   s    s<   ufunc '{0}' called with an explicit output that is read-onlyt   Ct    t   FN(   t   nint   noutt   nargst   AssertionErrorR   t   formatt   __name__t   lenR   R   R   t   as_arrayt   ndimt   maxt   allt   dtypet   Nonet   layout(   t   clst   ufunct   argst   kwsR    R!   R"   R   t   at	   arg_ndimst   explicit_outputst   xt
   base_typesR-   t   layouts(    (   R   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _handle_inputs   sN    			**11
 	1!1c         C@ s   |  j  S(   N(   t   key(   t   self(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR/   c   s    c      	   C@ sÞ  |  j  } |  j | | | ƒ \ } } } } t | | ƒ } | d  k rc t d j | j | ƒ ƒ ‚ n  t | | ƒ sœ d }	 t d |	 j | j | j ƒ ƒ ‚ n  g  | D] }
 t	 |
 j
 ƒ ^ q£ } t d „  t | j | ƒ Dƒ ƒ sd }	 t d |	 j | j ƒ ƒ ‚ n  t | ƒ } | j t | ƒ } | d k rÇ| j | } | d k r·| d  k	 s[t ‚ g  | D]$ } t j d | d | d	 | ƒ ^ qb} g  | D] } t |  j | | ƒ ^ q“} n  | j | ƒ n  | j | ƒ t | Œ  S(
   Ns%   can't resolve ufunc {0} for types {1}s;   ufunc '{0}' using the loop '{1}' not supported in this modeR   c         s@ s*   |  ]  \ } } t  j | | d  ƒ Vq d S(   t   unsafeN(   t   npt   can_cast(   R   t   fromtyt   toty(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>x   s    s5   ufunc '{0}' can't cast result to explicit result typei    R+   R(   R-   (   R/   R8   R	   R,   R   R$   R%   R
   t	   ufunc_sigR   R+   R*   t   zipt   numpy_outputst   listR!   R&   t   outputsR#   R   t   ArrayR   t   contextt   extendR   (   R:   R0   R1   R/   R6   R4   R   R-   t
   ufunc_loopR   t   tpt   explicit_outputs_npt   outt   implicit_output_countt   ret_tyst   ret_ty(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   genericg   s6    	$"	.((   R%   t
   __module__t   classmethodR8   t   propertyR/   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR      s   Ht   UnaryPositiveArrayc           B@ s    e  Z d  Z e j Z d „  Z RS(   s  Typing template class for +(array) expressions.  This operator is
    special because there is no Numpy ufunc associated with it; we
    include typing for it here (numba.typing.npydecl) because this is
    where the remaining array operators are defined.
    c         C@ sS   | s t  ‚ t | ƒ d k rO t | d t j ƒ rO | d } | j ƒ  | ƒ Sd  S(   Ni   i    (   R#   R&   R   R   R   t   copy(   R:   R0   R1   t   arg_ty(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ž   s    (
(   R%   RP   t   __doc__t   operatort   posR9   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRS   •   s   	t   NumpyRulesArrayOperatorc           B@ s  e  Z i d  e j 6d e j 6d e j 6d e j 6d e j 6d e j 6d e j	 6d e j
 6d e j 6d	 e j 6d
 e j 6d e j 6d e j 6d e j 6d e j 6d e j 6d e j 6d e j 6Z e j sÙ d e e j <n  e d „  ƒ Z e d „  ƒ Z d „  Z RS(   t   addt   subtractt   multiplyt   true_dividet   floor_dividet	   remaindert   powert
   left_shiftt   right_shiftt   bitwise_andt
   bitwise_ort   bitwise_xort   equalt   greatert   greater_equalt   lesst
   less_equalt	   not_equalt   dividec         C@ s   t  t |  j |  j ƒ S(   N(   t   getattrR<   t   _op_mapR9   (   R:   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR/   ¾   s    c         C@ sP   xI |  j  j ƒ  D]8 \ } } t | ƒ t d | |  f t d | ƒ ƒ ƒ q Wd  S(   Nt   NumpyRulesArrayOperator_R9   (   Rn   t   itemst   infer_globalt   typet   dict(   R.   t   opt
   ufunc_name(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   install_operationsÂ   s    	c         C@ sk   y t  t |  ƒ j | | ƒ } Wn t k
 r3 d SX| d k rD d S| j } t d „  | Dƒ ƒ sg d S| S(   sk  Overloads and calls base class generic() method, returning
        None if a TypingError occurred.

        Returning None for operators is important since operators are
        heavily overloaded, and by suppressing type errors, we allow
        type inference to check other possibilities before giving up
        (particularly user-defined operators).
        c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   R   (   R   t   arg(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>Û   s   N(   t   superRY   RO   R   R,   R0   t   any(   R:   R0   R1   t   sig(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   É   s    			(   R%   RP   RW   RZ   t   subt   mult   truedivt   floordivt   modt   powt   lshiftt   rshiftt   and_t   or_t   xort   eqt   gtt   get   ltt   let   neRn   R   t   IS_PY3t   divRR   R/   RQ   Rv   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRY   ¥   s0   
















	t   NumpyRulesInplaceArrayOperatorc           B@ s¨   e  Z i d  e j 6d e j 6d e j 6d e j 6d e j 6d e j 6d e j	 6d e j
 6d e j 6d	 e j 6d
 e j 6d e j 6Z e j s d e e j <n  d „  Z RS(   RZ   R[   R\   R]   R^   R_   R`   Ra   Rb   Rc   Rd   Re   Rl   c         C@ s‚   | \ } } t  | t j ƒ s" d  S| | f } t t |  ƒ j | | ƒ } t | j ƒ d k se t ‚ t	 | j
 | j d  Œ } | S(   Ni   i   (   R   R   R   Rx   RŽ   RO   R&   R0   R#   R   t   return_type(   R:   R0   R1   t   lhst   rhsRz   t   real_sig(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ö   s    (   R%   RP   RW   t   iaddt   isubt   imult   itruedivt	   ifloordivt   imodt   ipowt   ilshiftt   irshiftt   iandt   iort   ixorRn   R   RŒ   t   idivRO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRŽ   ã   s    










	t   NumpyRulesUnaryArrayOperatorc           B@ s+   e  Z i d  e j 6d e j 6Z d „  Z RS(   t   negativet   invertc         C@ sR   | s t  ‚ t | ƒ d k rN t | d t j ƒ rN t t |  ƒ j | | ƒ Sd  S(   Ni   i    (   R#   R&   R   R   R   Rx   R    RO   (   R:   R0   R1   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO     s    ((   R%   RP   RW   t   negR¢   Rn   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR      s   
RZ   R[   R\   t	   logaddexpt
   logaddexp2R]   R^   R¡   R`   R_   t   fmodt   absolutet   rintt   signt	   conjugatet   expt   exp2t   logt   log2t   log10t   expm1t   log1pt   sqrtt   squaret
   reciprocalRl   R   t   abst   fabst   sint   cost   tant   arcsint   arccost   arctant   arctan2t   hypott   sinht   cosht   tanht   arcsinht   arccosht   arctanht   deg2radt   rad2degt   degreest   radiansRc   Rd   Re   R¢   Ra   Rb   t   bitwise_notRg   Rh   Ri   Rj   Rk   Rf   t   logical_andt
   logical_ort   logical_xort   logical_nott   maximumt   minimumt   fmaxt   fmint   isfinitet   isinft   isnant   signbitt   copysignt	   nextaftert   modft   ldexpt   frexpt   floort   ceilt   trunct   spacingc         @ sf   t  t |  ƒ ‰  d t f ‡  f d †  ƒ  Y} d j |  ƒ | _ |  t k rb t ˆ  t j | ƒ ƒ n  d  S(   Nt   typing_classc           @ s   e  Z ˆ  Z RS(    (   R%   RP   R9   (    (   t   func(    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRß   K  s   s   resolve_{0}(	   Rm   R<   R   R$   R%   t   _aliasesRq   R   t   Function(   t   nameRß   (    (   Rà   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _numpy_ufuncI  s
    t   Numpy_method_redirectionc           B@ s   e  Z d  Z d „  Z RS(   s‚   
    A template redirecting a Numpy global function (e.g. np.sum) to an
    array method of the same name (e.g. ndarray.sum).
    c   
      C@ sè   d  } | r„ |  j d k r6 d „  } t j | ƒ } q„ |  j d k rc d d „ } t j | ƒ } q„ d } t | j |  j ƒ ƒ ‚ n  | d } |  j j | |  j ƒ } |  j j | | d | ƒ }	 |	 d  k	 rä |	 j	 ƒ  j
 d	 | ƒ Sd  S(
   Nt   sumc         S@ s   d  S(   N(    (   t   arrt   axis(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   sum_stub}  s    t   argsortt	   quicksortc         S@ s   d  S(   N(    (   Rç   t   kind(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   argsort_stub  s    s"   numba doesn't support kwarg for {}i    i   t   pysig(   R,   t   method_nameR   t   pysignatureR   R$   RF   t   resolve_getattrt   resolve_function_typet   as_functiont   replace(
   R:   R0   R1   Rî   Ré   Rí   t   fmtRç   t   meth_tyt   meth_sig(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   y  s    	
(   R%   RP   RV   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRå   s  s   c         C@ sV   t  t |  ƒ } t d j |  ƒ t f t d | d |  ƒ ƒ } t | t j | ƒ ƒ d  S(   Ns   Numpy_redirect_{0}R9   Rï   (	   Rm   R<   Rr   R$   Rå   Rs   Rq   R   Râ   (   t   fnamet   numpy_functionR.   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _numpy_redirect’  s    t   minR)   Ræ   t   prodt   meant   vart   stdt   cumsumt   cumprodt   argmint   argmaxRê   t   nonzerot   ravelc         c@ s$   |  ] } t  t t | ƒ ƒ Vq d  S(   N(   Rm   R<   t   str(   R   t   nb_type(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>¢  s    c         C@ s=   x6 t  D]. } t t | j ƒ } |  | t j | ƒ ƒ q Wd  S(   N(   t   np_typesRm   R   R%   t   NumberClass(   t   register_globalt   np_typeR  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   register_number_classes«  s    c         C@ sh   d  } t |  t j ƒ r! d } nC t |  t j t j f ƒ rd t d „  |  Dƒ ƒ rd t |  ƒ } qd n  | S(   Ni   c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   t   Integer(   R   t   s(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>½  s    (   R,   R   R   R  t   Tuplet   UniTupleR*   R&   (   t   shapeR(   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _parse_shape¸  s    	c         C@ s   t  |  t j ƒ r |  j Sd  S(   N(   R   R   t	   DTypeSpecR+   (   R+   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _parse_dtypeÁ  s    c         C@ so  t  | t j f ƒ r( t d | ƒ ‚ nCt  | t j f ƒ rc t |  | j ƒ \ } } | d | f St  | t j f ƒ rW| j d k r” d t j	 f St |  | d ƒ \ } } | g } xb t
 d | j ƒ D]N } t |  | | ƒ \ } } | | k r
t d | f ƒ ‚ n  | j | ƒ qÉ W|  j | Œ  } | d k rIt d | ƒ ‚ n  | d | f St | ƒ d | f Sd S(   sº   
    Parse a (possibly 0d) nested sequence type.
    A (ndim, dtype) tuple is returned.  Note the sequence may still be
    heterogeneous, as long as it converts to the given dtype.
    s(   %r not allowed in a homogeneous sequencei   i    s%   type %r does not have a regular shapes'   cannot convert %r to a homogeneous typeN(   R   R   t   BufferR   t   Sequencet   _parse_nested_sequenceR+   t	   BaseTuplet   countt   float64t   ranget   appendt   unify_typesR,   R   (   RF   t   typt   nR+   t   dtypest   it   _n(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR  Å  s,    	
t   NpArrayc           B@ s   e  Z d  Z d „  Z RS(   s)   
    Typing template for np.array().
    c         @ s   d  ‡  f d † } | S(   Nc         @ s\   t  ˆ  j |  ƒ \ } } | d  k r- | } n t | ƒ } | d  k rI d  St j | | d ƒ S(   NR   (   R  RF   R,   R  R   RE   (   t   objectR+   R(   t	   seq_dtype(   R:   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   typerî  s    	(   R,   (   R:   R&  (    (   R:   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   í  s    
(   R%   RP   RV   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR#  ç  s   t   NdConstructorc           B@ s   e  Z d  Z d „  Z RS(   s<   
    Typing template for np.empty(), .zeros(), .ones().
    c         C@ s   d  d „ } | S(   Nc         S@ sh   | d  k r t j } n t | ƒ } t |  ƒ } | d  k	 rd | d  k	 rd t j d | d | d d ƒ Sd  S(   NR+   R(   R-   R   (   R,   R   t   doubleR  R  RE   (   R  R+   t   nb_dtypeR(   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&    s    (   R,   (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO     s    
(   R%   RP   RV   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR'  û  s   t   NdConstructorLikec           B@ s   e  Z d  Z d „  Z RS(   sK   
    Typing template for np.empty_like(), .zeros_like(), .ones_like().
    c         C@ s   d d „ } | S(   s–   
        np.empty_like(array) -> empty array of the same shape and layout
        np.empty_like(scalar) -> empty 0-d array of the scalar type
        c         S@ s±   | d  k	 r t | ƒ } n$ t |  t j ƒ r9 |  j } n |  } | d  k	 r­ t |  t j ƒ r— |  j d k ru |  j n d } |  j d | d | d t ƒ St j | d d ƒ Sn  d  S(   Nt   AR   R+   R-   t   readonlyi    (	   R,   R  R   R   RE   R+   R-   RT   t   False(   Rw   R+   R)  R-   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&    s    N(   R,   (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO     s    (   R%   RP   RV   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR*    s   i   t   NdFullc           B@ s   e  Z d  „  Z RS(   c         C@ s   d  d „ } | S(   Nc         S@ s}   | d  k r- t d k  r$ t j } q9 | } n t | ƒ } t |  ƒ } | d  k	 ry | d  k	 ry t j d | d | d d ƒ Sd  S(   Ni   i   R+   R(   R-   R   (   i   i   (   R,   t   numpy_versionR   R  R  R  RE   (   R  t
   fill_valueR+   R)  R(   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  6  s    	(   R,   (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   5  s    (   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR.  2  s   t
   NdFullLikec           B@ s   e  Z d  „  Z RS(   c         C@ s   d d „ } | S(   sž   
            np.full_like(array, val) -> array of the same shape and layout
            np.full_like(scalar, val) -> 0-d array of the scalar type
            c         S@ s–   | d  k	 r t | ƒ } n$ t |  t j ƒ r9 |  j } n |  } | d  k	 r’ t |  t j ƒ rs |  j d | d t ƒ St j d | d d d d ƒ Sn  d  S(   NR+   R,  R(   i    R-   R   (   R,   R  R   R   RE   R+   RT   R-  (   Rw   R0  R+   R)  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  M  s    N(   R,   (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   H  s    (   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR1  E  s   t
   NdIdentityc           B@ s   e  Z d  „  Z RS(   c         C@ s–   | s t  ‚ | d } t | t j ƒ s- d  St | ƒ d k rR t | d ƒ } n	 t j } | d  k	 r’ t j d d d | d d ƒ } t	 | | Œ Sd  S(   Ni    i   i   R(   R+   R-   R   (
   R#   R   R   R  R&   R  R  R,   RE   R   (   R:   R0   R1   R  R)  R   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   `  s    
	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR2  ]  s   c         C@ s   t  S(   N(   R+   (   t   inputs(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _infer_dtype_from_inputso  s    t   NdArangec           B@ s   e  Z d  „  Z RS(   c         C@ s×   | s t  ‚ t | ƒ d k r< t | d ƒ } | d  } nV | } t d „  | Dƒ ƒ rd t j } n. t d „  | Dƒ ƒ r† t j } n t | ƒ } t d „  | Dƒ ƒ s¬ d  St j	 d d d | d	 d
 ƒ } t
 | | Œ S(   Ni   i   c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   t   Complex(   R   Rw   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>}  s    c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   t   Float(   R   Rw   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>  s    c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   t   Number(   R   Rw   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>ƒ  s    R(   i   R+   R-   R   (   R#   R&   R  Ry   R   t
   complex128R  R)   R*   RE   R   (   R:   R0   R1   R+   t   boundsR   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   v  s    (   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR5  s  s   t
   NdLinspacec           B@ s   e  Z d  „  Z RS(   c         C@ sÒ   | s t  ‚ | d  } t d „  | Dƒ ƒ s1 d  St | ƒ d k rf | d } t | t j ƒ sf d  Sn  t | ƒ d k r| d  St d „  | Dƒ ƒ rž t j } n	 t j } t j	 d d d | d	 d
 ƒ } t
 | | Œ S(   Ni   c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   R8  (   R   Rw   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>  s    i   i   c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   R6  (   R   Rw   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>™  s    R(   i   R+   R-   R   (   R#   R*   R&   R   R   R  Ry   R9  R  RE   R   (   R:   R0   R1   R:  t   numR+   R   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   Œ  s    

	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR;  ‰  s   t   NdFromBufferc           B@ s   e  Z d  „  Z RS(   c         C@ s   d  d „ } | S(   Nc      	   S@ s€   t  |  t j ƒ s" |  j d k r& d  S| d  k r> t j } n t | ƒ } | d  k	 r| t j d | d d d d d |  j ƒ Sd  S(   NR   R+   R(   i   R-   R,  (	   R   R   R  R-   R,   R  R  RE   R   (   t   bufferR+   R)  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  ¥  s    "(   R,   (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ¤  s    (   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR=  ¡  s   t   NdSortc           B@ s   e  Z d  „  Z RS(   c         C@ s   d „  } | S(   Nc         S@ s)   t  |  t j ƒ r% |  j d k r% |  Sd  S(   Ni   (   R   R   RE   R(   (   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  ¸  s    !(    (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ·  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR?  ´  s   t   AsFortranArrayc           B@ s   e  Z d  „  Z RS(   c         C@ s   d „  } | S(   Nc         S@ s8   t  |  t j ƒ r4 |  j d d d t |  j d ƒ ƒ Sd  S(   NR-   R   R(   i   (   R   R   RE   RT   R)   R(   (   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  Ã  s    (    (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   Â  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR@  ¿  s   t   AsContiguousArrayc           B@ s   e  Z d  „  Z RS(   c         C@ s   d „  } | S(   Nc         S@ s8   t  |  t j ƒ r4 |  j d d d t |  j d ƒ ƒ Sd  S(   NR-   R   R(   i   (   R   R   RE   RT   R)   R(   (   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  Î  s    (    (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   Í  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRA  Ê  s   t   NdCopyc           B@ s   e  Z d  „  Z RS(   c         C@ s   d „  } | S(   Nc         S@ sG   t  |  t j ƒ rC |  j d k r' d n d } |  j d | d t ƒ Sd  S(   NR   R   R-   R,  (   R   R   RE   R-   RT   R-  (   R2   R-   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  Ù  s    (    (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   Ø  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRB  Õ  s   t   NdExpandDimsc           B@ s   e  Z d  „  Z RS(   c         C@ s   d „  } | S(   Nc         S@ se   t  |  t j ƒ s& t  | t j ƒ r* d  S|  j d k rB |  j n d } |  j d |  j d d | ƒ S(   Ni   R+  R(   R-   (   R   R   RE   R  R(   R-   RT   (   R2   Rè   R-   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  å  s
    (    (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ä  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRC  á  s   t   BaseAtLeastNdTemplatec           B@ s   e  Z d  „  Z RS(   c         C@ s   | s t  ‚ | s+ t d „  | Dƒ ƒ r/ d  Sg  | D] } |  j | ƒ ^ q6 } t | ƒ d k rx t j j | ƒ } n
 | d } t | | Œ S(   Nc         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   RE   (   R   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>ô  s    i   i    (   R#   R*   t   convert_arrayR&   R   R  t
   from_typesR   (   R:   R0   R1   R2   t   retst   retty(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ò  s    "
(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRD  ð  s   t   NdAtLeast1dc           B@ s   e  Z d  „  Z RS(   c         C@ s   | j  d t | j d ƒ ƒ S(   NR(   i   (   RT   R)   R(   (   R:   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRE    s    (   R%   RP   RE  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRI  ÿ  s   t   NdAtLeast2dc           B@ s   e  Z d  „  Z RS(   c         C@ s   | j  d t | j d ƒ ƒ S(   NR(   i   (   RT   R)   R(   (   R:   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRE  	  s    (   R%   RP   RE  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRJ    s   t   NdAtLeast3dc           B@ s   e  Z d  „  Z RS(   c         C@ s   | j  d t | j d ƒ ƒ S(   NR(   i   (   RT   R)   R(   (   R:   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRE    s    (   R%   RP   RE  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRK    s   c         C@ sD   | d j  } x0 | D]( } | j  | k r t d | ƒ ‚ q q W| S(   Ni    s>   %s(): all the input arrays must have same number of dimensions(   R(   t	   TypeError(   RF   t	   func_namet   arraysR(   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _homogeneous_dims  s    c         C@ s¤   t  | t j ƒ s7 t | ƒ s7 t d „  | Dƒ ƒ rP t d | | f ƒ ‚ n  | |  | | ƒ } |  j d „  | Dƒ Œ  } | d  k rš t d | ƒ ‚ n  | | f S(   Nc         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   RE   (   R   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>!  s    s3   %s(): expecting a non-empty tuple of arrays, got %sc         s@ s   |  ] } | j  Vq d  S(   N(   R+   (   R   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>'  s    s.   %s(): input arrays must have compatible dtypes(   R   R   R  R&   R*   RL  R  R,   (   RF   RM  RN  t   dim_chooserR(   R+   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _sequence_of_arrays  s    c         C@ s   t  d „  |  Dƒ ƒ r d Sd S(   Nc         s@ s   |  ] } | j  d  k Vq d S(   R   N(   R-   (   R   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>4  s    R   R   (   R*   (   RN  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _choose_concatenation_layout.  s    t   NdConcatenatec           B@ s   e  Z d  „  Z RS(   c         @ s   d  ‡  f d † } | S(   Nc         @ sx   | d  k	 r# t | t j ƒ r# d  St ˆ  j d |  ƒ \ } } | d k rY t d ƒ ‚ n  t |  ƒ } t j | | | ƒ S(   Ns   np.concatenatei    s.   zero-dimensional arrays cannot be concatenated(	   R,   R   R   R  RQ  RF   RL  RR  RE   (   RN  Rè   R+   R(   R-   (   R:   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  ;  s    	(   R,   (   R:   R&  (    (   R:   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   :  s    (   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRS  7  s   i
   t   NdStackc           B@ s   e  Z d  „  Z RS(   c         @ s   d  ‡  f d † } | S(   Nc         @ sw   | d  k	 r# t | t j ƒ r# d  St ˆ  j d |  ƒ \ } } t d „  |  Dƒ ƒ rZ d n d } t j | | d | ƒ S(   Ns   np.stackc         s@ s   |  ] } | j  d  k Vq d S(   R   N(   R-   (   R   R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>^  s    R   R   i   (   R,   R   R   R  RQ  RF   R*   RE   (   RN  Rè   R+   R(   R-   (   R:   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  R  s    	"(   R,   (   R:   R&  (    (   R:   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   Q  s    (   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRT  N  s   t   BaseStackTemplatec           B@ s   e  Z d  „  Z RS(   c         @ s   ‡  f d †  } | S(   Nc         @ sO   t  ˆ  j ˆ  j |  ƒ \ } } t | ˆ  j ƒ } t |  ƒ } t j | | | ƒ S(   N(   RQ  RF   RM  R)   t   ndim_minRR  R   RE   (   RN  R+   R(   R-   (   R:   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  h  s
    	(    (   R:   R&  (    (   R:   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   g  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRU  e  s   c           B@ s   e  Z d  Z d Z RS(   s	   np.hstacki   (   R%   RP   RM  RV  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRT  t  s   c           B@ s   e  Z d  Z d Z RS(   s	   np.vstacki   (   R%   RP   RM  RV  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRT  y  s   c           B@ s   e  Z d  Z d Z RS(   s	   np.dstacki   (   R%   RP   RM  RV  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRT  ~  s   c         C@ sB   x; | D]3 } | j  d k  s+ | j  d k r t d ƒ ‚ q q Wd S(   Ni   i   s7   np.column_stack() is only defined on 1-d and 2-d arrays(   R(   RL  (   RF   RM  RN  R2   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _column_stack_dims…  s    t   NdColumnStackc           B@ s   e  Z d  „  Z RS(   c         @ s   ‡  f d †  } | S(   Nc         @ s@   t  ˆ  j d |  d t ƒ\ } } t |  ƒ } t j | | | ƒ S(   Ns   np.column_stackRP  (   RQ  RF   RW  RR  R   RE   (   RN  R+   R(   R-   (   R:   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  ’  s
    		(    (   R:   R&  (    (   R:   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ‘  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRX  Ž  s   t   MatMulTyperMixinc           B@ s   e  Z d d  „ Z RS(   c         @ sV  t  ˆ  t j ƒ s& t  | t j ƒ r* d St d „  ˆ  | f Dƒ ƒ s_ t d |  j f ƒ ‚ n  t ˆ  j | j g ƒ } | t d g ƒ k r• d } n? | t d d g ƒ k r¶ d } n | t d g ƒ k rÔ d } n  | d k	 r\| d k rû t	 d ƒ ‚ n | j | k rt	 d ƒ ‚ n  t  | t j ƒ s;| j
 d	 k rJt	 d
 ƒ ‚ n  ˆ  | | f } n ˆ  | f } t d „  ˆ  | f Dƒ ƒ s³d |  j ˆ  | f f } t j t | ƒ ƒ n  t ‡  f d †  | Dƒ ƒ sèt d |  j f ƒ ‚ n  t  ˆ  j t j t j f ƒ st d |  j f ƒ ‚ n  | r)| S| d k rKt j ˆ  j | d	 ƒ Sˆ  j Sd S(   sA   
        Typer function for Numpy matrix multiplication.
        Nc         s@ s   |  ] } | j  d k Vq d S(   i   i   N(   i   i   (   R(   (   R   R5   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>ª  s    s'   %s only supported on 1-D and 2-D arraysi   i   i    s/   explicit output unsupported for vector * vectors,   explicit output has incorrect dimensionalityR   s#   output must be a C-contiguous arrayc         s@ s   |  ] } | j  d  k Vq d S(   t   CFN(   R-   (   R   R5   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>Ä  s    s/   %s is faster on contiguous arrays, called on %sc         3@ s!   |  ] } | j  ˆ  j  k Vq d  S(   N(   R+   (   R   R5   (   R2   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>È  s    s)   %s arguments must all have the same dtypes-   %s only supported on float and complex arrays(   R   R   RE   R*   R   RM  t   setR(   R,   RL  R-   t   warningst   warnR   R+   R7  R6  (   R:   R2   t   bRK   R   t   out_ndimt   all_argsR   (    (   R2   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   matmul_typer¤  sH    &			"N(   R%   RP   R,   Ra  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRY  ¢  s   t   Dotc           B@ s   e  Z d  Z d „  Z RS(   s   np.dot()c         @ s   d  ‡  f d † } | S(   Nc         @ s   ˆ  j  |  | | ƒ S(   N(   Ra  (   R2   R^  RK   (   R:   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  Ü  s    (   R,   (   R:   R&  (    (   R:   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   Û  s    (   R%   RP   RM  RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRb  ×  s   t   VDotc           B@ s   e  Z d  „  Z RS(   c         C@ s   d „  } | S(   Nc         @ sö   t  ˆ  t j ƒ s& t  | t j ƒ r* d  St d „  ˆ  | f Dƒ ƒ sU t d ƒ ‚ n  t d „  ˆ  | f Dƒ ƒ s‘ t j d ˆ  | f f t ƒ n  t ‡  f d †  ˆ  | f Dƒ ƒ sÂ t d ƒ ‚ n  t  ˆ  j t j	 t j
 f ƒ sï t d ƒ ‚ n  ˆ  j S(   Nc         s@ s   |  ] } | j  d  k Vq d S(   i   N(   R(   (   R   R5   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>ë  s    s&   np.vdot() only supported on 1-D arraysc         s@ s   |  ] } | j  d  k Vq d S(   RZ  N(   R-   (   R   R5   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>í  s    s6   np.vdot() is faster on contiguous arrays, called on %sc         3@ s!   |  ] } | j  ˆ  j  k Vq d  S(   N(   R+   (   R   R5   (   R2   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>ð  s    s0   np.vdot() arguments must all have the same dtypes4   np.vdot() only supported on float and complex arrays(   R   R   RE   R*   R   R\  R]  R   R+   R7  R6  (   R2   R^  (    (   R2   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  è  s    &	"(    (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ç  s    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRc  ä  s   t   MatMulc           B@ s    e  Z e j Z d  Z d „  Z RS(   s   '@'c         C@ s9   | s t  ‚ |  j | Œ  } | d  k	 r5 t | | Œ Sd  S(   N(   R#   Ra  R,   R   (   R:   R0   R1   t   restype(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO      s    (   R%   RP   RW   t   matmulR9   RM  RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRd  û  s   	c         C@ sm   t  |  t j ƒ s d  S|  j d k s8 t d | ƒ ‚ n  t  |  j t j t j f ƒ si t d | ƒ ‚ n  d  S(   Ni   s+   np.linalg.%s() only supported on 2-D arrayss9   np.linalg.%s() only supported on float and complex arrays(   R   R   RE   R(   R   R+   R7  R6  (   R2   RM  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   _check_linalg_matrix  s    t   NdEnumeratec           B@ s   e  Z d  „  Z RS(   c         C@ sH   | s t  ‚ | \ } t | t j ƒ rD t j | ƒ } t | | Œ Sd  S(   N(   R#   R   R   RE   t   NumpyNdEnumerateTypeR   (   R:   R0   R1   Rç   t   enumerate_type(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO     s
    	(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRh    s   t   NdIterc           B@ s   e  Z d  „  Z RS(   c         C@ s|   | s t  ‚ t | ƒ d k r# d  S| \ } t | t j ƒ rW | sH d  St | ƒ } n	 | g } t j | ƒ } t | | Œ S(   Ni   (   R#   R&   R   R   R  RC   t   NumpyNdIterTypeR   (   R:   R0   R1   RN  t   nditerty(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   #  s    		(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRk     s   t   NdIndexc           B@ s   e  Z d  „  Z RS(   c         C@ s¶   | s t  ‚ t | ƒ d k rt t | d t j ƒ rt | d } | j d k re t | t j ƒ re d  St | ƒ } n | } t d „  | Dƒ ƒ r² t j	 t | ƒ ƒ } t
 | | Œ Sd  S(   Ni   i    c         s@ s!   |  ] } t  | t j ƒ Vq d  S(   N(   R   R   R  (   R   R5   (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pys	   <genexpr>D  s    (   R#   R&   R   R   R  R  R  RC   R*   t   NumpyNdIndexTypeR   (   R:   R0   R1   t   tupR  t   iterator_type(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   7  s    (
"(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRn  3  s   t
   typing_keyt   Roundc           B@ s   e  Z d  „  Z RS(   c         C@ sq  | s t  ‚ d t | ƒ k o* d k n s5 t  ‚ | d } t | ƒ d k rc t j } d  } n/ | d } t | ƒ d k rˆ d  } n
 | d } t j t j t j f } t | | ƒ rØ | d  k sË t  ‚ t	 | | Œ St | t j
 ƒ rmt | j | ƒ rmt | t j
 ƒ rmt | j | ƒ rm| j | j k rmt | j t j ƒ s]t | j t j ƒ rmt	 | | Œ Sn  d  S(   Ni   i   i    i   (   R#   R&   R   t   intpR,   R  R7  R6  R   R   RE   R+   R(   (   R:   R0   R1   Rw   t   decimalsRK   t   supported_scalars(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   O  s(    (
		
	
$$(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRs  K  s   t   Wherec           B@ s   e  Z d  „  Z RS(   c   
   	   C@ s  | s t  ‚ t | ƒ d k rl | d } t | j d ƒ } t j t j t j d d ƒ | ƒ } t | | ƒ St | ƒ d k r| \ } } } t	 t
 j t t | d d | d ƒ ƒ t t | d d | d ƒ ƒ ƒ ƒ }	 t | t j ƒ rÊt | t j ƒ rŸt | t j ƒ rŸ| j | j k o/| j k n rÇ| j | j k oT| j k n rwt j |	 | j | j ƒ } n t j |	 | j d ƒ } t | | Œ Sqþt j |	 | j | j ƒ } t | | Œ Sqt | t j ƒ st j |	 d d ƒ } t | | Œ Sn  d  S(   Ni   i    R   i   R+   i   (   R#   R&   R)   R(   R   R  RE   Rt  R   R   R<   t   promote_typesR   Rm   R   R-   (
   R:   R0   R1   t   aryR(   RH  t   condR5   t   yt   retdty(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   n  s.    
$	&$%%(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRw  k  s   t   Sincc           B@ s   e  Z d  „  Z RS(   c         C@ s…   | s t  ‚ t | ƒ d k s% t  ‚ | d } t j t j f } t | | ƒ st t | t j ƒ r t | j | ƒ r t | | ƒ Sd  S(   Ni   i    (	   R#   R&   R   R7  R6  R   RE   R+   R   (   R:   R0   R1   Rw   Rv  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ”  s    
(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR}  ‘  s   t   Anglec           B@ s   e  Z d  Z d „  Z RS(   s(   
    Typing template for np.angle()
    c         C@ s   t  d „ } | S(   Nc         S@ s‹   t  |  t j ƒ r |  j } n |  } t  | t j ƒ rB | j } n t  | t j ƒ r] | } n d  St  |  t j ƒ rƒ |  j d | ƒ S| Sd  S(   NR+   (   R   R   RE   R+   R6  t   underlying_floatR7  RT   (   t   zt   degR+   t	   ret_dtype(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  ¥  s    	(   R-  (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ¤  s    (   R%   RP   RV   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR~  Ÿ  s   t   DiagCtorc           B@ s   e  Z d  Z d „  Z RS(   s'   
    Typing template for np.diag()
    c         C@ s   d d „ } | S(   Ni    c         S@ s„   t  |  t j ƒ r€ |  j d k r* d } n |  j d k rB d } n d  St  | t t j f ƒ r€ t j d | d |  j d d ƒ Sn  d  S(   Ni   i   R(   R+   R-   R   (   R   R   RE   R(   R,   t   intR  R+   (   t   reft   kt   rdim(    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  ½  s    		(    (   R:   R&  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   ¼  s    
(   R%   RP   RV   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRƒ  ·  s   t   Takec           B@ s   e  Z d  „  Z RS(   c         C@ s  | s t  ‚ t | ƒ d k s% t  ‚ | \ } } t | t j ƒ rO | j } n² t | t j ƒ rˆ t j d | j d | j d d ƒ } ny t | t j ƒ r¾ t j d d d | j d d ƒ } nC t | t j	 ƒ rý t j d t
 j | ƒ d | j d d ƒ } n d  St | | Œ S(   Ni   R(   R+   R-   R   i   (   R#   R&   R   R   R8  R+   RE   R(   t   ListR  R<   R,   R   (   R:   R0   R1   Rç   t   indRH  (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   Í  s    '$-(   R%   RP   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRˆ  Ê  s   t   NumbaCArrayc           B@ s   e  Z d  Z d „  Z RS(   R   c         @ s(   ˆ j  j ‰  t j ‡  ‡ f d † } | S(   Nc         @ s5  |  t  j k r d  } n4 t |  t  j ƒ r6 |  j } n t d ˆ  |  f ƒ ‚ | t  j k r† | d  k r} t d ˆ  f ƒ ‚ n  | } nh t | t  j ƒ rØ | j } | d  k	 rî | | k rî t d ˆ  | |  f ƒ ‚ qî n t d ˆ  | f ƒ ‚ t	 | ƒ } | d  k rt d ˆ  | f ƒ ‚ n  t  j
 | | ˆ j ƒ S(   Ns)   %s(): pointer argument expected, got '%s's0   %s(): explicit dtype required for void* arguments2   %s(): mismatching dtype '%s' for pointer type '%s's   %s(): invalid dtype spec '%s's   %s(): invalid shape '%s'(   R   t   voidptrR,   R   t   CPointerR+   RL  t   noneR  R  RE   R-   (   t   ptrR  R+   t	   ptr_dtypeR(   (   RM  R:   (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR&  è  s.    			(   R9   R%   R   RŽ  (   R:   R&  (    (   RM  R:   s3   lib/python2.7/site-packages/numba/typing/npydecl.pyRO   å  s    (   R%   RP   R-   RO   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR‹  á  s   t   NumbaFArrayc           B@ s   e  Z d  Z RS(   R   (   R%   RP   R-   (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyR‘  	  s   (   i   i   (   i   i
   (§   t
   __future__R    R   R\  t   numpyR<   RW   R   R   R   t	   templatesR   R   R   R   R   t   numpy_supportR	   R
   R   R   R   R   R   R   R/  t   errorsR   R   t   numbaR   t   registryt   registert   inferR
  Rq   t   register_attrt   infer_getattrR   RX   RS   RY   Rn   t
   _binop_mapRŽ   R    t   _math_operationst   _trigonometric_functionst   _bit_twiddling_functionst   _comparison_functionst   _floating_functionsR[  t   _unsupportedRá   Rl   R]   RZ   Rä   Ræ   t
   all_ufuncsR5   t   supported_ufuncsRà   Rã   Rm   Rv   t   keyst   uniont   supported_array_operatorsRå   Rú   t   number_domainR  t   bool_t   intcRt  t   uintct   uintpR  R  R  R  t   arrayR#  t   emptyt   zerost   onesR'  t
   empty_liket
   zeros_likeR*  t	   ones_liket   fullR.  t	   full_likeR1  t   identityR2  R4  t   arangeR5  t   linspaceR;  t
   frombufferR=  t   sortR?  t   asfortranarrayR@  t   ascontiguousarrayRA  RT   RB  t   expand_dimsRC  RD  t
   atleast_1dRI  t
   atleast_2dRJ  t
   atleast_3dRK  RO  RQ  RR  t   concatenateRS  t   stackRT  RU  t   hstackt   vstackt   dstackRW  t   column_stackRX  R$  RY  t   dotRb  t   vdotRc  t   HAS_MATMUL_OPERATORRf  Rd  Rg  t   ndenumerateRh  t   nditerRk  t   ndindexRn  t   roundt   aroundRs  t   whereRw  t   sincR}  t   angleR~  t   diagRƒ  t   takeRˆ  R‹  R‘  (    (    (    s3   lib/python2.7/site-packages/numba/typing/npydecl.pyt   <module>   sh  (:				{<	#														
	%""


				
				"	


	
				5			%'