
    ,i                     4   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 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% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5d, Z6d- Z7d. Z8d/ Z9d0 Z:d1 Z;d2 Z<d3 Z=d4 Z>d5 Z? G d6 d7ee          Z@e@A                                  G d8 d9ee          ZBeBC                                 eDd:k    r ejE                     dS dS );    )productcombinations_with_replacementN)jitnjittypeof)numpy_version)TestCaseMemoryLeakMixintagc                 *    |                                  S N)allarrs    _/var/www/html/speakWrite/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_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   /       88::r   c                 *    t          j        |           S r   )r   r8   r   s    r   array_prod_globalr<   2       73<<r   c                 *    |                                  S r   )meanr   s    r   
array_meanr@   5   r:   r   c                 *    t          j        |           S r   )r   r?   r   s    r   array_mean_globalrB   8   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   A   r   r   c                 *    t          j        |           S r   )r   rI   r   s    r   array_std_globalrL   D   r   r   c                 *    |                                  S r   )minr   s    r   	array_minrO   G   r   r   c                 *    t          j        |           S r   )r   rN   r   s    r   array_min_globalrQ   J   r   r   c                 *    t          j        |           S r   )r   aminr   s    r   
array_aminrT   M   r=   r   c                 *    |                                  S r   )maxr   s    r   	array_maxrW   P   r   r   c                 *    t          j        |           S r   )r   rV   r   s    r   array_max_globalrY   S   r   r   c                 *    t          j        |           S r   )r   amaxr   s    r   
array_amaxr\   V   r=   r   c                 *    |                                  S r   argminr   s    r   array_argminr`   Y   r*   r   c                 *    t          j        |           S r   r   r_   r   s    r   array_argmin_globalrc   \   r-   r   c                 *    |                                  S r   argmaxr   s    r   array_argmaxrg   _   r*   r   c                 *    t          j        |           S r   r   rf   r   s    r   array_argmax_globalrj   b   r-   r   c                 *    t          j        |           S r   )r   medianr   s    r   array_median_globalrm   e   r-   r   c                 *    t          j        |           S r   )r   nanminr   s    r   array_nanminrp   h   r-   r   c                 *    t          j        |           S r   )r   nanmaxr   s    r   array_nanmaxrs   k   r-   r   c                 *    t          j        |           S r   )r   nanmeanr   s    r   array_nanmeanrv   n   r#   r   c                 *    t          j        |           S r   )r   nansumr   s    r   array_nansumry   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   }   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          |           } | |          } ||          }||fS r   )r   )compare_func
test_arraycfuncnumpy_resultnumba_results        r   run_comparativer      s8    E<
++L5$$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   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   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   rW   r   s    r   test_max_basicz"TestArrayReductions.test_max_basic  r   r   c                 :    |                      t                     d S r   )r   r`   r   s    r   test_argmin_basicz%TestArrayReductions.test_argmin_basic      ""<00000r   c                 :    |                      t                     d S r   )r   rg   r   s    r   test_argmax_basicz%TestArrayReductions.test_argmax_basic  r  r   c                 :    |                      t                     d S r   )r   rp   r   s    r   test_nanmin_basicz%TestArrayReductions.test_nanmin_basic  r  r   c                 :    |                      t                     d S r   )r   rs   r   s    r   test_nanmax_basicz%TestArrayReductions.test_nanmax_basic  r  r   c                 :    |                      t                     d S r   )r   rv   r   s    r   test_nanmean_basicz&TestArrayReductions.test_nanmean_basic       ""=11111r   c                 :    |                      t                     d S r   )r   ry   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   r1  r*  r   )r2  r   r   r3  r   s    r   
variationsz9TestArrayReductions.test_median_basic.<locals>.variationsZ  sl      GGG$$B$AGGGIa   GGGAa!eqjMGGGGGr   )rm   r/  )r   r   r7  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   r1  g      ?r   r*  )      ?rF  r   )g      @      @g      &@ih     )rG  rF  r   )rG  rF  g      ?)r   rH  )r   r   r   r   )r   r   r*  r   )r:  )r   r   randnr   r   linspacer   r   choiceflatr3  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>  r@  s	         r   r   z>TestArrayReductions.check_percentile_edge_cases.<locals>.check  rB  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   rT  )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   rT  )r   r   rX  r   rb  rh  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   ri  Not supported for complex dtype	r   disable_leak_checkr   r   r   assertTypingErrorassertInrs  rt  r   r   rw  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]ro  ru  s      r   rw  z@TestArrayReductions.check_quantile_exceptions.<locals>.check_err  s    "":.. &a              7F$%%    rx  r   g      )ri  ri  g?ri  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\  rX  )r   r[  rl  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[  rl  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[  rl  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[  rl  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/  r4  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   rr  ndimlayoutr   r6   r3   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   rr  r  r  r   r9   r8   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   ri  r   r  )r   r   r   r   rr  r  r  r   r9   rR  assert_allcloser8   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   rr  r  r  r   r<   rR  r  r8   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   rE  rI  )r   r   )r   r   int16r   r   rL  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   ra  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  r4   r6   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  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                            |           |                      ||           ||                     d|j        vrNt          dt          |          d          D ]}d||<   |                      ||           ||                     |
                    |                    d                     |                      ||           ||                     d S )NTr   r   rl   r   r   NaT)r   r   r   r2  r   r   r3  __name__rd  lenfillr   )r   r   r   r  r   rZ  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   ra  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  rW   r  r   s    r   test_max_npdatetimez'TestArrayReductions.test_max_npdatetime  r  r   c                 n    |                      t                     |                     t                     d S r   )r  r`   r  r   s    r   test_argmin_npdatetimez*TestArrayReductions.test_argmin_npdatetime  0    l+++|,,,,,r   c                 n    |                      t                     |                     t                     d S r   )r  rg   r  r   s    r   test_argmax_npdatetimez*TestArrayReductions.test_argmax_npdatetime  r  r   c                 :    |                      t                     d S r   )r  rm   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)sizer   putr   rM  rd  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   rL  r   rT  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   rI  r#  rE  r"  r   r   r   )r   ra  r   r   rT  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ri  r+  r*  r   r   r   rI  g      @y      ?      @))gffffff@r   gffffff)g333333@g@g@r   r   )r   r   rT  r   r   r  rL  r   r  r   RandomStater3  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>.check3  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"  ry  r   r#  r   r   )r   rL  r   r   )real_nanimag_nanrealimags       r   
make_arrayz8TestArrayReductions.test_ptp_complex.<locals>.make_array8  su    ;r1b))D #FQqS	;r1b))D $VQrT
29$--a333r   r   )repeatrE  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_complex/  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   rT  r  rs  rt  rp  rq  )r   r   r   r  msgs        r   test_ptp_exceptionsz'TestArrayReductions.test_ptp_exceptionsO  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>.checkh  9    !6!99eAhh''#66666r   r  r   (   r   r*  r   r   )rQ   rY   r   r   rL  rd  r   r3  rM  r   
complex128ra  )
r   pyfuncsr   r  r  r   _r   r   r   s
   `       @@r   test_min_max_complex_basicz.TestArrayReductions.test_min_max_complex_basicb  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   )	rp   rs   r   r   rL  r   rd  r   r3  )	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   rI  r*  r   ))r  r*  i)r      ir   rJ  gA`"	@Fgr   g?)ggffffff!@)r   rT  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   )rp   rs   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*  rI  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   rf  s     r   r   zATestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<listcomp>  +     , , ,!A#, , ,r   c                     g | ]}|fd S )c                 .    t          j        | |          S Naxisri   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   rT  r   r   listrd  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 )NrI  r   r   Tr   c                 ,    t          j        | |          S r   ri   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assertRaisesRegexrq  rI  )r   r;  rV  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   rK  rL  r\  rV  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 )NrI  Tr   c                 ,    t          j        | |          S r   ri   rU  s     r   rV  zGTestArrayReductions.test_argmax_axis_must_be_integer.<locals>.jitargmax  rW  r   fooaxis must be an integerr   r   r   r~  r  rs  rt  )r   r   rV  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 )NrI  r   r   c                 0                         d          S Nr   r:  re   r   rL  s    r   rf   z;TestArrayReductions.test_argmax_method_axis.<locals>.argmax      <<Q<'''r   Tr   r   r   r   r   r   r   rf   rL  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 )NrI  r   r   r   c                 0                         d          S rm  re   rn  s    r   rf   z;TestArrayReductions.test_argmax_return_type.<locals>.argmax  ro  r   Tr   r   r   uint8r   r   r   rq  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-  rI  r   r   r/  r\  r0  r*  r   r   r1  r2  r3  c                     g | ]}|d z    	S r  r   r5  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>  r6  r   c                     g | ]}|fd S )c                 .    t          j        | |          S r9  rb   r<  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>  rA  r   c                 @    g | ]} t          d           |          S rC  rD  rE  s     r   r   zATestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<listcomp>	  rF  r   rG  rJ  s	            r   test_argmin_axis_1d_2d_4dz-TestArrayReductions.test_argmin_axis_1d_2d_4d  rR  r   c                 H    t          j        d          }t          j        d                              dd          }t          d          d              fd} ||d            ||d	            ||d
            ||d                                             d S )NrI  r   r   Tr   c                 ,    t          j        | |          S r   rb   rU  s     r   	jitargminzDTestArrayReductions.test_argmin_axis_out_of_range.<locals>.jitargmin  rW  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 rY  rZ  )r   r;  r  r   s     r   r\  zHTestArrayReductions.test_argmin_axis_out_of_range.<locals>.assert_raises  r]  r^  r   r_  r`  ra  )r   rK  rL  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 )NrI  Tr   c                 ,    t          j        | |          S r   rb   rU  s     r   r  zGTestArrayReductions.test_argmin_axis_must_be_integer.<locals>.jitargmin(  rW  r   re  rf  rg  )r   r   r  r  s       r    test_argmin_axis_must_be_integerz4TestArrayReductions.test_argmin_axis_must_be_integer%  ri  rj  c                     t          j        d                              dd          fd}|                      |            t	          d          |                               d S )NrI  r   r   c                 0                         d          S rm  r^   rn  s    r   r_   z;TestArrayReductions.test_argmin_method_axis.<locals>.argmin3  ro  r   Tr   rp  r   r_   rL  s     @r   test_argmin_method_axisz+TestArrayReductions.test_argmin_method_axis0  rs  r   c                     t          j        dt           j                                      dd          fd}|                      |            t          d          |                               d S )NrI  r   r   r   c                 0                         d          S rm  r^   rn  s    r   r_   z;TestArrayReductions.test_argmin_return_type.<locals>.argmin=  ro  r   Tr   rv  r  s     @r   test_argmin_return_typez+TestArrayReductions.test_argmin_return_type9  ry  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   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_functionk  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_tests`  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   r\   rT   rW   rY   rs   rp   ry   r`   rc   rg   rj   rv   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_testsC  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  r/  staticmethodr4  r8  r[  rl  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+  rQ  rb  rh  rr  rx  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 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   rp  BaseException	zero_sizerq  r  rs  rt  )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   )dictrg   rj   r`   rc   rW   rO   itemsr  r  r  r  )r  	fn_to_msg	empty_seqop_no_identrZ  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__)F	itertoolsr   r   numpyr   numbar   r   r   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   rW   rY   r\   r`   rc   rg   rj   rm   rp   rs   rv   ry   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 > > > > > > > > > >                                                                               ! ! !$ $ $      " " "  "  (& & &@7 @7 @7 @7 @7/8 @7 @7 @7F  + + - - -%- %- %- %- %-OX %- %- %-N  % % ' ' ' zHMOOOOO r   