
\K]c           @   s  d  d l  m Z d  d l m Z m Z d  d l Z d  d l m Z	 d  d l m
 Z
 m Z d  d l m Z d  d l m Z d d	 l m Z m Z m Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d   Z* d    Z+ d!   Z, d"   Z- d#   Z. d$   Z/ d%   Z0 d&   Z1 d'   Z2 d(   Z3 d)   Z4 d*   Z5 d+   Z6 d,   Z7 d-   Z8 d.   Z9 d/   Z: d0   Z; d1   Z< d2   Z= d3   Z> d4   Z? d5   Z@ d6   ZA d7 e e f d8     YZB eB jC   d9 e e f d:     YZD eD jE   eF d; k re	 jG   n  d S(<   i(   t   division(   t   productt   combinations_with_replacementN(   t   unittest_support(   t   jitt   typeof(   t   compile_isolated(   t   versioni   (   t   TestCaset   MemoryLeakMixint   tagc         C   s
   |  j    S(   N(   t   all(   t   arr(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   array_all   s    c         C   s   t  j |   S(   N(   t   npR   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_all_global   s    c         C   s
   |  j    S(   N(   t   any(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   array_any   s    c         C   s   t  j |   S(   N(   R   R   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_any_global   s    c         C   s
   |  j    S(   N(   t   cumprod(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_cumprod   s    c         C   s   t  j |   S(   N(   R   R   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_cumprod_global   s    c         C   s   t  j |   S(   N(   R   t
   nancumprod(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nancumprod    s    c         C   s
   |  j    S(   N(   t   cumsum(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_cumsum#   s    c         C   s   t  j |   S(   N(   R   R   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_cumsum_global&   s    c         C   s   t  j |   S(   N(   R   t	   nancumsum(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nancumsum)   s    c         C   s
   |  j    S(   N(   t   sum(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   array_sum,   s    c         C   s   t  j |   S(   N(   R   R   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_sum_global/   s    c         C   s
   |  j    S(   N(   t   prod(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt
   array_prod2   s    c         C   s   t  j |   S(   N(   R   R    (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_prod_global5   s    c         C   s
   |  j    S(   N(   t   mean(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt
   array_mean8   s    c         C   s   t  j |   S(   N(   R   R#   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_mean_global;   s    c         C   s
   |  j    S(   N(   t   var(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   array_var>   s    c         C   s   t  j |   S(   N(   R   R&   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_var_globalA   s    c         C   s
   |  j    S(   N(   t   std(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   array_stdD   s    c         C   s   t  j |   S(   N(   R   R)   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_std_globalG   s    c         C   s
   |  j    S(   N(   t   min(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   array_minJ   s    c         C   s   t  j |   S(   N(   R   R,   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_min_globalM   s    c         C   s
   |  j    S(   N(   t   max(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   array_maxP   s    c         C   s   t  j |   S(   N(   R   R/   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_max_globalS   s    c         C   s
   |  j    S(   N(   t   argmin(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_argminV   s    c         C   s   t  j |   S(   N(   R   R2   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_argmin_globalY   s    c         C   s
   |  j    S(   N(   t   argmax(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_argmax\   s    c         C   s   t  j |   S(   N(   R   R5   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_argmax_global_   s    c         C   s   t  j |   S(   N(   R   t   median(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_median_globalb   s    c         C   s   t  j |   S(   N(   R   t   nanmin(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanmine   s    c         C   s   t  j |   S(   N(   R   t   nanmax(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanmaxh   s    c         C   s   t  j |   S(   N(   R   t   nanmean(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanmeank   s    c         C   s   t  j |   S(   N(   R   t   nansum(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nansumn   s    c         C   s   t  j |   S(   N(   R   t   nanprod(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanprodq   s    c         C   s   t  j |   S(   N(   R   t   nanstd(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanstdt   s    c         C   s   t  j |   S(   N(   R   t   nanvar(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanvarw   s    c         C   s   t  j |   S(   N(   R   t	   nanmedian(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanmedian_globalz   s    c         C   s   t  j |  |  S(   N(   R   t
   percentile(   R   t   q(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_percentile_global}   s    c         C   s   t  j |  |  S(   N(   R   t   nanpercentile(   R   RK   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanpercentile_global   s    c         C   s   t  j |   S(   N(   R   t   ptp(   t   a(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_ptp_global   s    c         C   s   t  j |  |  S(   N(   R   t   quantile(   R   RK   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_quantile_global   s    c         C   s   t  j |  |  S(   N(   R   t   nanquantile(   R   RK   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   array_nanquantile_global   s    c            s     t  j k r d   } n   f d   } | d  } | d  j d d  } | d  d  d  d  j d d	 d
 } | j j p | j j s t  | | | g S(   Nc         S   s1   |  d d k s t   t j d d g |  d  S(   Ni   i    i   (   t   AssertionErrorR   t   bool_(   t   n(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   factory   s    c            s   t  j |  d   d S(   Nt   dtypei   (   R   t   arange(   RX   (   RZ   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyRY      s    i
   i   i   i   ii   t   ordert   A(   i   i   i   (   R   RW   t   reshapet   flagst   c_contiguoust   f_contiguousRV   (   RZ   RY   t   a1t   a2t   a3(    (   RZ   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   base_test_arrays   s    (c         C   s   t  |   } |  t j k r? | g  | D] } | d ^ q% 7} n  |  t j k r g  } xZ | D]R } | d d | d } t j | d  d  d   | d  d  d  <| j |  q[ W| j |  n  x, | D]$ } | j t j |   k s t  q W| S(   Ni
   y              ?i   i   (	   Re   R   t   float32t	   complex64t   conjt   appendt   extendRZ   RV   (   RZ   t
   array_listRP   t   acct   tmp(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   full_test_arrays   s    $)"c         C   sC   t  |  } t |  | g  } |  |  } | j |  } | | f S(   N(   R   R   t   entry_point(   t   compare_funct
   test_arrayt   arrtyt   crest   numpy_resultt   numba_result(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   run_comparative   s
    t   TestArrayReductionsc           B   s  e  Z d  Z d   Z e d  Z e d  e d   Z e d  e	 d   Z
 e d  d    Z e d  d    Z e d  d    Z e d  d	    Z e d  d
    Z e d  d    Z e d  d    Z e d  d    Z e d  d    Z e d  d    Z e d  e j e d\ k d  d     Z e d  d    Z e d  e j e d] k d  d     Z e d  e j e d^ k d  d     Z e d  e j e d_ k d  d     Z d   Z e d    Z e d  d    Z  d   Z! d  d!  Z" d"   Z# d#   Z$ e j e d` k d$  d%    Z% e j e da k d'  d(    Z& e j e db k d*  d+    Z' e j e dc k d,  d-    Z( e j e dd k d/  d0    Z) d1   Z* d2   Z+ d3   Z, d4   Z- d5   Z. e d  d6    Z/ d7   Z0 e d  d8    Z1 d9   Z2 e3 d:  Z4 d;   Z5 d<   Z6 e j e de k d>  d?    Z7 d@   Z8 dA   Z9 e j e df k dB  dC    Z: dD   Z; dE   Z< dF   Z= dG   Z> dH   Z? dI   Z@ dJ   ZA dK   ZB dL   ZC dM   ZD dN   ZE dO   ZF dP   ZG dQ   ZH dR   ZI e j e dg k dB  dS    ZJ e j e dh k d>  dT    ZK dU   ZL dV   ZM dW   ZN dX   ZO dY   ZP dZ   ZQ eR d[    ZS RS(i   sQ   
    Test array reduction methods and functions such as .sum(), .max(), etc.
    c         C   s'   t  t |   j   t j j d  d  S(   Ni*   (   t   superRw   t   setUpR   t   randomt   seed(   t   self(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyRy      s    c            sb  t  d t           f d   } t j d d d d d d g  } | |  t j d d g  } | |  t j d d d	 g  } | |  t j d d d
 g  } | |  t j d d d	 d
 g  } | |  t j d d d d d g  } | |  t j d d d d d	 d
 d g  } | |  | r^t j d d g  } | |  n  d  S(   Nt   nopythonc            s#    j   |     |     d  S(   N(   t   assertPreciseEqual(   R   (   t   cfunct   kwargst   pyfuncR|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check   s    g      ?g       @g        g       g      g      @t   infs   -inft   nang      @(   R   t   TrueR   t   float64(   R|   R   t   all_nansR   R   R   (    (   R   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_reduction_basic   s&    !





$
t	   importantc            s   t  d t          f d   } t j d d t d  t d  g  } | |  d | d <| |  d	 | d <| |  | j d  } | |  | | d  d  d   d  S(   NR}   c            s     j   |     |    d  S(   N(   R~   (   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR      s    g      ?g        R   R   g       i   g      ?i   i(   i   i   (   R   R   R   R   t   floatR^   (   R|   R   R   R   (    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_all_basic   s    '





c            s   t  d t          f d   } t j d d d d g  } | |  t d  | d <| |  t d  | d <| |  d | d <| |  | j d
  } | |  | | d  d  d	   d  S(   NR}   c            s     j   |     |    d  S(   N(   R~   (   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR      s    g        g       R   i   R   g      ?i(   i   i   (   R   R   R   R   R   R^   (   R|   R   R   R   (    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_any_basic   s    





c         C   s   |  j  t  d  S(   N(   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_sum_basic   s    c         C   s   |  j  t  d  S(   N(   R   R$   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_mean_basic  s    c         C   s   |  j  t d d d  S(   Nt   prect   double(   R   R'   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_var_basic  s    c         C   s   |  j  t  d  S(   N(   R   R*   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_std_basic
  s    c         C   s   |  j  t  d  S(   N(   R   R-   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_min_basic  s    c         C   s   |  j  t  d  S(   N(   R   R0   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_max_basic  s    c         C   s   |  j  t  d  S(   N(   R   R3   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_argmin_basic  s    c         C   s   |  j  t  d  S(   N(   R   R6   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_argmax_basic  s    c         C   s   |  j  t  d  S(   N(   R   R;   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanmin_basic  s    c         C   s   |  j  t  d  S(   N(   R   R=   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanmax_basic"  s    i   i   s   nanmean needs Numpy 1.8+c         C   s   |  j  t  d  S(   N(   R   R?   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanmean_basic&  s    c         C   s   |  j  t d t d k d  S(   NR   i   i	   (   i   i	   (   R   RA   t
   np_version(   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nansum_basic+  s    i
   s   nanprod needs Numpy 1.10+c         C   s   |  j  t  d  S(   N(   R   RC   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanprod_basic2  s    s   nanstd needs Numpy 1.8+c         C   s   |  j  t  d  S(   N(   R   RE   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanstd_basic7  s    s   nanvar needs Numpy 1.8+c         C   s   |  j  t d d d  S(   NR   R   (   R   RG   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanvar_basic<  s    c            s   t  d t          f d     f d   } x+ | t j d  d  D] } | |  qS W f d   } x+ | t j d  d  D] } | |  q Wd  S(   NR}   c            s,    |   }   |   }  j  | |  d  S(   N(   R~   (   R   t   expectedt   got(   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR   C  s    c            s4     |   |  j  d  }    |     |  j  d  S(   Ni	   i   (   i	   i   (   R^   t   T(   RP   (   R   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   check_oddI  s    

i?   g      %@c            s4     |   |  j  d  }    |     |  j  d  S(   Ni   i   (   i   i   (   R^   R   (   RP   (   R   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt
   check_evenR  s    

i@   (   R   R   R   R[   (   R|   R   t   array_variationsR   RP   R   (    (   R   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_median_basicA  s      c         c   s   |  V|  d  d  d  j    }  |  Vt j j |   |  Vd |  |  d d k <|  Vt j |  |  d d k <|  Vt j |  (|  Vd  S(   Nig      @i   i   i   (   t   copyR   Rz   t   shuffleR   (   RP   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   _array_variationsZ  s    
c         C   s#   t  } d   } |  j | |  d  S(   Nc         s   sU   |  V|  d  d  d  j    }  |  Vt j j |   |  Vd |  |  d d k <|  Vd  S(   Nig      @i   i   (   R   R   Rz   R   (   RP   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt
   variationsm  s    (   R9   R   (   R|   R   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_median_basici  s    	
c            s  t  d t      d     f d  }  j j d  j d d d  } t j d | d  d  d  d  } | | |  | | d  | | | d	  | | |  t j t j t j g }  j j	 | d
  | j
 d
 * j j |   j j |  | | |  | j   j   } | j   j   } | | |  | t |  t |    j j	 d d	 d d g d
  } t j d | d  } | | |  t j d  d } t j j   | d  d  t j j   | |  d  t j j   | | d	  d  t j d  j d d  } t j d  | } t j j   | |  d d d g  t j d  j d d d d  } t j d  | } t j j   | |  j d   t j d!  | } t j j   | |  j d"  t j d  j d d  } t j j   | | d	  d   j t j   | | d	    t j j   d d	 d g d  d  t j d	 d d d g  }   | | d	 g  t j j | t j d	 d d d g   d  S(#   NR}   g-q=c            s8    |  |  }   |  |  }  j  | | d | d  S(   Nt   abs_tol(   R~   (   RP   RK   R   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR   |  s    i   i   i    i   ii   i
   i   i   i   i   g      ?g        g      @g      ?i   g      ?g      ?g      @g      @g      &@i   g      ?(   g      ?g      ?g      ?i   i<   ih  (   g      ?g      ?(   i   (   g      ?g      ?g      ?(   i   (   R   R   Rz   t   randnR^   R   t   linspaceR   R   t   choicet   flatR   t   flattent   tolistt   tupleR[   t   testingt   assert_equalt   arrayt   shapet
   assertTruet   isscalar(   R|   R   t   q_upper_boundR   RP   RK   t
   not_finitet   x(    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_percentile_and_quantiley  sN    !"! %! #%id   c   
         sV  t  d t      d     f d  } d     f d  } d   } d d | d | | f } d	 d
 t j t j t j f } x! | |  D] } | | |  q W| d	 k r | }	 n | }	 t j d  } t j d	  } |	 | |  t } t } |	 | |  t j t t t g  } | } |	 | |  d } | d } |	 | |  d  S(   NR}   g+=c            s8    |  |  }   |  |  }  j  | | d | d  S(   NR   (   R~   (   RP   RK   R   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR     s    c            sD    |  |  j  t j  }   |  |  }  j | | d | d  S(   NR   (   t   astypeR   R   R~   (   RP   RK   R   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   convert_to_float_and_check  s    c         s   sF   x? t  d d  D]. } x% t |  |  D] } t j |  Vq& Wq Wd  S(   Ni   i
   (   t   rangeR   R   R   (   t   elementst   it   comb(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   _array_combinations  s    i    g?g?i   ii   i   (   R   R   R   R   R   R   t   False(
   R|   R   R   R   R   R   RK   t   element_poolRP   t   _check(    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_percentile_edge_cases  s.    		
c            s   t  d t  |       f d   }  j   t j d  } | | d  | | d  | | d d t j f   j   - } t j d  d } d	 }   | |  Wd  QX j d
 t | j	   d  S(   NR}   c            sB    j  t   }   |  |  Wd  QX j d t | j   d  S(   Ns)   Percentiles must be in the range [0, 100](   t   assertRaisest
   ValueErrort   assertEqualt   strt	   exception(   RP   RK   t   raises(   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt	   check_err  s
    i   ii   i
   ii   y              ?g?s   Not supported for complex dtype(   i   i
   ii   (
   R   R   t   disable_leak_checkR   R[   R   t   assertTypingErrort   assertInR   R   (   R|   R   R   RP   t   eRK   (    (   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_percentile_exceptions  s    	
c            s   t  d t  |       f d   }  j   t j d  } | | d  | | d	  | | d d t j f   j   - } t j d  d } d }   | |  Wd  QX j d t | j	   d  S(
   NR}   c            sB    j  t   }   |  |  Wd  QX j d t | j   d  S(   Ns%   Quantiles must be in the range [0, 1](   R   R   R   R   R   (   RP   RK   R   (   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR     s
    i   g      g?g?y              ?s   Not supported for complex dtype(   g?g?g?(
   R   R   R   R   R[   R   R   R   R   R   (   R|   R   R   RP   R   RK   (    (   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_quantile_exceptions  s    	
s   percentile needs Numpy 1.10+c         C   s=   t  } |  j | d d |  j | d d |  j |  d  S(   NR   id   (   RL   R   R   R   (   R|   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_percentile_basic  s    i   s   nanpercentile needs Numpy 1.11+c         C   s=   t  } |  j | d d |  j | d d |  j |  d  S(   NR   id   (   RN   R   R   R   (   R|   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanpercentile_basic  s    i   s   quantile needs Numpy 1.15+c         C   s=   t  } |  j | d d |  j | d d |  j |  d  S(   NR   i   (   RS   R   R   R   (   R|   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_quantile_basic%  s    s   nanquantile needs Numpy 1.15+c         C   s=   t  } |  j | d d |  j | d d |  j |  d  S(   NR   i   (   RU   R   R   R   (   R|   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanquantile_basic,  s    i	   s   nanmedian needs Numpy 1.9+c         C   s   t  } |  j | |  j  d  S(   N(   RI   R   R   (   R|   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nanmedian_basic4  s    c         C   s   t  j d d t  j } t |  } |  j | j d  |  j | j d  t t | g  } | j	 } |  j t  j
 |  | |   d  S(   Ni
   RZ   i   t   C(   R   R[   t   int32R   R   t   ndimt   layoutR   R   Ro   R   (   R|   R   Rr   Rs   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_sum_global9  s    	c         C   s   t  j d d t  j d } t |  } |  j | j d  |  j | j d  t t | g  } | j	 } |  j | j
   | |   d  S(   Ni
   RZ   i   R   (   R   R[   R   R   R   R   R   R   R!   Ro   R    (   R|   R   Rr   Rs   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_prod_int_1dD  s    	c         C   s   t  j d d t  j d } t |  } |  j | j d  |  j | j d  t t | g  } | j	 } t  j
 j | j   | |   d  S(   Ni
   RZ   i   R   g?(   R   R[   Rf   R   R   R   R   R   R!   Ro   R   t   assert_allcloseR    (   R|   R   Rr   Rs   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_prod_float_1dO  s    	c         C   s   t  j d d t  j } t |  } |  j | j d  |  j | j d  t t | g  } | j	 } t  j
 j t  j |  | |   d  S(   Ni
   RZ   i   R   (   R   R[   R   R   R   R   R   R   R"   Ro   R   R   R    (   R|   R   Rr   Rs   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_prod_globalZ  s    	c         C   s   t  j d d d t  j } t | |  \ } } |  j | |  t  j d d d  } t | |  \ } } |  j | |  | j d  } t | |  \ } } |  j | |  d  S(   Ni   i
   RZ   i   i   i   (   i   i   (   R   R[   t   int16Rv   R~   R   R^   (   R|   R   R   R   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_cumulativee  s    c         C   s   |  j  t  d  S(   N(   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_cumsump  s    c         C   s   |  j  t  d  S(   N(   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_cumsum_globalt  s    c         C   s   |  j  t  d  S(   N(   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_cumprodw  s    c         C   s   |  j  t  d  S(   N(   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_array_cumprod_global{  s    c         C   s   | r d n d } t  j |  d j d  } t | |  \ } } |  j | |  t  j d  d	 j d  } t | |  \ } } |  j | |  | j d  } t | |  \ } } |  j | |  d S(
   sH   
        Check that integer overflows are avoided (issue #931).
        i   i
   i@  R   i<   t   int64t   uint64NI       (   R   R[   R   Rv   R~   (   R|   R   t   is_prodt   n_itemsR   t   nprt   nbr(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_aggregation_magnitude~  s    c         C   s   |  j  t  |  j  t  d  S(   N(   R   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_sum_magnitude  s    c         C   s   |  j  t  |  j  t  d  S(   N(   R   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_cumsum_magnitude  s    i   s   nancumsum needs Numpy 1.12+c         C   s   |  j  t d t d  S(   NR   (   R   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nancumsum_magnitude  s    c         C   s*   |  j  t d t |  j  t d t d  S(   NR   (   R   R!   R   R"   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_prod_magnitude  s    c         C   s*   |  j  t d t |  j  t d t d  S(   NR   (   R   R   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_cumprod_magnitude  s    s   nancumprod needs Numpy 1.12+c         C   s   |  j  t d t d  S(   NR   (   R   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nancumprod_magnitude  s    c         C   s   |  j  t  |  j  t  d  S(   N(   R   R$   R%   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_mean_magnitude  s    c         C   s   |  j  t  |  j  t  d  S(   N(   R   R'   R(   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_var_magnitude  s    c         C   s   |  j  t  |  j  t  d  S(   N(   R   R*   R+   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_std_magnitude  s    c         C   s%  t  |  } t d t  |  } |  j | |  | |   |  j | | d   | | d    | d  d  d  j   } |  j | |  | |   t j j |  |  j | |  | |   d | | j d <|  j | |  | |   | j	 | j
 d   |  j | |  | |   d  S(   NR}   it   NaTi   (   R   R   R   R~   R   R   Rz   R   t   sizet   fillRZ   (   R|   R   R   Rr   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   _do_check_nptimedelta  s    $c         C   s/   t  j d  j d d  } |  j | |  d  S(   Ni
   RZ   s   M8[Y](   R   R[   R   R   (   R|   R   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_npdatetime  s    c         C   s/   t  j d  j d d  } |  j | |  d  S(   Ni
   RZ   s   m8[s](   R   R[   R   R   (   R|   R   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_nptimedelta  s    c         C   s   |  j  t  |  j t  d  S(   N(   R   R-   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_min_npdatetime  s    c         C   s   |  j  t  |  j t  d  S(   N(   R   R0   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_max_npdatetime  s    c         C   s   |  j  t  |  j t  d  S(   N(   R   R3   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_argmin_npdatetime  s    c         C   s   |  j  t  |  j t  d  S(   N(   R   R6   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_argmax_npdatetime  s    c         C   s   |  j  t  d  S(   N(   R   R9   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_median_npdatetime  s    c         C   s   |  j  t  d  S(   N(   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_sum_npdatetime  s    c         C   s   |  j  t  d  S(   N(   R   R   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_cumsum_npdatetime  s    c         C   s   |  j  t  d  S(   N(   R   R$   (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_mean_npdatetime  s    c      
      s  t  d t          f d   } d   } d   } x7 |   D], } | |  | | | j t j    qF W| t j g    | t j d t j   t j t j d t j d d d	 d
 d d g	  } | d | d  d  d  } | j d d  } | |  d  S(   NR}   c            s,    |   }   |   }  j  | |  d  S(   N(   R~   (   RP   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR     s    c         S   sE   |  j  d } t j |  t j j t |  j   | d t t j  |  S(   Ni   t   replace(   R   R   t   putRz   R   R   R   R   (   RP   t   p(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   _set_some_values_to_nan  s    4c           s   s   t  j d d d  j d d d  Vt  j t  j d d g  Vt  j t t t t g  Vt  j d d  Vt  j t  j d d  d	  Vt  j d d d
 t  j	 d  d  d  Vd  S(   Nii   i<   i   i   i   i
   i@   gfffff@@RZ   (
   R   R   R^   R   R   R   R   R[   t   asfortranarrayRf   (    (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   a_variations  s    #i
   i   i   i   i   i   i   i	   y              ?ii   (	   R   R   R   R   R   R   t   fullR   R^   (   R|   R   R   R
  R  RP   t   parts(    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_nan_cumulative  s    		
 0c         C   s   |  j  t  |  j t  d  S(   N(   R   R   R  (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nancumprod_basic  s    c         C   s   |  j  t  |  j t  d  S(   N(   R   R   R  (   R|   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_nancumsum_basic  s    c            s[   t   t d t          f d   } d   } x |   D] } | |  qC Wd  S(   NR}   c            s,    |   }   |   }  j  | |  d  S(   N(   R~   (   RP   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR     s    c          s   sR  t  j d  Vt  j d t  j d g  Vt  j t  j d g  Vd Vd Vt  j d d  Vd d d	 g Vt  j d
 d d  j d d d  }  |  Vt  j |   V|  d  d  d  Vt  j	 j
 d  j |   |  Vd Vd Vt  j Vd Vd t  j g Vd t  j g Vd d f Vt  j d t  j  Vd t  j d Vt  j t  j d Vt  j Vd  S(   Ni
   gg@i   i   i   i   gffffffg?ii   ii    i   g      @y              @gffffff@g       @gffffffg333333@g@g@y              ?(   i   i   i   (   i   y      ?      @(   gffffff@g       @gffffff(   g333333@g@g@(   R   R[   R   R   R   R  R   R^   R  Rz   t   RandomStateR   (   RP   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR  "  s0    $	(   RQ   R   R   (   R|   R   R  RP   (    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_ptp_basic  s    	c            s   t   t d t          f d   } t t d  } x? t t t g d d D]% \ } } | | |  } | |  qX Wt j d  } t j d d  } | d	 | } | |  | d	 | } | |  t j d d
 d } | |  d  S(   NR}   c            s,    |   }   |   }  j  | |  d  S(   N(   R~   (   RP   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR   C  s    c         S   st   t  j d d d  } |  r. t  j | d d +n  t  j d d d  } | r\ t  j | d d +n  | d	 | j d d  S(
   Nii   i   i	   ii   i   i   y              ?(   R   R   R   R^   (   t   real_nant   imag_nant   realt   imag(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt
   make_arrayH  s    t   repeati   i   ii   y              ?t
   fill_valuei   (   i   i   y      ?      (	   RQ   R   R   R   R   R   t   onesR[   R  (   R|   R   R  R  R  t   compR  R  (    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_ptp_complex?  s    	%

c      	   C   s   t  } t d t  |  } |  j   |  j   # } | t j t t t f   Wd  QXd } |  j | t	 | j
   |  j t   } | t j g    Wd  QXd } |  j | t	 | j
   d  S(   NR}   s+   Boolean dtype is unsupported (as per NumPy)s&   zero-size array reduction not possible(   RQ   R   R   R   R   R   R   R   R   R   R   R   R   (   R|   R   R   R   t   msg(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_ptp_exceptions_  s    
"c            s  t  t f } x| D]  t d t          f d   } t j d d d  } | d | d *| d } | | d	 } | |  x t d  D]s }  j j |   j j |   j j	 t j
 t j g  } | | d	 } | d | d *| | j |   q Wq Wd  S(
   NR}   c            s,    |   }   |   }  j  | |  d  S(   N(   R~   (   RP   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR   x  s    ii
   i(   ii   i   y              ?(   R.   R1   R   R   R   R   R   Rz   R   R   Rg   t
   complex128R   (   R|   t   pyfuncsR   R  R  RP   t   _RZ   (    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_min_max_complex_basicr  s     

c            s  t  t f } x | D]  t d t          f d   } t j d d d  } | d | d *t j | d d	 +| d
 } t j | d d +| | d } | |  xZ t d  D]L }  j j	 |   j j	 |  | | d } | d | d *| |  q Wq Wd  S(   NR}   c            s,    |   }   |   }  j  | |  d  S(   N(   R~   (   RP   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR     s    ii
   i(   ii   i   i	   i   i   i   y              ?(
   R;   R=   R   R   R   R   R   R   Rz   R   (   R|   R!  R   R  R  RP   R"  (    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt    test_nanmin_nanmax_complex_basic  s"    

c            sr   t  t f }     f d   } d   } xA | D]9  t d t      x |   D] } | |  qV Wq1 Wd  S(   Nc            s,    |   }   |   }  j  | |  d  S(   N(   R~   (   RP   R   R   (   R   R   R|   (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR     s    c           s   s}   d d d d g Vd d f Vt  j d
  Vd Vd Vt Vt  j d d d f Vt  j t  j t  j g Vt  j d f d g Vd  S(   Ni   i   i   i   iii   i   ii   gA`"	@gg      @g?ggffffff!@(   ii   i(   i   i   i(   i   (   ggffffff!@(   R   R   R   R   R   (    (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyR    s    R}   (   R;   R=   R   R   (   R|   R!  R   R  RP   (    (   R   R   R|   s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt#   test_nanmin_nanmax_non_array_inputs  s    	c            s   t  t t t t t t t t t	 t
 t t t t t t t t t t g } t t t t g } t d k ry | t t t g 7} n  t d k r | t g 7} n  t j t j  t j! t j" g }   f d   } | | d  |  | | |  d  S(   Ni   i   i
   c            s   x |  D] } t  |  } xo t | |  D]^ \   } d   j   j | j j | j     |     f d  } t   |  q) Wq Wd  S(   Ns   test_{0}_{1}_{2}dc      	      sh   d } d   j  k r- t j |  r- d } n  t | |  \ } } |  j | | d  d d d | d  S(   Ni   R    i   R  R   t   singlet   ulps(   t   __name__R   t   iscomplexobjRv   R~   (   R|   t   redFunct	   testArrayt   testNameR'  R   R   (   t   red_funct	   test_name(    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   new_test_function  s    	(   Rn   R   t   formatR(  RZ   t   nameR   t   setattr(   t   dtypest   funcst   dtt   test_arraysRq   R/  (   t   cls(   R-  R.  s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   install_tests  s    	i(   i   i   (   i   i
   (#   R   R   R!   R"   R$   R%   R'   R(   R*   R+   R   R   R   R   R-   R.   R0   R1   R=   R;   RA   R3   R4   R6   R7   R   R?   RE   RG   RC   R   R   Rf   RW   Rg   (   R7  t   reduction_funcst   reduction_funcs_rspacet   dtypes_to_testR8  (    (   R7  s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   install_generated_tests  s*    	(   i   i   (   i   i
   (   i   i   (   i   i   (   i   i
   (   i   i   (   i   i   (   i   i   (   i   i	   (   i   i   (   i   i   (   i   i   (   i   i   (T   R(  t
   __module__t   __doc__Ry   R   R   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   unittestt
   skipUnlessR   R   R   R   R   R   R   t   staticmethodR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R  R  R  R  R  R  R  R  R#  R$  R%  t   classmethodR<  (    (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyRw      s   				$	$	$	$		:/		!!!									!		!															#!!	&	 				t   TestArrayReductionsExceptionsc           B   s/   e  Z e j d   Z d   Z e d    Z RS(   i    c         C   sz   t  d t  |  } |  j t   | |  j  Wd  QX|  j t   } | |  j  Wd  QX|  j | t | j   d  S(   NR}   (	   R   R   R   t   BaseExceptiont	   zero_sizeR   R   R   R   (   R|   R   R  R   R   (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   check_exception  s    c         C   s   t    } d } d } x$ t t t t g D] } | | | <q( Wx$ t t t t g D] } | | | <qO Wd } x{ | j   D]m \ } } | j | j	  } | j | j	  }	 |	 j
 d d  j
 d d  }	 | |	 d  }
 t |  | |
  qv Wd  S(   Ns'   attempt to get {0} of an empty sequences*   zero-size array to reduction operation {0}s   test_zero_size_array_{0}t   array_t    t   _globalc         S   s   |  j  | |  d  S(   N(   RF  (   R|   t   funct   message(    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   test_fn#  s    (   t   dictR6   R7   R3   R4   R0   R-   t   itemsR0  R(  R  R2  (   R7  t	   fn_to_msgt	   empty_seqt   op_no_identR   t   name_templatet   fnR  R.  t   lmsgRL  (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   install  s    	(   R(  R=  R   R[   RE  RF  RB  RU  (    (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyRC    s   	
t   __main__(H   t
   __future__R    t	   itertoolsR   R   t   numpyR   t   numbaR   R?  R   R   t   numba.compilerR   t   numba.numpy_supportR   R   t   supportR   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R!   R"   R$   R%   R'   R(   R*   R+   R-   R.   R0   R1   R3   R4   R6   R7   R9   R;   R=   R?   RA   RC   RE   RG   RI   RL   RN   RQ   RS   RU   Re   Rn   Rv   Rw   R<  RC  RU  R(  t   main(    (    (    s@   lib/python2.7/site-packages/numba/tests/test_array_reductions.pyt   <module>   sz   																																														   G
'
