
    ܙd˕                     0   d dl mZmZ d dl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 dl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" Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5d, Z6d- Z7d. Z8d/ Z9d0 Z:d1 Z;d2 Z<d3 Z=d4 Z> G d5 d6ee          Z?e?@                                  G d7 d8ee          ZAeAB                                 eCd9k    r ejD                     dS dS ):    )productcombinations_with_replacementN)jittypeof)compile_isolated)numpy_version)TestCaseMemoryLeakMixintagc                 *    |                                  S N)allarrs    Alib/python3.11/site-packages/numba/tests/test_array_reductions.py	array_allr          7799    c                 *    t          j        |           S r   )npr   r   s    r   array_all_globalr          6#;;r   c                 *    |                                  S r   )anyr   s    r   	array_anyr      r   r   c                 *    t          j        |           S r   )r   r   r   s    r   array_any_globalr      r   r   c                 *    |                                  S r   )cumprodr   s    r   array_cumprodr       s    ;;==r   c                 *    t          j        |           S r   )r   r   r   s    r   array_cumprod_globalr"          :c??r   c                 *    t          j        |           S r   )r   
nancumprodr   s    r   array_nancumprodr&      s    =r   c                 *    |                                  S r   )cumsumr   s    r   array_cumsumr)   !       ::<<r   c                 *    t          j        |           S r   )r   r(   r   s    r   array_cumsum_globalr,   $       9S>>r   c                 *    t          j        |           S r   )r   	nancumsumr   s    r   array_nancumsumr0   '       <r   c                 *    |                                  S r   )sumr   s    r   	array_sumr4   *   r   r   c                 *    t          j        |           S r   )r   r3   r   s    r   array_sum_globalr6   -   r   r   c                 *    |                                  S r   )prodr   s    r   
array_prodr9   0       88::r   c                 *    t          j        |           S r   )r   r8   r   s    r   array_prod_globalr<   3       73<<r   c                 *    |                                  S r   )meanr   s    r   
array_meanr@   6   r:   r   c                 *    t          j        |           S r   )r   r?   r   s    r   array_mean_globalrB   9   r=   r   c                 *    |                                  S r   )varr   s    r   	array_varrE   <   r   r   c                 *    t          j        |           S r   )r   rD   r   s    r   array_var_globalrG   ?   r   r   c                 *    |                                  S r   )stdr   s    r   	array_stdrJ   B   r   r   c                 *    t          j        |           S r   )r   rI   r   s    r   array_std_globalrL   E   r   r   c                 *    |                                  S r   )minr   s    r   	array_minrO   H   r   r   c                 *    t          j        |           S r   )r   rN   r   s    r   array_min_globalrQ   K   r   r   c                 *    |                                  S r   )maxr   s    r   	array_maxrT   N   r   r   c                 *    t          j        |           S r   )r   rS   r   s    r   array_max_globalrV   Q   r   r   c                 *    |                                  S r   argminr   s    r   array_argminrZ   T   r*   r   c                 *    t          j        |           S r   r   rY   r   s    r   array_argmin_globalr]   W   r-   r   c                 *    |                                  S r   argmaxr   s    r   array_argmaxra   Z   r*   r   c                 *    t          j        |           S r   r   r`   r   s    r   array_argmax_globalrd   ]   r-   r   c                 *    t          j        |           S r   )r   medianr   s    r   array_median_globalrg   `   r-   r   c                 *    t          j        |           S r   )r   nanminr   s    r   array_nanminrj   c   r-   r   c                 *    t          j        |           S r   )r   nanmaxr   s    r   array_nanmaxrm   f   r-   r   c                 *    t          j        |           S r   )r   nanmeanr   s    r   array_nanmeanrp   i   r#   r   c                 *    t          j        |           S r   )r   nansumr   s    r   array_nansumrs   l   r-   r   c                 *    t          j        |           S r   )r   nanprodr   s    r   array_nanprodrv   o   r#   r   c                 *    t          j        |           S r   )r   nanstdr   s    r   array_nanstdry   r   r-   r   c                 *    t          j        |           S r   )r   nanvarr   s    r   array_nanvarr|   u   r-   r   c                 *    t          j        |           S r   )r   	nanmedianr   s    r   array_nanmedian_globalr   x   r1   r   c                 ,    t          j        | |          S r   )r   
percentiler   qs     r   array_percentile_globalr   {   s    =a   r   c                 ,    t          j        | |          S r   )r   nanpercentiler   s     r   array_nanpercentile_globalr   ~   s    C###r   c                 *    t          j        |           S r   )r   ptpas    r   array_ptp_globalr      s    6!99r   c                 *    |                                  S r   )r   r   s    r   	array_ptpr      s    5577Nr   c                 ,    t          j        | |          S r   )r   quantiler   s     r   array_quantile_globalr      s    ;sAr   c                 ,    t          j        | |          S r   )r   nanquantiler   s     r   array_nanquantile_globalr      s    >#q!!!r   c                      t           j        k    rd }n fd} |d          } |d                              dd          } |d          d d d                             dd	
          }|j        j        s|j        j        rJ |||gS )Nc                 P    | dz  dk    sJ t          j        ddg| dz  z            S )N   r      )r   bool_)ns    r   factoryz!base_test_arrays.<locals>.factory   s0    q5A::::8QFa1f-...r   c                 6    t          j        |           dz   S )Ndtyper   )r   arange)r   r   s    r   r   z!base_test_arrays.<locals>.factory   s    9Qe,,,q00r   
   r         )r      r   A)order)r   r   reshapeflagsc_contiguousf_contiguous)r   r   a1a2a3s   `    r   base_test_arraysr      s    	/ 	/ 	/ 	/	1 	1 	1 	1 	1 
B			Q	"	"B
'"++ttt		$	$Yc	$	:	:B%?)>???B<r   c                    t          |           }| t          j        k    r|d |D             z  }| t          j        k    rbg }|D ]H}|dz  d|z  dz  z   }t          j        |d d d                   |d d d<   |                    |           I|                    |           |D ]!}|j        t          j        |           k    sJ "|S )Nc                     g | ]}|d z  S )r    ).0r   s     r   
<listcomp>z$full_test_arrays.<locals>.<listcomp>   s    222!q2v222r   r                 ?   r   )r   r   float32	complex64conjappendextendr   )r   
array_listaccr   tmps        r   full_test_arraysr      s    !%((J 
22z2222
  	 	Ab&26B;&Cws33Q3x((C!HJJsOOOO# * *w"(5//)))))r   c                     t          |          }t          | |g          } | |          }|                    |          }||fS r   )r   r   entry_point)compare_func
test_arrayarrtycresnumpy_resultnumba_results         r   run_comparativer      sM    :EL5'22D<
++L##J//L%%r   c                   4    e Zd ZdZ fdZd ZefdZef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ed             Zd Zd ZdVd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.dWd,Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWeXdU             ZY xZZS )XTestArrayReductionszQ
    Test array reduction methods and functions such as .sum(), .max(), etc.
    c                     t          t          |                                            t          j                            d           d S )N*   )superr   setUpr   randomseed)self	__class__s    r   r   zTestArrayReductions.setUp   s:    !4((..000
	rr   c                      t          d                     fd}t          j        g d          } ||           t          j        ddg          } ||           t          j        g d          } ||           t          j        g d          } ||           t          j        g d	          } ||           t          j        g d
          } ||           t          j        g d          } ||           t          j        g d          } ||           t          j        ddg          } ||           d S )NTnopythonc                 J     j          |            |           fi  d S r   assertPreciseEqual)r   cfunckwargspyfuncr   s    r   checkz8TestArrayReductions.check_reduction_basic.<locals>.check   s6    #D#FF3KKsFFvFFFFFr   )      ?       @               r         r   r   )r         @inf)r   r   -inf)r   r   r   r   )nanr   r   r         @)r   r   r   r   r   r   r   )g      @r   r   r   r   )r   r   float64)r   r   r   r   r   r   s   ```  @r   check_reduction_basicz)TestArrayReductions.check_reduction_basic   s   "T"""6**	G 	G 	G 	G 	G 	G 	G 	G j999::c


j$&&c


j+++,,c


j,,,--c


j33344c


j77788c


jFFFGGc


j22233c


j%((c




r   c                 n     t          d                     fd}t          j        ddt          d          t          d          g          } ||           d|d	<    ||           d
|d	<    ||           |                    d          } ||            ||d d d                    d S )NTr   c                 X                          |            |                      d S r   r   r   r   r   r   s    r   r   z1TestArrayReductions.test_all_basic.<locals>.check   /    ##FF3KKs<<<<<r   r   r   r   r   r   r         ?r   r   r   r   r   r   floatr   r   r   r   r   r   s   ``  @r   test_all_basicz"TestArrayReductions.test_all_basic   s    "T"""6**	= 	= 	= 	= 	= 	= 	= j#sE%LL%,,?@@c


Ac


Ac


kk&!!c


c$$B$ir   c                      t          d                     fd}t          j        g d          } ||           t          d          |d<    ||           t          d          |d<    ||           d|d<    ||           |                    d	          } ||            ||d d d
                    d S )NTr   c                 X                          |            |                      d S r   r   r   s    r   r   z1TestArrayReductions.test_any_basic.<locals>.check   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   s   ``  @r   test_any_basicz"TestArrayReductions.test_any_basic   s    "T"""6**	= 	= 	= 	= 	= 	= 	= j...//c


uAc


uAc


Ac


kk&!!c


c$$B$ir   c                 :    |                      t                     d S r   )r   r4   r   s    r   test_sum_basicz"TestArrayReductions.test_sum_basic       ""9-----r   c                 :    |                      t                     d S r   )r   r@   r   s    r   test_mean_basicz#TestArrayReductions.test_mean_basic  s    "":.....r   c                 >    |                      t          d           d S Ndouble)prec)r   rE   r   s    r   test_var_basicz"TestArrayReductions.test_var_basic  s!    ""98"<<<<<r   c                 :    |                      t                     d S r   )r   rJ   r   s    r   test_std_basicz"TestArrayReductions.test_std_basic  r   r   c                 :    |                      t                     d S r   )r   rO   r   s    r   test_min_basicz"TestArrayReductions.test_min_basic
  r   r   c                 :    |                      t                     d S r   )r   rT   r   s    r   test_max_basicz"TestArrayReductions.test_max_basic  r   r   c                 :    |                      t                     d S r   )r   rZ   r   s    r   test_argmin_basicz%TestArrayReductions.test_argmin_basic      ""<00000r   c                 :    |                      t                     d S r   )r   ra   r   s    r   test_argmax_basicz%TestArrayReductions.test_argmax_basic  r  r   c                 :    |                      t                     d S r   )r   rj   r   s    r   test_nanmin_basicz%TestArrayReductions.test_nanmin_basic  r  r   c                 :    |                      t                     d S r   )r   rm   r   s    r   test_nanmax_basicz%TestArrayReductions.test_nanmax_basic  r  r   c                 :    |                      t                     d S r   )r   rp   r   s    r   test_nanmean_basicz&TestArrayReductions.test_nanmean_basic      ""=11111r   c                 :    |                      t                     d S r   )r   rs   r   s    r   test_nansum_basicz%TestArrayReductions.test_nansum_basic  r  r   c                 :    |                      t                     d S r   )r   rv   r   s    r   test_nanprod_basicz&TestArrayReductions.test_nanprod_basic"  r  r   c                 :    |                      t                     d S r   )r   ry   r   s    r   test_nanstd_basicz%TestArrayReductions.test_nanstd_basic%  r  r   c                 >    |                      t          d           d S r   )r   r|   r   s    r   test_nanvar_basicz%TestArrayReductions.test_nanvar_basic(  s!    ""<h"?????r   c                      t          d                     fdfd} |t          j        d          dz             D ]} ||           fd} |t          j        d          dz             D ]} ||           d S )	NTr   c                 `     |           } |           }                     ||           d S r   r   )r   expectedgotr   r   r   s      r   r   z5TestArrayReductions.check_median_basic.<locals>.check-  s9    vc{{H%**C##C22222r   c                 ~     |            |                      d          }  |             | j                   d S )N)	      r   Tr   r   s    r   	check_oddz9TestArrayReductions.check_median_basic.<locals>.check_odd3  sA    E!HHH		&!!AE!HHHE!#JJJJJr   ?   g      %@c                 ~     |            |                      d          }  |             | j                   d S )N)      r!  r#  s    r   
check_evenz:TestArrayReductions.check_median_basic.<locals>.check_even<  sA    E!HHH		'""AE!HHHE!#JJJJJr   @   )r   r   r   )r   r   array_variationsr$  r   r)  r   r   s   ``    @@r   check_median_basicz&TestArrayReductions.check_median_basic+  s    "T"""6**	3 	3 	3 	3 	3 	3 	3	 	 	 	 	
 "!")B--$"677 	 	AIaLLLL	 	 	 	 	
 "!")B--$"677 	 	AJqMMMM	 	r   c              #     K   | V  | d d d                                          } | V  t          j                            |            | V  d| | dz  dk    <   | V  t          j        | | dz  dk    <   | V  t          j        | d d <   | V  d S )Nr         @r'  r   r   )copyr   r   shuffler   r   s    r   _array_variationsz%TestArrayReductions._array_variationsD  s       dddGLLNN
	!!a%1*!a%1*v!!!r   c                 F    t           }d }|                     ||           d S )Nc              3      K   | V  | d d d                                          } | V  t          j                            |            | V  d| | dz  dk    <   | V  d S )Nr   r.  r'  r   )r/  r   r   r0  r   s    r   
variationsz9TestArrayReductions.test_median_basic.<locals>.variationsV  sl      GGG$$B$AGGGIa   GGGAa!eqjMGGGGGr   )rg   r,  )r   r   r4  s      r   test_median_basicz%TestArrayReductions.test_median_basicS  s4    $	 	 	 	
33333r   c           	      l	     t          d                    d! fd	} j                            d                              ddd          }t	          j        d|d          d d d	         } |||            ||d            |||d
z              |||           t          j        t          j         t          j        g} j                            |d          |j	        d d<    j        
                    |            j        
                    |            |||           |                                                                }|                                                                } |||            |t          |          t          |                      j                            g dd          }t	          j        d|d          } |||           t	          j        d          dz  }t          j                             |d          d           t          j                             ||          d           t          j                             ||d
z            d           t	          j        d                              dd          }t	          j        d          |z  }t          j                             ||          g d           t	          j        d                              dddd          }t	          j        d          |z  }t          j                             ||          j        d           t	          j        d          |z  }t          j                             ||          j        d           t	          j        d                              dd          }t          j                             ||d
z            d                                t	          j         ||d
z                                 t          j                             g dd          d           t	          j        g d           } ||d
z  g           t          j                            |t	          j        g d                      d S )"NTr   -q=c                     | |          } | |          }t          j        |          }t          j        |          r                    |||           d S                     ||         ||         |           d S N)abs_tolr   isfiniter   r   	r   r   r:  r  r  finiter   r   r   s	         r   r   z@TestArrayReductions.check_percentile_and_quantile.<locals>.checke      va||H%1++C [**Fvf~~ 9''Xw'GGGGG''FXf5E07 ( 9 9 9 9 9r      r   r      r   r   r   )r   r   r   r'  r            ?r   r.  g      ?r   r'  )      ?rC  r   )g      @      @g      &@ih     )rD  rC  r   )rD  rC  g      ?)r   rE  )r   r   r   r   )r   r   r'  r   )r7  )r   r   randnr   r   linspacer   r   choiceflatr0  flattentolisttupler   testingassert_equalarrayshape
assertTrueisscalar)	r   r   q_upper_boundr   r   r   
not_finitexr   s	   ``      @r   check_percentile_and_quantilez1TestArrayReductions.check_percentile_and_quantileb  sI   "T"""6**
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 Kb!!))!Q22K="--ddd3aaa"###afrvgrv.
k((R88ssAAaIIKK  IIKK  aeAhha!!!K|||R00K=!,,a IaLL3

aR000

a 7 7===

a): ; ;TBBBIbMM!!!Q''H%&&6

a->->->???Im$$,,Q1a88H\""]2

a 14888H'((=8

a 14888IbMM!!!Q''

a): ; ;SAAAEE!]Q->$?$?@@AAA

iii 3 3Q777H\\\""a-!#$%%%

28LLL#9#9:::::r   d   c                    
  t          d                    
d
 fd	}d
 fd	}d }dd|z  d	|z  |f}d
dt          j        t          j        t          j         f} ||          D ]} |||           |d
k    r|}	n|}	t          j        d          }t          j        d
          } |	||           d}|dz  } |	||           d S )NTr   +=c                     | |          } | |          }t          j        |          }t          j        |          r                    |||           d S                     ||         ||         |           d S r9  r;  r=  s	         r   r   z>TestArrayReductions.check_percentile_edge_cases.<locals>.check  r?  r   c                      | |                               t          j                  } | |          }                    |||           d S r9  )astyper   r   r   )r   r   r:  r  r  r   r   r   s        r   convert_to_float_and_checkzSTestArrayReductions.check_percentile_edge_cases.<locals>.convert_to_float_and_check  sR    va||**2:66H%1++C##C7#CCCCCr   c              3      K   t          dd          D ]+}t          | |          D ]}t          j        |          V  ,d S )Nr   r   )ranger   r   rQ  )elementsicombs      r   _array_combinationszLTestArrayReductions.check_percentile_edge_cases.<locals>._array_combinations  s\      1b\\ ) )9(AFF ) )D(4..(((()) )r   r   皙?g?r   r   r   r   )r[  )r   r   r   r   rQ  )r   r   rU  r   r_  re  r   element_poolr   _checkr   s   ``        @r   check_percentile_edge_casesz/TestArrayReductions.check_percentile_edge_cases  sG   "T"""6**
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9	D 	D 	D 	D 	D 	D 	D 	D
	) 	) 	) m#S=%8-H2rvrvw7$$\22 	 	AE!QKKKK A/FFFHQKKHQKKq!Aq!r   c                      t          d          |           fd}                                  t          j        d          } ||d            ||d            ||ddt          j        f                                            5 }t          j        d          d	z  }d
} ||           d d d            n# 1 swxY w Y                        dt          |j                             d S )NTr   c                                          t                    5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S )Nz)Percentiles must be in the range [0, 100]assertRaises
ValueErrorassertEqualstr	exceptionr   r   raisesr   r   s      r   	check_errzBTestArrayReductions.check_percentile_exceptions.<locals>.check_err  s    "":.. &a              ;F$%%       599r   )r   r   i   r   r   r   rf  Not supported for complex dtype	r   disable_leak_checkr   r   r   assertTypingErrorassertInrp  rq  r   r   rt  r   er   r   s   `     @r   check_percentile_exceptionsz/TestArrayReductions.check_percentile_exceptions  sL   "T"""6**	 	 	 	 	 	 	!!!IaLL	!R	!\"""	!aRV_%%%##%% 		!r!AAE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	7Q[9I9IJJJJJ   &CCCc                      t          d          |           fd}                                  t          j        d          } ||d            ||d            ||ddt          j        f                                            5 }t          j        d          dz  }d} ||           d d d            n# 1 swxY w Y                        d	t          |j                             d S )
NTr   c                                          t                    5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S )Nz%Quantiles must be in the range [0, 1]rl  rr  s      r   rt  z@TestArrayReductions.check_quantile_exceptions.<locals>.check_err  s    "":.. &a              7F$%%    ru  r   g      )rf  rf  g?rf  r   rx  ry  r}  s   `     @r   check_quantile_exceptionsz-TestArrayReductions.check_quantile_exceptions  sN   "T"""6**	 	 	 	 	 	 	!!!IaLL	!T	!&'''	!c4()))##%% 		!r!AAE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	7Q[9I9IJJJJJr  c                     t           }|                     |d           |                     |d           |                     |           d S NrY  rU  )r   rX  ri  r  r   r   s     r   test_percentile_basicz)TestArrayReductions.test_percentile_basic  sS    (**6*EEE((s(CCC((00000r   c                     t           }|                     |d           |                     |d           |                     |           d S r  )r   rX  ri  r  r  s     r   test_nanpercentile_basicz,TestArrayReductions.test_nanpercentile_basic  sS    +**6*EEE((s(CCC((00000r   c                     t           }|                     |d           |                     |d           |                     |           d S Nr   r  )r   rX  ri  r  r  s     r   test_quantile_basicz'TestArrayReductions.test_quantile_basic  sS    &**6*CCC((q(AAA&&v.....r   c                     t           }|                     |d           |                     |d           |                     |           d S r  )r   rX  ri  r  r  s     r   test_nanquantile_basicz*TestArrayReductions.test_nanquantile_basic  sS    )**6*CCC((q(AAA&&v.....r   c                 J    t           }|                     || j                   d S r   )r   r,  r1  r  s     r   test_nanmedian_basicz(TestArrayReductions.test_nanmedian_basic  s&    '(>?????r   c                 l   t          j        dt           j                  }t          |          }|                     |j        d           |                     |j        d           t          t          |g          }|j	        }|                     t          j
        |           ||                     d S Nr   r   r   C)r   r   int32r   ro  ndimlayoutr   r6   r   r3   r   r   r   r   r   s        r   test_array_sum_globalz)TestArrayReductions.test_array_sum_global!  s    i"(+++sQ'''s+++ 05':: eeCjj11111r   c                 r   t          j        dt           j                  dz   }t          |          }|                     |j        d           |                     |j        d           t          t          |g          }|j	        }|                     |
                                 ||                     d S r  )r   r   r  r   ro  r  r  r   r9   r   r8   r  s        r   test_array_prod_int_1dz*TestArrayReductions.test_array_prod_int_1d,  s    i"(+++a/sQ'''s+++
UG44 UU3ZZ00000r   c                    t          j        dt           j                  dz   }t          |          }|                     |j        d           |                     |j        d           t          t          |g          }|j	        }t           j
                            |                                 ||                     d S )Nr   r   rf  r   r  )r   r   r   r   ro  r  r  r   r9   r   rO  assert_allcloser8   r  s        r   test_array_prod_float_1dz,TestArrayReductions.test_array_prod_float_1d7  s    i"*---6sQ'''s+++
UG44 

""388::uuSzz:::::r   c                    t          j        dt           j                  }t          |          }|                     |j        d           |                     |j        d           t          t          |g          }|j	        }t           j
                            t          j        |           ||                     d S r  )r   r   r  r   ro  r  r  r   r<   r   rO  r  r8   r  s        r   test_array_prod_globalz*TestArrayReductions.test_array_prod_globalB  s    i"(+++sQ'''s+++ 1E7;; 

""273<<s<<<<<r   c                    t          j        ddt           j                  }t          ||          \  }}|                     ||           t          j        ddd          }t          ||          \  }}|                     ||           |                    d          }t          ||          \  }}|                     ||           d S )Nr   r   r   rB  rF  )r   r   )r   r   int16r   r   rI  r   )r   r   r   r  r  s        r   check_cumulativez$TestArrayReductions.check_cumulativeM  s    i2RX...'44#X...k!Q""'44#X...kk&!!'44#X.....r   c                 :    |                      t                     d S r   )r  r)   r   s    r   test_array_cumsumz%TestArrayReductions.test_array_cumsumX  s    l+++++r   c                 :    |                      t                     d S r   )r  r,   r   s    r   test_array_cumsum_globalz,TestArrayReductions.test_array_cumsum_global[  s    122222r   c                 :    |                      t                     d S r   )r  r    r   s    r   test_array_cumprodz&TestArrayReductions.test_array_cumprod^  s    m,,,,,r   c                 :    |                      t                     d S r   )r  r"   r   s    r   test_array_cumprod_globalz-TestArrayReductions.test_array_cumprod_globala  s    233333r   Fc                    |rdnd}t          j        |          dz                       d          }t          ||          \  }}|                     ||           t          j        d          dz                       d          }t          ||          \  }}|                     ||           |                    d          }t          ||          \  }}|                     ||           dS )	zH
        Check that integer overflows are avoided (issue #931).
        r   r   i@  r  l            int64uint64N)r   r   r^  r   r   )r   r   is_prodn_itemsr   nprnbrs          r   check_aggregation_magnitudez/TestArrayReductions.check_aggregation_magnituded  s     &!!By!!E)11'::"63//SS))) y}}u$,,W55"63//SS)))jj"""63//SS)))))r   c                 n    |                      t                     |                      t                     d S r   )r  r4   r6   r   s    r   test_sum_magnitudez&TestArrayReductions.test_sum_magnitudew  1    ((333(()9:::::r   c                 n    |                      t                     |                      t                     d S r   )r  r)   r,   r   s    r   test_cumsum_magnitudez)TestArrayReductions.test_cumsum_magnitude{  s1    ((666(()<=====r   c                 >    |                      t          d           d S NT)r  )r  r0   r   s    r   test_nancumsum_magnitudez,TestArrayReductions.test_nancumsum_magnitude  s!    (($(GGGGGr   c                 v    |                      t          d           |                      t          d           d S r  )r  r9   r<   r   s    r   test_prod_magnitudez'TestArrayReductions.test_prod_magnitude  s;    ((T(BBB(():D(IIIIIr   c                 v    |                      t          d           |                      t          d           d S r  )r  r    r"   r   s    r   test_cumprod_magnitudez*TestArrayReductions.test_cumprod_magnitude  s;    (((EEE(()=t(LLLLLr   c                 >    |                      t          d           d S r  )r  r&   r   s    r   test_nancumprod_magnitudez-TestArrayReductions.test_nancumprod_magnitude  s"    (()94(HHHHHr   c                 n    |                      t                     |                      t                     d S r   )r  r@   rB   r   s    r   test_mean_magnitudez'TestArrayReductions.test_mean_magnitude  s1    ((444(():;;;;;r   c                 n    |                      t                     |                      t                     d S r   )r  rE   rG   r   s    r   test_var_magnitudez&TestArrayReductions.test_var_magnitude  r  r   c                 n    |                      t                     |                      t                     d S r   )r  rJ   rL   r   s    r   test_std_magnitudez&TestArrayReductions.test_std_magnitude  r  r   c                    t          |          } t          d          |          }|                      ||           ||                     |                      ||d d                    ||d d                              |d d d                                         }|                      ||           ||                     t          j                            |           |                      ||           ||                     t          dk    r>d|j        vr5d||j	        dz  <   |                      ||           ||                     d|j        vrNt          dt          |          d          D ]}d||<   |                      ||           ||                     |                    |                    d                     |                      ||           ||                     d S )	NTr   r   )r      rf   NaTr   r   )r   r   r   r/  r   r   r0  r   __name__sizera  lenfillr   )r   r   r   r   r   rW  s         r   _do_check_nptimedeltaz)TestArrayReductions._do_check_nptimedelta  s   s"T"""6**c

FF3KK888c#2#hCRC1A1ABBB$$B$innc

FF3KK888
	#c

FF3KK888G##(G(G "'CA##EE#JJs<<<6?** 1c#hh**  A##EE#JJs<<<U##$$$c

FF3KK88888r   c                     t          j        d                              d          }|                     ||           d S )Nr   zM8[Y]r   r   r   r^  r  r   r   r   s      r   check_npdatetimez$TestArrayReductions.check_npdatetime  <    imm"""11""63/////r   c                     t          j        d                              d          }|                     ||           d S )Nr   zm8[s]r   r  r  s      r   check_nptimedeltaz%TestArrayReductions.check_nptimedelta  r  r   c                 n    |                      t                     |                     t                     d S r   )r  rO   r  r   s    r   test_min_npdatetimez'TestArrayReductions.test_min_npdatetime  0    i(((y)))))r   c                 n    |                      t                     |                     t                     d S r   )r  rT   r  r   s    r   test_max_npdatetimez'TestArrayReductions.test_max_npdatetime  r  r   c                 n    |                      t                     |                     t                     d S r   )r  rZ   r  r   s    r   test_argmin_npdatetimez*TestArrayReductions.test_argmin_npdatetime  0    l+++|,,,,,r   c                 n    |                      t                     |                     t                     d S r   )r  ra   r  r   s    r   test_argmax_npdatetimez*TestArrayReductions.test_argmax_npdatetime  r  r   c                 :    |                      t                     d S r   )r  rg   r   s    r   test_median_npdatetimez*TestArrayReductions.test_median_npdatetime  s    233333r   c                 :    |                      t                     d S r   )r  r4   r   s    r   test_sum_npdatetimez'TestArrayReductions.test_sum_npdatetime  s    y)))))r   c                 :    |                      t                     d S r   )r  r)   r   s    r   test_cumsum_npdatetimez*TestArrayReductions.test_cumsum_npdatetime  s    |,,,,,r   c                 :    |                      t                     d S r   )r  r@   r   s    r   test_mean_npdatetimez(TestArrayReductions.test_mean_npdatetime  s    z*****r   c                 :     t          d                     fd}d }d } |            D ]>} ||            | ||                    t          j                                       ? |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         z  z   }|                    dd          } ||           d S )NTr   c                 `     |           } |           }                     ||           d S r   r   r   r  r  r   r   r   s      r   r   z7TestArrayReductions.check_nan_cumulative.<locals>.check  9    vayyH%((C##Hc22222r   c                     | j         dz  }t          j        | t          j                            t          | j                   |d          t          j                   | S )Nr   F)replace)r  r   putr   rJ  ra  r   )r   ps     r   _set_some_values_to_nanzITestArrayReductions.check_nan_cumulative.<locals>._set_some_values_to_nan  sG    !AF1bi&&uQV}}a&GGPPPHr   c               3     K   t          j        ddd                              ddd          V  t          j        t           j        ddg          V  t          j        g d          V  t          j        dd          V  t          j        t          j        dd	          d
z
            V  t          j        ddt           j                  d d d         V  d S )Nr   r   <   r'  r   )TTTFr   r   r*  gfffff@@r   )r   rI  r   rQ  r   r   asfortranarrayr   r   r   r   a_variationsz>TestArrayReductions.check_nan_cumulative.<locals>.a_variations  s      +b!R((00Aq99999(BFAq>*****(44455555)Ar"""""#BIa$4$4t$;<<<<<)Ar444TTrT::::::r   r   r   r'  r   rF  r   rB  r  r   r   r   )r   r^  r   r   rQ  fullr   r   )r   r   r   r  r  r   partsr   s   ``     @r   check_nan_cumulativez(TestArrayReductions.check_nan_cumulative  sL   "T"""6**	3 	3 	3 	3 	3 	3 	3
	 	 	
	; 	; 	;  	A 	AAE!HHHE))!((2:*>*>??@@@@ 	bhrllbgb"&!!""""&!RVQ1aA>??Bttt$$IIaOOar   c                 n    |                      t                     |                     t                     d S r   )r  r&   r  r   s    r   test_nancumprod_basicz)TestArrayReductions.test_nancumprod_basic  s2    .///!!"233333r   c                 n    |                      t                     |                     t                     d S r   )r  r0   r  r   s    r   test_nancumsum_basicz(TestArrayReductions.test_nancumsum_basic  s0    o...!!/22222r   c                      t            t          d                     fd}d } |            D ]} ||           d S )NTr   c                 `     |           } |           }                     ||           d S r   r   r  s      r   r   z1TestArrayReductions.test_ptp_basic.<locals>.check  r  r   c               3   \  K   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  g dV  t          j        ddd	                              d
dd          } | V  t          j        |           V  | d d d         V  t           j	        
                    d                              |            | V  dV  dV  t           j         V  dV  dt           j        gV  dt           j        gV  dV  t          j        dt           j                  V  dt           j        dz  z   V  t           j        t           j        dz  z   V  t           j        V  d S )Nr   g皙@r   )r'  r   r   r   )r   gffffffrf  r(  r'  r   r   r   rF  g      @y      ?      @))gffffff@r   gffffff)g333333@g@g@r   r   )r   r   rQ  r   r   r  rI  r   r  r   RandomStater0  r   s    r   r  z8TestArrayReductions.test_ptp_basic.<locals>.a_variations  s     )B--(D"&#./////(RVGQ<(((((OOOJJJ'!Q--""""""CR((00Aq99AGGG#A&&&&&DDbD'MMMI!!!$$,,Q///GGGGGGIII6'MMMLLL--5555'!RV$$$$$bfrk/!!!&26B;&&&&&LLLLLr   )r   r   )r   r   r  r   r   r   s   `   @@r   test_ptp_basicz"TestArrayReductions.test_ptp_basic  s    !"T"""6**	3 	3 	3 	3 	3 	3 	3
	 	 	4  	 	AE!HHHH	 	r   c                     t           } t          d          |          }t          j        d          } ||          } ||          }|                     ||           d S )NTr   r   )r   r   r   r   r   )r   r   r   r   r  r  s         r   test_ptp_methodz#TestArrayReductions.test_ptp_method-  sf     "T"""6**IbMM6!99eAhh#.....r   c                    	 t           	 t          d          	          	 fd}dd}t          ddgd          D ]\  }} |||          } ||           t          j        d          }t          j        d	d
          }|d|z  z   } ||           |d|z  z
  } ||           t          j        dd          } ||           d S )NTr   c                 `     |           } |           }                     ||           d S r   r   r  s      r   r   z3TestArrayReductions.test_ptp_complex.<locals>.check<  r  r   Fc                     t          j        ddd          }| rt           j        |dd<   t          j        ddd          }|rt           j        |dd<   |d	|z  z                       dd          S )
Nr'     r  rv  r   r   r   r   )r   rI  r   r   )real_nanimag_nanrealimags       r   
make_arrayz8TestArrayReductions.test_ptp_complex.<locals>.make_arrayA  su    ;r1b))D #FQqS	;r1b))D $VQrT
29$--a333r   r   )repeatrB  r
  r'  r   )r'  r'  y      ?      )
fill_value)FF)r   r   r   r   onesr   r  )
r   r   r  r  r  compr  r  r   r   s
   `       @@r   test_ptp_complexz$TestArrayReductions.test_ptp_complex8  s   !"T"""6**	3 	3 	3 	3 	3 	3 	3
	4 	4 	4 	4 #*4-"B"B"B 	 	Hh:h11DE$KKKKwqzzyQb4idb4idwv6333dr   c                 F   t           } t          d          |          }|                                  |                                 5 } |t	          j        d                     d d d            n# 1 swxY w Y   d}|                     |t          |j                             | 	                    t                    5 } |t	          j        g                      d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )NTr   )TTFz+Boolean dtype is unsupported (as per NumPy)z&zero-size array reduction not possible)r   r   rz  r{  r   rQ  r|  rp  rq  rm  rn  )r   r   r   r~  msgs        r   test_ptp_exceptionsz'TestArrayReductions.test_ptp_exceptionsX  s   !"T"""6** 	!!!##%% 	1E"(.//000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 <c3q{++,,,z** 	 aE"(2,,	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  7c3q{++,,,,,s$   	A33A7:A7C,,C03C0c                 >   	 t           t          f}|D ]	 t          d          	          	 fd}t          j        ddd          }|d         |d d<   |d	z  }||d
z  z
  } ||           t          d          D ]} j                            |            j                            |            j                            t          j	        t          j
        g          }||d
z  z
  }|d         |d d<    ||                    |                     	d S )NTr   c                 `     |           } |           }                     ||           d S r   r   r  s      r   r   z=TestArrayReductions.test_min_max_complex_basic.<locals>.checkq  9    !6!99eAhh''#66666r   r  r   (   r   r'  r   r   )rQ   rV   r   r   rI  ra  r   r0  rJ  r   
complex128r^  )
r   pyfuncsr   r  r  r   _r   r   r   s
   `       @@r   test_min_max_complex_basicz.TestArrayReductions.test_min_max_complex_basick  sP   "$44 	' 	'F&C&&&v..E7 7 7 7 7 7 7
 ;sB++DBxD!H!8Dtby AE!HHH2YY ' '##D)))##D)))**BL"-+HII4"9$""1"ahhuoo&&&&'	' 	'r   c                     t           t          f}|D ] t          d                     fd}t          j        ddd          }|d         |d d<   t          j        |d	d
<   |dz  }t          j        |dd<   ||dz  z
  } ||           t          d          D ]V} j                            |            j                            |           ||dz  z
  }|d         |d d<    ||           Wd S )NTr   c                 `     |           } |           }                     ||           d S r   r   r  s      r   r   zCTestArrayReductions.test_nanmin_nanmax_complex_basic.<locals>.check  r  r   r  r   r  r   r'  r   r  r   r   r   r   )	rj   rm   r   r   rI  r   ra  r   r0  )	r   r  r   r  r  r   r  r   r   s	   `      @@r    test_nanmin_nanmax_complex_basicz4TestArrayReductions.test_nanmin_nanmax_complex_basic  sA   , 	 	F&C&&&v..E7 7 7 7 7 7 7
 ;sB++DBxD!HD1I!8DD2Jtby AE!HHH2YY  ##D)))##D)))4"9$""1"a!	 	r   c                      t           t          f} fd}d }|D ]3 t          d                     |            D ]} ||           4d S )Nc                 `     |           } |           }                     ||           d S r   r   r  s      r   r   zFTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.check  r  r   c               3      K   g dV  dV  t          j        d          V  dV  dV  d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 )N)r   rF  r'  r   ))r  r'  i)r      ir   rG  gA`"	@Fgr   g?)ggffffff!@)r   rQ  r   r   r   r   r   r  zMTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.a_variations  s      ,,0000(1++JJJKKKKKK65$,,,,626BF7++++FC=+......r   Tr   )rj   rm   r   )r   r  r   r  r   r   r   s   `    @@r   #test_nanmin_nanmax_non_array_inputsz7TestArrayReductions.test_nanmin_nanmax_non_array_inputs  s    ,	3 	3 	3 	3 	3 	3 	3
		/ 		/ 		/  	 	F&C&&&v..E!\^^  a	 	r   c                 j   t          j        g d          }t          j        d                              dd          }|dxx         dz  cc<   t          j        d                              dddd	          d
z   }|dxx         dz  cc<   |dxx         dz  cc<   |||fD ]}t	          t          |j                            d t          |j                  D             z   }d |D             }d |D             }|D ]4}|                     |                    |           ||                     5d S )Nr      r   r'  rF  r   r   r   r   rY  x   r'  r   r   r   r   r   r   r   r   r   r   3   c                     g | ]}|d z    	S r  r   r   rc  s     r   r   zATestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<listcomp>  +     , , ,!A#, , ,r   c                     g | ]}|fd S )c                 .    t          j        | |          S Naxisrc   r   _axiss     r   <lambda>zJTestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<listcomp>.<lambda>      bi&>&>&> r   r   r   r8  s     r   r   zATestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<listcomp>  1        !%>>>  r   c                 @    g | ]} t          d           |          S Tr   r   r   r   s     r   r   zATestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<listcomp>  ;       /5"T"""6**  r   	r   rQ  r   r   listra  r  r   py_func	r   arr1darr2darr4dr   axespy_functionsc_functionsr   s	            r   test_argmax_axis_1d_2d_4dz-TestArrayReductions.test_argmax_axis_1d_2d_4d     ''	!$$Q**c


c


	#&&q!Q22R7jS jR5%( 	H 	HCch(( , , %ch, , , D    L 9E  K % H H''c(:(:EE#JJGGGGH	H 	Hr   c                 H    t          j        d          }t          j        d                              dd          }t          d          d              fd} ||d            ||d	            ||d
            ||d                                             d S )NrF  r   r   Tr   c                 ,    t          j        | |          S r   rc   r   r8  s     r   	jitargmaxzDTestArrayReductions.test_argmax_axis_out_of_range.<locals>.jitargmax      9S$'''r   c                                         t          d          5                      | |           d d d            n# 1 swxY w Y                        t          d          5   | |           d d d            d S # 1 swxY w Y   d S Nzaxis.*out of boundsassertRaisesRegexrn  rF  )r   r8  rS  r   s     r   assert_raiseszHTestArrayReductions.test_argmax_axis_out_of_range.<locals>.assert_raises     ''
4IJJ - -!!#t,,,- - - - - - - - - - - - - - -''
4IJJ % %	#t$$$% % % % % % % % % % % % % % % % % %#   A  AA&B  BBr   r   r   r   r   rz  )r   rH  rI  rY  rS  s   `   @r   test_argmax_axis_out_of_rangez1TestArrayReductions.test_argmax_axis_out_of_range  s    	!	!$$Q**	d				( 	( 
		(	% 	% 	% 	% 	% 	% 	eQeR   eR   eQ!!!!!r   c                     t          j        d          }t          d          d             }|                                 5 } ||d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NrF  Tr   c                 ,    t          j        | |          S r   rc   rR  s     r   rS  zGTestArrayReductions.test_argmax_axis_must_be_integer.<locals>.jitargmax  rT  r   fooaxis must be an integerr   r   r   r{  r|  rp  rq  )r   r   rS  r~  s       r    test_argmax_axis_must_be_integerz4TestArrayReductions.test_argmax_axis_must_be_integer      ill	d				( 	( 
		( ##%% 	"Ic5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"/Q[1A1ABBBBB   AA"Ac                     t          j        d                              dd          fd}|                      |            t	          d          |                               d S )NrF  r   r   c                 0                         d          S Nr   r7  r_   r   rI  s    r   r`   z;TestArrayReductions.test_argmax_method_axis.<locals>.argmax      <<Q<'''r   Tr   r   r   r   r   r   r   r`   rI  s     @r   test_argmax_method_axisz+TestArrayReductions.test_argmax_method_axis      	!$$Q**	( 	( 	( 	( 	( 	u : 2T 2 2 26 : :5 A A	C 	C 	C 	C 	Cr   c                     t          j        dt           j                                      dd          fd}|                      |            t          d          |                               d S )NrF  r   r   r   c                 0                         d          S rj  r_   rk  s    r   r`   z;TestArrayReductions.test_argmax_return_type.<locals>.argmax  rl  r   Tr   r   r   uint8r   r   r   rn  s     @r   test_argmax_return_typez+TestArrayReductions.test_argmax_return_type      	!28,,,44Q::	( 	( 	( 	( 	( 	u : 2T 2 2 26 : :5 A A	C 	C 	C 	C 	Cr   c                 j   t          j        g d          }t          j        d                              dd          }|dxx         dz  cc<   t          j        d                              dddd	          d
z   }|dxx         dz  cc<   |dxx         dz  cc<   |||fD ]}t	          t          |j                            d t          |j                  D             z   }d |D             }d |D             }|D ]4}|                     |                    |           ||                     5d S )Nr*  rF  r   r   r,  rY  r-  r'  r   r   r.  r/  r0  c                     g | ]}|d z    	S r  r   r2  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>  r3  r   c                     g | ]}|fd S )c                 .    t          j        | |          S r6  r\   r9  s     r   r;  zJTestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>.<lambda>  r<  r   r   r=  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>  r>  r   c                 @    g | ]} t          d           |          S r@  rA  rB  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>  rC  r   rD  rG  s	            r   test_argmin_axis_1d_2d_4dz-TestArrayReductions.test_argmin_axis_1d_2d_4d  rO  r   c                 H    t          j        d          }t          j        d                              dd          }t          d          d              fd} ||d            ||d	            ||d
            ||d                                             d S )NrF  r   r   Tr   c                 ,    t          j        | |          S r   r\   rR  s     r   	jitargminzDTestArrayReductions.test_argmin_axis_out_of_range.<locals>.jitargmin  rT  r   c                                         t          d          5                      | |           d d d            n# 1 swxY w Y                        t          d          5   | |           d d d            d S # 1 swxY w Y   d S rV  rW  )r   r8  r  r   s     r   rY  zHTestArrayReductions.test_argmin_axis_out_of_range.<locals>.assert_raises   rZ  r[  r   r\  r]  r^  )r   rH  rI  rY  r  s   `   @r   test_argmin_axis_out_of_rangez1TestArrayReductions.test_argmin_axis_out_of_range  s    	!	!$$Q**	d				( 	( 
		(	% 	% 	% 	% 	% 	% 	eQeR   eR   eQ 	!!!!!r   c                     t          j        d          }t          d          d             }|                                 5 } ||d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NrF  Tr   c                 ,    t          j        | |          S r   r\   rR  s     r   r  zGTestArrayReductions.test_argmin_axis_must_be_integer.<locals>.jitargmin1  rT  r   rb  rc  rd  )r   r   r  r~  s       r    test_argmin_axis_must_be_integerz4TestArrayReductions.test_argmin_axis_must_be_integer.  rf  rg  c                     t          j        d                              dd          fd}|                      |            t	          d          |                               d S )NrF  r   r   c                 0                         d          S rj  rX   rk  s    r   rY   z;TestArrayReductions.test_argmin_method_axis.<locals>.argmin<  rl  r   Tr   rm  r   rY   rI  s     @r   test_argmin_method_axisz+TestArrayReductions.test_argmin_method_axis9  rp  r   c                     t          j        dt           j                                      dd          fd}|                      |            t          d          |                               d S )NrF  r   r   r   c                 0                         d          S rj  rX   rk  s    r   rY   z;TestArrayReductions.test_argmin_return_type.<locals>.argminF  rl  r   Tr   rs  r  s     @r   test_argmin_return_typez+TestArrayReductions.test_argmin_return_typeB  rv  r   c                 &    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.          t0          g}|t2          t4          t6          gz  }|t8          gz  }t:          j        t:          j        t:          j         t:          j!        g} fd} ||d d         |            |||           d S )Nc                     | D ]n}t          |          }t          ||          D ]L\  }d}|                    j        |j        j        |j                  }||ffd	}t          ||           Mod S )Nztest_{0}_{1}_{2}dc                     d}dj         v rt          j        |          rd}t          ||          \  }}|                     |||d|           d S )Nr   r8   r   single)r  r   ulps)r  r   iscomplexobjr   r   )r   redFunc	testArraytestNamer  r  r  red_funcs          r   new_test_functionz]TestArrayReductions.install_generated_tests.<locals>.install_tests.<locals>.new_test_functions  s{      !!X%666OI66 7 $%D#27I#F#FS//Sh5=D 0 J J J J Jr   )r   r   formatr  r   namer  setattr)	dtypesfuncsdttest_arraysr   	test_namer  r  clss	          @r   install_testszBTestArrayReductions.install_generated_tests.<locals>.install_testsh  s     ? ?.r22,3E;,G,G ? ?(Hj 3I ) 0 01B1;1A1F1;!B !BI 9A4>3<J J J J J J C,=>>>>+?? ?r   r   )"r4   r6   r9   r<   r@   rB   rE   rG   rJ   rL   r   r   r   r   rO   rQ   rT   rV   rm   rj   rs   rZ   r]   ra   rd   rp   ry   r|   rv   r   r  r   r   r   )r  reduction_funcsreduction_funcs_rspacedtypes_to_testr  s   `    r   install_generated_testsz+TestArrayReductions.install_generated_testsL  s    
 %&6%'8%'8$&6$&6$&6$&6$&6$&6'' #/0C".0C"E 	M<FFM?*(BJ",G	? 	? 	? 	? 	?8 	nSbS)+ABBB 	no66666r   )rY  )F)[r  
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r  r  r  r  r
  r  r  r  r  r  r  r  r,  staticmethodr1  r5  rX  ri  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(  rN  r_  re  ro  ru  r|  r  r  r  r  classmethodr  __classcell__)r   s   @r   r   r      sl              4 %.     %.    ". . ./ / /= = =. . .. . .. . .1 1 11 1 11 1 11 1 12 2 21 1 12 2 21 1 1@ @ @  2   \4 4 4?; ?; ?;B, , , ,\K K K4K K K41 1 11 1 1/ / // / /@ @ @	2 	2 	2	1 	1 	1	; 	; 	;	= 	= 	=	/ 	/ 	/, , ,3 3 3- - -4 4 4* * * *&; ; ;> > >H H HJ J JM M MI I I< < <; ; ;; ; ;9 9 9>0 0 00 0 0* * ** * *- - -- - -4 4 4* * *- - -+ + +! ! !F4 4 43 3 3$ $ $L	/ 	/ 	/  @- - -&' ' '2  4  2H H H." " "*	C 	C 	CC C CC C CH H H." " ",	C 	C 	CC C CC C C :7 :7 [:7 :7 :7 :7 :7r   r   c                   J    e Zd Z ej        d          Zd Zed             ZdS )TestArrayReductionsExceptionsr   c                     t          d          |          }|                     t                    5   || j                   d d d            n# 1 swxY w Y   |                     t                    5 } || j                   d d d            n# 1 swxY w Y   |                     |t          |j                             d S )NTr   )r   rm  BaseException	zero_sizern  r|  rp  rq  )r   r   r  r   r~  s        r   check_exceptionz-TestArrayReductionsExceptions.check_exception  s5   "T"""6**}-- 	# 	#F4>"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# z** 	"aE$.!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"c3q{++,,,,,s#   AAA6BBBc                    t                      }d}d}t          t          t          t          fD ]}|||<   t
          t
          t          t          fD ]}|||<   d}|                                D ]z\  }}|                    |j	                  }|                    |j	                  }	|	
                    dd          
                    dd          }	||	fd}
t          | ||
           {d S )Nz'attempt to get {0} of an empty sequencez*zero-size array to reduction operation {0}ztest_zero_size_array_{0}array_ _globalc                 2    |                      ||           d S r   )r  )r   funcmessages      r   test_fnz6TestArrayReductionsExceptions.install.<locals>.test_fn  s    $$T733333r   )dictra   rd   rZ   r]   rT   rO   itemsr  r  r  r  )r  	fn_to_msg	empty_seqop_no_identrW  name_templatefnr  r  lmsgr  s              r   installz%TestArrayReductionsExceptions.install  s
    FF	=	 3\%' 	% 	%A$IaLLY	9= 	' 	'A&IaLL2 (( 	- 	-GB%,,R[99I::bk**D<<,,44YrBBD#%t 4 4 4 4 CG,,,,	- 	-r   N)	r  r  r  r   r   r  r  r  r  r   r   r   r  r    sO         	!I- - - - - [- - -r   r  __main__)E	itertoolsr   r   numpyr   numbar   r   numba.core.compilerr   numba.np.numpy_supportr   numba.tests.supportr	   r
   r   unittestr   r   r   r   r    r"   r&   r)   r,   r0   r4   r6   r9   r<   r@   rB   rE   rG   rJ   rL   rO   rQ   rT   rV   rZ   r]   ra   rd   rg   rj   rm   rp   rs   rv   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  mainr   r   r   <module>r     s   < < < < < < < <             0 0 0 0 0 0 0 0 0 0 0 0 > > > > > > > > > >                                                                           ! ! !$ $ $      " " "  "  (& & &L7 L7 L7 L7 L7/8 L7 L7 L7^  + + - - -%- %- %- %- %-OX %- %- %-N  % % ' ' ' zHMOOOOO r   