
    J/Ph!                     8   d dl mZmZ d dlZd dlmZmZmZ d dl	m
Z
 d dlmZmZmZmZ d dl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. Z9d/ Z:d0 Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@ G d6 d7ee          ZAeAB                                  G d8 d9ee          ZCeCD                                 eEd:k    r ejF                     dS dS );    )productcombinations_with_replacementN)jitnjittypeof)numpy_version)TestCaseMemoryLeakMixintagskip_if_numpy_2c                 *    |                                  S N)allarrs    a/var/www/html/test/jupyter/venv/lib/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_nancumsumr1   &       <r   c                 *    |                                  S r   )sumr   s    r   	array_sumr5   )   r   r   c                 *    t          j        |           S r   )r   r4   r   s    r   array_sum_globalr7   ,   r   r   c                 *    |                                  S r   )prodr   s    r   
array_prodr:   /       88::r   c                 *    t          j        |           S r   )r   r9   r   s    r   array_prod_globalr=   2       73<<r   c                 *    |                                  S r   )meanr   s    r   
array_meanrA   5   r;   r   c                 *    t          j        |           S r   )r   r@   r   s    r   array_mean_globalrC   8   r>   r   c                 *    |                                  S r   )varr   s    r   	array_varrF   ;   r   r   c                 *    t          j        |           S r   )r   rE   r   s    r   array_var_globalrH   >   r   r   c                 *    |                                  S r   )stdr   s    r   	array_stdrK   A   r   r   c                 *    t          j        |           S r   )r   rJ   r   s    r   array_std_globalrM   D   r   r   c                 *    |                                  S r   )minr   s    r   	array_minrP   G   r   r   c                 *    t          j        |           S r   )r   rO   r   s    r   array_min_globalrR   J   r   r   c                 *    t          j        |           S r   )r   aminr   s    r   
array_aminrU   M   r>   r   c                 *    |                                  S r   )maxr   s    r   	array_maxrX   P   r   r   c                 *    t          j        |           S r   )r   rW   r   s    r   array_max_globalrZ   S   r   r   c                 *    t          j        |           S r   )r   amaxr   s    r   
array_amaxr]   V   r>   r   c                 *    |                                  S r   argminr   s    r   array_argminra   Y   r+   r   c                 *    t          j        |           S r   r   r`   r   s    r   array_argmin_globalrd   \   r.   r   c                 *    |                                  S r   argmaxr   s    r   array_argmaxrh   _   r+   r   c                 *    t          j        |           S r   r   rg   r   s    r   array_argmax_globalrk   b   r.   r   c                 *    t          j        |           S r   )r   medianr   s    r   array_median_globalrn   e   r.   r   c                 *    t          j        |           S r   )r   nanminr   s    r   array_nanminrq   h   r.   r   c                 *    t          j        |           S r   )r   nanmaxr   s    r   array_nanmaxrt   k   r.   r   c                 *    t          j        |           S r   )r   nanmeanr   s    r   array_nanmeanrw   n   r$   r   c                 *    t          j        |           S r   )r   nansumr   s    r   array_nansumrz   q   r.   r   c                 *    t          j        |           S r   )r   nanprodr   s    r   array_nanprodr}   t   r$   r   c                 *    t          j        |           S r   )r   nanstdr   s    r   array_nanstdr   w   r.   r   c                 *    t          j        |           S r   )r   nanvarr   s    r   array_nanvarr   z   r.   r   c                 *    t          j        |           S r   )r   	nanmedianr   s    r   array_nanmedian_globalr   }   r2   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          |           } | |          } ||          }||fS r   )r   )compare_func
test_arraycfuncnumpy_resultnumba_results        r   run_comparativer      s8    E<
++L5$$L%%r   c                   D    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 ZGeHdE             ZIdF ZJdG ZKdH ZLdI ZMdJ ZNdK ZOdL ZPdM ZQdN ZRdO ZSdP ZTdQ ZUdR ZVdS ZWdT ZXeYdU             ZZ xZ[S )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   r   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   r5   r   s    r   test_sum_basicz"TestArrayReductions.test_sum_basic      ""9-----r   c                 :    |                      t                     d S r   )r   rA   r   s    r   test_mean_basicz#TestArrayReductions.test_mean_basic  s    "":.....r   c                 >    |                      t          d           d S Ndouble)prec)r   rF   r   s    r   test_var_basicz"TestArrayReductions.test_var_basic  s!    ""98"<<<<<r   c                 :    |                      t                     d S r   )r   rK   r   s    r   test_std_basicz"TestArrayReductions.test_std_basic  r   r   c                 :    |                      t                     d S r   )r   rP   r   s    r   test_min_basicz"TestArrayReductions.test_min_basic  r   r   c                 :    |                      t                     d S r   )r   rX   r   s    r   test_max_basicz"TestArrayReductions.test_max_basic  r   r   c                 :    |                      t                     d S r   )r   ra   r   s    r   test_argmin_basicz%TestArrayReductions.test_argmin_basic      ""<00000r   c                 :    |                      t                     d S r   )r   rh   r   s    r   test_argmax_basicz%TestArrayReductions.test_argmax_basic  r  r   c                 :    |                      t                     d S r   )r   rq   r   s    r   test_nanmin_basicz%TestArrayReductions.test_nanmin_basic  r  r   c                 :    |                      t                     d S r   )r   rt   r   s    r   test_nanmax_basicz%TestArrayReductions.test_nanmax_basic  r  r   c                 :    |                      t                     d S r   )r   rw   r   s    r   test_nanmean_basicz&TestArrayReductions.test_nanmean_basic       ""=11111r   c                 :    |                      t                     d S r   )r   rz   r   s    r   test_nansum_basicz%TestArrayReductions.test_nansum_basic#  r  r   c                 :    |                      t                     d S r   )r   r}   r   s    r   test_nanprod_basicz&TestArrayReductions.test_nanprod_basic&  r  r   c                 :    |                      t                     d S r   )r   r   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>.check1  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_odd7  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_variationsH  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   r2  r+  r   )r3  r   r   r4  r   s    r   
variationsz9TestArrayReductions.test_median_basic.<locals>.variationsZ  sl      GGG$$B$AGGGIa   GGGAa!eqjMGGGGGr   )rn   r0  )r   r   r8  s      r   test_median_basicz%TestArrayReductions.test_median_basicW  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>.checki      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   r2  g      ?r   r+  )      ?rG  r   )g      @      @g      &@ih     )rH  rG  r   )rH  rG  g      ?)r   rI  )r   r   r   r   )r   r   r+  r   )r;  )r   r   randnr   r   linspacer   r   choiceflatr4  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_quantilef  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 r=  r?  rA  s	         r   r   z>TestArrayReductions.check_percentile_edge_cases.<locals>.check  rC  r   c                      | |                               t          j                  } | |          }                    |||           d S r=  )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   rU  )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   rU  )r   r   rY  r   rc  ri  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   rj  Not supported for complex dtype	r   disable_leak_checkr   r   r   assertTypingErrorassertInrt  ru  r   r   rx  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]rp  rv  s      r   rx  z@TestArrayReductions.check_quantile_exceptions.<locals>.check_err  s    "":.. &a              7F$%%    ry  r   g      )rj  rj  g?rj  r   r|  r}  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 Nr]  rY  )r   r\  rm  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   r\  rm  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   r\  rm  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   r\  rm  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   r0  r5  r  s     r   test_nanmedian_basicz(TestArrayReductions.test_nanmedian_basic!  s&    '(>?????r   c                 n   t          j        dt           j                  }t          |          }|                     |j        d           |                     |j        d            t          |f          t                    }|                     t          j	        |           ||                     d S Nr   r   r   C)
r   r   int32r   rs  ndimlayoutr   r7   r4   r   r   arrtyr   s       r   test_array_sum_globalz)TestArrayReductions.test_array_sum_global%  s    i"(+++sQ'''s+++eX 011eeCjj11111r   c                 t   t          j        dt           j                  dz   }t          |          }|                     |j        d           |                     |j        d            t          |f          t                    }|                     |	                                 ||                     d S r  )
r   r   r  r   rs  r  r  r   r:   r9   r  s       r   test_array_prod_int_1dz*TestArrayReductions.test_array_prod_int_1d.  s    i"(+++a/sQ'''s+++eXz**UU3ZZ00000r   c                    t          j        dt           j                  dz   }t          |          }|                     |j        d           |                     |j        d            t          |f          t                    }t           j	        
                    |                                 ||                     d S )Nr   r   rj  r   r  )r   r   r   r   rs  r  r  r   r:   rS  assert_allcloser9   r  s       r   test_array_prod_float_1dz,TestArrayReductions.test_array_prod_float_1d7  s    i"*---6sQ'''s+++eXz**

""388::uuSzz:::::r   c                    t          j        dt           j                  }t          |          }|                     |j        d           |                     |j        d            t          |f          t                    }t           j	        
                    t          j        |           ||                     d S r  )r   r   r  r   rs  r  r  r   r=   rS  r  r9   r  s       r   test_array_prod_globalz*TestArrayReductions.test_array_prod_global@  s    i"(+++sQ'''s+++eX011

""273<<s<<<<<r   c                    t          j        ddt           j                  }t          ||          \  }}|                     ||           t          j        ddd          }t          ||          \  }}|                     ||           |                    d          }t          ||          \  }}|                     ||           d S )Nr   r   r   rF  rJ  )r   r   )r   r   int16r   r   rM  r   )r   r   r   r   r!  s        r   check_cumulativez$TestArrayReductions.check_cumulativeI  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_cumsumT  s    l+++++r   c                 :    |                      t                     d S r   )r  r-   r   s    r   test_array_cumsum_globalz,TestArrayReductions.test_array_cumsum_globalW  s    122222r   c                 :    |                      t                     d S r   )r  r!   r   s    r   test_array_cumprodz&TestArrayReductions.test_array_cumprodZ  s    m,,,,,r   c                 :    |                      t                     d S r   )r  r#   r   s    r   test_array_cumprod_globalz-TestArrayReductions.test_array_cumprod_global]  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   rb  r   r   )r   r   is_prodn_itemsr   nprnbrs          r   check_aggregation_magnitudez/TestArrayReductions.check_aggregation_magnitude`  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  r5   r7   r   s    r   test_sum_magnitudez&TestArrayReductions.test_sum_magnitudes  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_magnitudew  s1    ((666(()<=====r   c                 >    |                      t          d           d S NT)r  )r  r1   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  r:   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  rA   rC   r   s    r   test_mean_magnitudez'TestArrayReductions.test_mean_magnitude  s1    ((444(():;;;;;r   c                 n    |                      t                     |                      t                     d S r   )r  rF   rH   r   s    r   test_var_magnitudez&TestArrayReductions.test_var_magnitude  r  r   c                 n    |                      t                     |                      t                     d S r   )r  rK   rM   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                            |           |                      ||           ||                     d|j        vrNt          dt          |          d          D ]}d||<   |                      ||           ||                     |
                    |                    d                     |                      ||           ||                     d S )NTr   r   rm   r   r   NaT)r   r   r   r3  r   r   r4  __name__re  lenfillr   )r   r   r   r  r   r[  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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   rb  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  rP   r  r   s    r   test_min_npdatetimez'TestArrayReductions.test_min_npdatetime  0    i(((y)))))r   c                 n    |                      t                     |                     t                     d S r   )r  rX   r  r   s    r   test_max_npdatetimez'TestArrayReductions.test_max_npdatetime  r  r   c                 n    |                      t                     |                     t                     d S r   )r  ra   r  r   s    r   test_argmin_npdatetimez*TestArrayReductions.test_argmin_npdatetime  0    l+++|,,,,,r   c                 n    |                      t                     |                     t                     d S r   )r  rh   r  r   s    r   test_argmax_npdatetimez*TestArrayReductions.test_argmax_npdatetime  r  r   c                 :    |                      t                     d S r   )r  rn   r   s    r   test_median_npdatetimez*TestArrayReductions.test_median_npdatetime  s    233333r   c                 :    |                      t                     d S r   )r  r5   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  rA   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)sizer   putr   rN  re  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   rM  r   rU  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   rJ  r$  rF  r#  r   r   r   )r   rb  r   r   rU  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  r1   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rj  r,  r+  r   r   r   rJ  g      @y      ?      @))gffffff@r   gffffff)g333333@g@g@r   r   )r   r   rU  r   r   r  rM  r   r  r   RandomStater4  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>.check4  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#  rz  r   r$  r   r   )r   rM  r   r   )real_nanimag_nanrealimags       r   
make_arrayz8TestArrayReductions.test_ptp_complex.<locals>.make_array9  su    ;r1b))D #FQqS	;r1b))D $VQrT
29$--a333r   r   )repeatrF  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_complex0  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   r~  r  r   rU  r  rt  ru  rq  rr  )r   r   r   r  msgs        r   test_ptp_exceptionsz'TestArrayReductions.test_ptp_exceptionsP  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>.checki  9    !6!99eAhh''#66666r   r  r   (   r   r+  r   r   )rR   rZ   r   r   rM  re  r   r4  rN  r   
complex128rb  )
r   pyfuncsr   r  r  r   _r   r   r   s
   `       @@r   test_min_max_complex_basicz.TestArrayReductions.test_min_max_complex_basicc  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   )	rq   rt   r   r   rM  r   re  r   r4  )	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   rJ  r+  r   ))r  r+  i)r      ir   rK  gA`"	@Fgr   g?)ggffffff!@)r   rU  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   )rq   rt   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+  rJ  r   r   r   r   r]  x   r+  r   r   r   r   r   r   r   r   r   r   3   c                     g | ]}|d z    	S r  r   r   rg  s     r   r   zATestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<listcomp>  +     , , ,!A#, , ,r   c                     g | ]}|fd S )c                 .    t          j        | |          S Naxisrj   r   _axiss     r   <lambda>zJTestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<listcomp>.<lambda>      bi&>&>&> r   r   r   r<  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   rU  r   r   listre  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 )NrJ  r   r   Tr   c                 ,    t          j        | |          S r   rj   r   r<  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assertRaisesRegexrr  rJ  )r   r<  rW  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   r~  )r   rL  rM  r]  rW  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 )NrJ  Tr   c                 ,    t          j        | |          S r   rj   rV  s     r   rW  zGTestArrayReductions.test_argmax_axis_must_be_integer.<locals>.jitargmax  rX  r   fooaxis must be an integerr   r   r   r  r  rt  ru  )r   r   rW  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 )NrJ  r   r   c                 0                         d          S Nr   r;  rf   r   rM  s    r   rg   z;TestArrayReductions.test_argmax_method_axis.<locals>.argmax      <<Q<'''r   Tr   r   r   r   r   r   r   rg   rM  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 )NrJ  r   r   r   c                 0                         d          S rn  rf   ro  s    r   rg   z;TestArrayReductions.test_argmax_return_type.<locals>.argmax  rp  r   Tr   r   r   uint8r   r   r   rr  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.  rJ  r   r   r0  r]  r1  r+  r   r   r2  r3  r4  c                     g | ]}|d z    	S r  r   r6  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>  r7  r   c                     g | ]}|fd S )c                 .    t          j        | |          S r:  rc   r=  s     r   r?  zJTestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>.<lambda>  r@  r   r   rA  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>  rB  r   c                 @    g | ]} t          d           |          S rD  rE  rF  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>
  rG  r   rH  rK  s	            r   test_argmin_axis_1d_2d_4dz-TestArrayReductions.test_argmin_axis_1d_2d_4d  rS  r   c                 H    t          j        d          }t          j        d                              dd          }t          d          d              fd} ||d            ||d	            ||d
            ||d                                             d S )NrJ  r   r   Tr   c                 ,    t          j        | |          S r   rc   rV  s     r   	jitargminzDTestArrayReductions.test_argmin_axis_out_of_range.<locals>.jitargmin  rX  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 rZ  r[  )r   r<  r  r   s     r   r]  zHTestArrayReductions.test_argmin_axis_out_of_range.<locals>.assert_raises  r^  r_  r   r`  ra  rb  )r   rL  rM  r]  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 )NrJ  Tr   c                 ,    t          j        | |          S r   rc   rV  s     r   r  zGTestArrayReductions.test_argmin_axis_must_be_integer.<locals>.jitargmin)  rX  r   rf  rg  rh  )r   r   r  r  s       r    test_argmin_axis_must_be_integerz4TestArrayReductions.test_argmin_axis_must_be_integer&  rj  rk  c                     t          j        d                              dd          fd}|                      |            t	          d          |                               d S )NrJ  r   r   c                 0                         d          S rn  r_   ro  s    r   r`   z;TestArrayReductions.test_argmin_method_axis.<locals>.argmin4  rp  r   Tr   rq  r   r`   rM  s     @r   test_argmin_method_axisz+TestArrayReductions.test_argmin_method_axis1  rt  r   c                     t          j        dt           j                                      dd          fd}|                      |            t          d          |                               d S )NrJ  r   r   r   c                 0                         d          S rn  r_   ro  s    r   r`   z;TestArrayReductions.test_argmin_return_type.<locals>.argmin>  rp  r   Tr   rw  r  s     @r   test_argmin_return_typez+TestArrayReductions.test_argmin_return_type:  rz  r   c                 >    t           t          t          t          t          t
          t          t          t          t          t          t          t          t          t          t          t           t"          t$          t&          t(          t*          t,          g}t.          t0          t2          t4          g}|t6          t8          t:          gz  }|t<          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   r9   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_functionl  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_testsa  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   )$r5   r7   r:   r=   rA   rC   rF   rH   rK   rM   r   r   r   r   rP   rR   r]   rU   rX   rZ   rt   rq   rz   ra   rd   rh   rk   rw   r   r   r}   r   r  r   r   r   )r  reduction_funcsreduction_funcs_rspacedtypes_to_testr  s   `    r   install_generated_testsz+TestArrayReductions.install_generated_testsD  s    
 %&6%'8%'8$&6$&6$&6$&6$&6%z$&6''  #/0C".0C"E 	M<FFM?*(BJ",G	? 	? 	? 	? 	?8 	nSbS)+ABBB 	no66666r   )r]  )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  r0  staticmethodr5  r9  r\  rm  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,  rR  rc  ri  rs  ry  r  r  r  r  r  classmethodr  __classcell__)r   s   @r   r   r      sx              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 94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   rq  BaseException	zero_sizerr  r  rt  ru  )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   )dictrh   rk   ra   rd   rX   rP   itemsr  r  r  r  )r  	fn_to_msg	empty_seqop_no_identr[  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__)G	itertoolsr   r   numpyr   numbar   r   r   numba.np.numpy_supportr   numba.tests.supportr	   r
   r   r   unittestr   r   r   r   r!   r#   r'   r*   r-   r1   r5   r7   r:   r=   rA   rC   rF   rH   rK   rM   rP   rR   rU   rX   rZ   r]   ra   rd   rh   rk   rn   rq   rt   rw   rz   r}   r   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 O O O O O O O O O O O O                                                                               ! ! !$ $ $      " " "  "  (& & &A7 A7 A7 A7 A7/8 A7 A7 A7H  + + - - -%- %- %- %- %-OX %- %- %-N  % % ' ' ' zHMOOOOO r   