
    sh!                        S SK JrJr  S SKrS SKJrJrJr  S SK	J
r
  S SKJrJrJrJr  S SKrS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S  r+S! r,S" r-S# r.S$ r/S% r0S& r1S' r2S( r3S) r4S* r5S+ r6S, r7S- r8S. r9S/ r:S0 r;S1 r<S2 r=S3 r>S4 r?S5 r@ " S6 S7\\5      rA\AR                  5          " S8 S9\\5      rC\CR                  5         \ES::X  a  \R                  " 5         gg);    )productcombinations_with_replacementN)jitnjittypeof)numpy_version)TestCaseMemoryLeakMixintagskip_if_numpy_2c                 "    U R                  5       $ N)allarrs    u/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_array_reductions.py	array_allr          779    c                 .    [         R                  " U 5      $ r   )npr   r   s    r   array_all_globalr          66#;r   c                 "    U R                  5       $ r   )anyr   s    r   	array_anyr      r   r   c                 .    [         R                  " U 5      $ r   )r   r   r   s    r   array_any_globalr      r   r   c                 "    U R                  5       $ r   )cumprodr   s    r   array_cumprodr!      s    ;;=r   c                 .    [         R                  " U 5      $ r   )r   r    r   s    r   array_cumprod_globalr#          ::c?r   c                 .    [         R                  " U 5      $ r   )r   
nancumprodr   s    r   array_nancumprodr'      s    ==r   c                 "    U R                  5       $ r   )cumsumr   s    r   array_cumsumr*           ::<r   c                 .    [         R                  " U 5      $ r   )r   r)   r   s    r   array_cumsum_globalr-   #       99S>r   c                 .    [         R                  " U 5      $ r   )r   	nancumsumr   s    r   array_nancumsumr1   &       <<r   c                 "    U R                  5       $ r   )sumr   s    r   	array_sumr5   )   r   r   c                 .    [         R                  " U 5      $ r   )r   r4   r   s    r   array_sum_globalr7   ,   r   r   c                 "    U R                  5       $ r   )prodr   s    r   
array_prodr:   /       88:r   c                 .    [         R                  " U 5      $ r   )r   r9   r   s    r   array_prod_globalr=   2       773<r   c                 "    U R                  5       $ r   )meanr   s    r   
array_meanrA   5   r;   r   c                 .    [         R                  " U 5      $ r   )r   r@   r   s    r   array_mean_globalrC   8   r>   r   c                 "    U R                  5       $ r   )varr   s    r   	array_varrF   ;   r   r   c                 .    [         R                  " U 5      $ r   )r   rE   r   s    r   array_var_globalrH   >   r   r   c                 "    U R                  5       $ r   )stdr   s    r   	array_stdrK   A   r   r   c                 .    [         R                  " U 5      $ r   )r   rJ   r   s    r   array_std_globalrM   D   r   r   c                 "    U R                  5       $ r   )minr   s    r   	array_minrP   G   r   r   c                 .    [         R                  " U 5      $ r   )r   rO   r   s    r   array_min_globalrR   J   r   r   c                 .    [         R                  " U 5      $ r   )r   aminr   s    r   
array_aminrU   M   r>   r   c                 "    U R                  5       $ r   )maxr   s    r   	array_maxrX   P   r   r   c                 .    [         R                  " U 5      $ r   )r   rW   r   s    r   array_max_globalrZ   S   r   r   c                 .    [         R                  " U 5      $ r   )r   amaxr   s    r   
array_amaxr]   V   r>   r   c                 "    U R                  5       $ r   argminr   s    r   array_argminra   Y   r+   r   c                 .    [         R                  " U 5      $ r   r   r`   r   s    r   array_argmin_globalrd   \   r.   r   c                 "    U R                  5       $ r   argmaxr   s    r   array_argmaxrh   _   r+   r   c                 .    [         R                  " U 5      $ r   r   rg   r   s    r   array_argmax_globalrk   b   r.   r   c                 .    [         R                  " U 5      $ r   )r   medianr   s    r   array_median_globalrn   e   r.   r   c                 .    [         R                  " U 5      $ r   )r   nanminr   s    r   array_nanminrq   h   r.   r   c                 .    [         R                  " U 5      $ r   )r   nanmaxr   s    r   array_nanmaxrt   k   r.   r   c                 .    [         R                  " U 5      $ r   )r   nanmeanr   s    r   array_nanmeanrw   n   r$   r   c                 .    [         R                  " U 5      $ r   )r   nansumr   s    r   array_nansumrz   q   r.   r   c                 .    [         R                  " U 5      $ r   )r   nanprodr   s    r   array_nanprodr}   t   r$   r   c                 .    [         R                  " U 5      $ r   )r   nanstdr   s    r   array_nanstdr   w   r.   r   c                 .    [         R                  " U 5      $ r   )r   nanvarr   s    r   array_nanvarr   z   r.   r   c                 .    [         R                  " U 5      $ r   )r   	nanmedianr   s    r   array_nanmedian_globalr   }   r2   r   c                 .    [         R                  " X5      $ r   )r   
percentiler   qs     r   array_percentile_globalr      s    ==  r   c                 .    [         R                  " X5      $ r   )r   nanpercentiler   s     r   array_nanpercentile_globalr      s    C##r   c                 .    [         R                  " U 5      $ r   )r   ptpas    r   array_ptp_globalr      s    66!9r   c                 "    U R                  5       $ r   )r   r   s    r   	array_ptpr      s    557Nr   c                 .    [         R                  " X5      $ r   )r   quantiler   s     r   array_quantile_globalr      s    ;;sr   c                 .    [         R                  " X5      $ r   )r   nanquantiler   s     r   array_nanquantile_globalr      s    >>#!!r   c                 0  ^  T [         R                  :X  a  S nOU 4S jnU" S5      nU" S5      R                  SS5      nU" S5      S S S2   R                  SS	S
9nUR                  R                  (       d  UR                  R
                  (       a   eX#U/$ )Nc                 T    U S-  S:X  d   e[         R                  " SS/U S-  -  5      $ )N   r      )r   bool_)ns    r   factory!base_test_arrays.<locals>.factory   s.    q5A::88QFa1f-..r   c                 4   > [         R                  " U TS9S-   $ )Ndtyper   )r   arange)r   r   s    r   r   r      s    99Qe,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 
B			Q	"B
"+tt		$	$Yc	$	:B%%)>)>??B<r   c                    [        U 5      nU [        R                  :X  a  X Vs/ s H  o"S-  PM	     sn-  nU [        R                  :X  a]  / nU HD  nUS-  SU-  S-  -   n[        R                  " US S S2   5      US S S2'   UR                  U5        MF     UR                  U5        U H)  nUR                  [        R                  " U 5      :X  a  M)   e   U$ s  snf )Nr                 ?   r   )r   r   float32	complex64conjappendextendr   )r   
array_listr   acctmps        r   full_test_arraysr      s    !%(J 

z2z!2vz22
 Ab&26B;&Cwws3Q3x(C!HJJsO  	#ww"((5/)))  3s   Cc                 >    [        U 5      nU " U5      nU" U5      nX44$ r   )r   )compare_func
test_arraycfuncnumpy_resultnumba_results        r   run_comparativer      s)    E
+L$L%%r   c                   D  ^  \ rS rSrSrU 4S jrS r\4S jr\	4S jr
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS r\S 5       rS rS rSVS jrS r S r!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S% r*S& r+S' r,S( r-S) r.S* r/SWS+ jr0S, r1S- r2S. r3S/ r4S0 r5S1 r6S2 r7S3 r8S4 r9S5 r:S6 r;S7 r<S8 r=S9 r>S: r?S; r@S< rAS= rBS> rCS? rDS@ rESA rFSB rGSC rH\ISD 5       rJSE rKSF rLSG rMSH rNSI rOSJ rPSK rQSL rRSM rSSN rTSO rUSP rVSQ rWSR rXSS rY\ZST 5       r[SUr\U =r]$ )XTestArrayReductions   zI
Test array reduction methods and functions such as .sum(), .max(), etc.
c                 h   > [         [        U ]  5         [        R                  R                  S5        g )N*   )superr   setUpr   randomseed)self	__class__s    r   r   TestArrayReductions.setUp   s!    !4.0
		rr   c                 |  ^ ^^^ [        SS9" T5      mUUUU 4S jn[        R                  " / SQ5      nU" U5        [        R                  " SS/5      nU" U5        [        R                  " / SQ5      nU" U5        [        R                  " / SQ5      nU" U5        [        R                  " / S	Q5      nU" U5        [        R                  " / S
Q5      nU" U5        [        R                  " / SQ5      nU" U5        [        R                  " / SQ5      nU" U5        [        R                  " SS/5      nU" U5        g )NTnopythonc                 F   > TR                   " T" U 5      T" U 5      40 TD6  g r   assertPreciseEqual)r   r   kwargspyfuncr   s    r   check8TestArrayReductions.check_reduction_basic.<locals>.check   s     ##F3KsFv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_basic)TestArrayReductions.check_reduction_basic   s    T"6*	G 	G jj9:c
jj$&c
jj+,c
jj,-c
jj34c
jj78c
jjFGc
jj23c
jj%(c
r   c                 "  ^ ^^ [        SS9" T5      mUUU 4S jn[        R                  " SS[        S5      [        S5      /5      nU" U5        SUS	'   U" U5        S
US	'   U" U5        UR	                  S5      nU" U5        U" US S S2   5        g )NTr   c                 B   > TR                  T" U 5      T" U 5      5        g r   r   r   r   r   r   s    r   r   1TestArrayReductions.test_all_basic.<locals>.check       ##F3Ks<r   r   r   r   r   r   r         ?r   r   r   r   r   r   floatr   r   r   r   r   r   s   ``  @r   test_all_basic"TestArrayReductions.test_all_basic   s    T"6*	= jj#sE%L%,?@c
Ac
Ac
kk&!c
c$B$ir   c                 8  ^ ^^ [        SS9" T5      mUUU 4S jn[        R                  " / SQ5      nU" U5        [        S5      US'   U" U5        [        S5      US'   U" U5        SUS'   U" U5        UR	                  S	5      nU" U5        U" US S S
2   5        g )NTr   c                 B   > TR                  T" U 5      T" U 5      5        g r   r   r   s    r   r   1TestArrayReductions.test_any_basic.<locals>.check   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   s   ``  @r   test_any_basic"TestArrayReductions.test_any_basic   s    T"6*	= jj./c
uAc
uAc
Ac
kk&!c
c$B$ir   c                 .    U R                  [        5        g r   )r   r5   r   s    r   test_sum_basic"TestArrayReductions.test_sum_basic      ""9-r   c                 .    U R                  [        5        g r   )r   rA   r   s    r   test_mean_basic#TestArrayReductions.test_mean_basic  s    "":.r   c                 ,    U R                  [        SS9  g Ndouble)prec)r   rF   r   s    r   test_var_basic"TestArrayReductions.test_var_basic  s    ""98"<r   c                 .    U R                  [        5        g r   )r   rK   r   s    r   test_std_basic"TestArrayReductions.test_std_basic  r  r   c                 .    U R                  [        5        g r   )r   rP   r   s    r   test_min_basic"TestArrayReductions.test_min_basic  r  r   c                 .    U R                  [        5        g r   )r   rX   r   s    r   test_max_basic"TestArrayReductions.test_max_basic  r  r   c                 .    U R                  [        5        g r   )r   ra   r   s    r   test_argmin_basic%TestArrayReductions.test_argmin_basic      ""<0r   c                 .    U R                  [        5        g r   )r   rh   r   s    r   test_argmax_basic%TestArrayReductions.test_argmax_basic  r  r   c                 .    U R                  [        5        g r   )r   rq   r   s    r   test_nanmin_basic%TestArrayReductions.test_nanmin_basic  r  r   c                 .    U R                  [        5        g r   )r   rt   r   s    r   test_nanmax_basic%TestArrayReductions.test_nanmax_basic  r  r   c                 .    U R                  [        5        g r   )r   rw   r   s    r   test_nanmean_basic&TestArrayReductions.test_nanmean_basic       ""=1r   c                 .    U R                  [        5        g r   )r   rz   r   s    r   test_nansum_basic%TestArrayReductions.test_nansum_basic#  r  r   c                 .    U R                  [        5        g r   )r   r}   r   s    r   test_nanprod_basic&TestArrayReductions.test_nanprod_basic&  r%  r   c                 .    U R                  [        5        g r   )r   r   r   s    r   test_nanstd_basic%TestArrayReductions.test_nanstd_basic)  r  r   c                 ,    U R                  [        SS9  g r  )r   r   r   s    r   test_nanvar_basic%TestArrayReductions.test_nanvar_basic,  s    ""<h"?r   c                 
  ^ ^^^ [        SS9" T5      mUUU 4S jmU4S jnU" [        R                  " S5      S-   5       H  nU" U5        M     U4S jnU" [        R                  " S5      S-   5       H  nU" U5        M     g )	NTr   c                 H   > T" U 5      nT" U 5      nTR                  X!5        g r   r   )r   expectedgotr   r   r   s      r   r   5TestArrayReductions.check_median_basic.<locals>.check1  s#    c{H*C##C2r   c                 l   > T" U 5        U R                  S5      n T" U 5        T" U R                  5        g )N)	      r   Tr   r   s    r   	check_odd9TestArrayReductions.check_median_basic.<locals>.check_odd7  s*    !H		&!A!H!##Jr   ?   g      %@c                 l   > T" U 5        U R                  S5      n T" U 5        T" U R                  5        g )N)      r:  r<  s    r   
check_even:TestArrayReductions.check_median_basic.<locals>.check_even@  s*    !H		'"A!H!##Jr   @   )r   r   r   )r   r   array_variationsr=  r   rC  r   r   s   ``    @@r   check_median_basic&TestArrayReductions.check_median_basic/  sk    T"6*	3	
 ""))B-$"67AaL 8	
 ""))B-$"67AqM 8r   c              #     #    U v   U S S S2   R                  5       n U v   [        R                  R                  U 5        U v   SX S-  S:  '   U v   [        R                  X S-  S:  '   U v   [        R                  U S S & U v   g 7f)Nr         @rA  r   r   )copyr   r   shuffler   r   s    r   _array_variations%TestArrayReductions._array_variationsH  sy      ddGLLN
		!a%1*a%1*vv!s   BBc                 8    [         nS nU R                  X5        g )Nc              3      #    U v   U S S S2   R                  5       n U v   [        R                  R                  U 5        U v   SX S-  S:  '   U v   g 7f)Nr   rJ  rA  r   )rK  r   r   rL  r   s    r   
variations9TestArrayReductions.test_median_basic.<locals>.variationsZ  sM     G$B$AGIIa GA!eqjMGs   AA)rn   rG  )r   r   rQ  s      r   test_median_basic%TestArrayReductions.test_median_basicW  s    $	 	3r   c           	        ^ ^^ [        SS9" T5      mS UUU 4S jjnT R                  R                  S5      R                  SSS5      n[        R
                  " SUS5      S S S2   nU" XE5        U" US5        U" XBS	-  5        U" XB5        [        R                  [        R                  * [        R                  /nT R                  R                  US
5      UR                  S S
& T R                  R                  U5        T R                  R                  U5        U" XE5        UR                  5       R                  5       nUR                  5       R                  5       nU" XE5        U" [        U5      [        U5      5        T R                  R                  / SQS
5      n[        R
                  " SUS5      nU" XE5        [        R                  " S5      S-  n[        R                  R!                  T" US5      S5        [        R                  R!                  T" Xr5      S5        [        R                  R!                  T" XrS	-  5      S5        [        R                  " S5      R                  SS5      n[        R"                  " S5      U-  n[        R                  R!                  T" Xu5      / SQ5        [        R                  " S5      R                  SSSS5      n[        R"                  " S5      U-  n[        R                  R!                  T" Xu5      R$                  S5        [        R"                  " S5      U-  n[        R                  R!                  T" Xu5      R$                  S5        [        R                  " S5      R                  SS5      n[        R                  R!                  T" XrS	-  5      S5        T R'                  [        R(                  " T" XrS	-  5      5      5        [        R                  R!                  T" / SQS5      S5        [        R"                  " / SQ5      nT" XBS	-  /5        [        R                  R!                  U[        R"                  " / SQ5      5        g )!NTr   c                    > T" X5      nT" X5      n[         R                  " U5      n[         R                  " U5      (       a  TR                  XCUS9  g TR                  XE   X5   US9  g N)abs_tolr   isfiniter   r   	r   r   rX  r4  r5  finiter   r   r   s	         r   r   @TestArrayReductions.check_percentile_and_quantile.<locals>.checki  d    a|H+C [[*Fvvf~~''w'G''X5E07 ( 9r      r   r      r   r   r   )r   r   r   rA  r            ?r   rJ  g      ?r   rA  )      ?rb  r   )g      @      @g      &@ih     )rc  rb  r   )rc  rb  g      ?)r   rd  )r   r   r   r   )r   r   rA  r   )g-q=)r   r   randnr   r   linspacer   r   choiceflatrL  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_quantile1TestArrayReductions.check_percentile_and_quantilef  s1   T"6*
	9 
	9 KKb!))!Q2KK="-dd3aaa"#affrvvgrvv.
kk((R8sAAaIIK IIK aeAha!KK|R0KK=!,a IIaL3


aR0


a 7=


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


a->?IIm$,,Q1a8HH\"]2


a 1 148HH'(=8


a 1 148IIbM!!!Q'


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


i 3Q7HH\"a!#$%


288L#9:r   c                   ^ ^^
 [        SS9" T5      m
SU
UU 4S jjnSU
UU 4S jjnS nSSU-  SU-  U4nS	S
[        R                  [        R                  [        R                  * 4nU" U5       H  nU" X5        M     US	:X  a  Un	OUn	[        R                  " S5      n[        R                  " S	5      nU	" X5        SnUS-  nU	" X5        g )NTr   c                    > T" X5      nT" X5      n[         R                  " U5      n[         R                  " U5      (       a  TR                  XCUS9  g TR                  XE   X5   US9  g rW  rY  r[  s	         r   r   >TestArrayReductions.check_percentile_edge_cases.<locals>.check  r^  r   c                    > T" X5      R                  [        R                  5      nT" X5      nTR                  XCUS9  g rW  )astyper   r   r   )r   r   rX  r4  r5  r   r   r   s        r   convert_to_float_and_checkSTestArrayReductions.check_percentile_edge_cases.<locals>.convert_to_float_and_check  s7    a|**2::6H+C##C7#Cr   c              3      #    [        SS5       H-  n[        X5       H  n[        R                  " U5      v   M     M/     g 7f)Nr   r   )ranger   r   rp  )elementsicombs      r   _array_combinationsLTestArrayReductions.check_percentile_edge_cases.<locals>._array_combinations  s3     1b\9(FD((4.( G "s   ?Ar   皙?g?r   r   r   r   )g+=)r   r   r   r   rp  )r   r   rt  r   r~  r  r   element_poolr   _checkr   s   ``        @r   check_percentile_edge_cases/TestArrayReductions.check_percentile_edge_cases  s    T"6*
	9 
	9	D 	D
	) m#S=%8-H2rvvrvvw7$\2A!K 3
 A/FFHHQKHHQKqAqr   c                   ^ ^ [        SS9" U5      mUU 4S jnT R                  5         [        R                  " S5      nU" US5        U" US5        U" USS[        R                  45        T R                  5        n[        R                  " S5      S	-  nS
nT" X55        S S S 5        T R                  S[        WR                  5      5        g ! , (       d  f       N4= f)NTr   c                    > TR                  [        5       nT" X5        S S S 5        TR                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nz)Percentiles must be in the range [0, 100]assertRaises
ValueErrorassertEqualstr	exceptionr   r   raisesr   r   s      r   	check_errBTestArrayReductions.check_percentile_exceptions.<locals>.check_err  sG    "":.&a /;F$$% /.   	A
Ar   )r   r   i   r   r   r   r  Not supported for complex dtype	r   disable_leak_checkr   r   r   assertTypingErrorassertInr  r  r   r   r  r   er   r   s   `     @r   check_percentile_exceptions/TestArrayReductions.check_percentile_exceptions  s    T"6*	 	!IIaL!R!\"!aRVV_%##%		!r!AA!K &
 	7Q[[9IJ &%   ;$C
Cc                   ^ ^ [        SS9" U5      mUU 4S jnT R                  5         [        R                  " S5      nU" US5        U" US5        U" USS[        R                  45        T R                  5        n[        R                  " S5      S-  nSnT" X55        S S S 5        T R                  S	[        WR                  5      5        g ! , (       d  f       N4= f)
NTr   c                    > TR                  [        5       nT" X5        S S S 5        TR                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nz%Quantiles must be in the range [0, 1]r  r  s      r   r  @TestArrayReductions.check_quantile_exceptions.<locals>.check_err  sG    "":.&a /7F$$% /.r  r   g      )r  r  g?r  r   r  r  r  s   `     @r   check_quantile_exceptions-TestArrayReductions.check_quantile_exceptions  s    T"6*	 	!IIaL!T!&'!c4()##%		!r!AA!K &
 	7Q[[9IJ &%r  c                 r    [         nU R                  USS9  U R                  USS9  U R                  U5        g Nd   rt  )r   rw  r  r  r   r   s     r   test_percentile_basic)TestArrayReductions.test_percentile_basic	  s;    (**6*E((s(C((0r   c                 r    [         nU R                  USS9  U R                  USS9  U R                  U5        g r  )r   rw  r  r  r  s     r   test_nanpercentile_basic,TestArrayReductions.test_nanpercentile_basic  s;    +**6*E((s(C((0r   c                 r    [         nU R                  USS9  U R                  USS9  U R                  U5        g Nr   r  )r   rw  r  r  r  s     r   test_quantile_basic'TestArrayReductions.test_quantile_basic  s;    &**6*C((q(A&&v.r   c                 r    [         nU R                  USS9  U R                  USS9  U R                  U5        g r  )r   rw  r  r  r  s     r   test_nanquantile_basic*TestArrayReductions.test_nanquantile_basic  s;    )**6*C((q(A&&v.r   c                 F    [         nU R                  XR                  5        g r   )r   rG  rM  r  s     r   test_nanmedian_basic(TestArrayReductions.test_nanmedian_basic!  s    '(>(>?r   c                 T   [         R                  " S[         R                  S9n[        U5      nU R	                  UR
                  S5        U R	                  UR                  S5        [        U45      " [        5      nU R	                  [         R                  " U5      U" U5      5        g Nr   r   r   C)
r   r   int32r   r  ndimlayoutr   r7   r4   r   r   arrtyr   s       r   test_array_sum_global)TestArrayReductions.test_array_sum_global%  st    ii"((+sQ's+eX 01eCj1r   c                 N   [         R                  " S[         R                  S9S-   n[        U5      nU R	                  UR
                  S5        U R	                  UR                  S5        [        U45      " [        5      nU R	                  UR                  5       U" U5      5        g r  )
r   r   r  r   r  r  r  r   r:   r9   r  s       r   test_array_prod_int_1d*TestArrayReductions.test_array_prod_int_1d.  sv    ii"((+a/sQ's+eXz*U3Z0r   c                 j   [         R                  " S[         R                  S9S-   n[        U5      nU R	                  UR
                  S5        U R	                  UR                  S5        [        U45      " [        5      n[         R                  R                  UR                  5       U" U5      5        g )Nr   r   r  r   r  )r   r   r   r   r  r  r  r   r:   rn  assert_allcloser9   r  s       r   test_array_prod_float_1d,TestArrayReductions.test_array_prod_float_1d7  sz    ii"**-6sQ's+eXz*


""388:uSz:r   c                 p   [         R                  " S[         R                  S9n[        U5      nU R	                  UR
                  S5        U R	                  UR                  S5        [        U45      " [        5      n[         R                  R                  [         R                  " U5      U" U5      5        g r  )r   r   r  r   r  r  r  r   r=   rn  r  r9   r  s       r   test_array_prod_global*TestArrayReductions.test_array_prod_global@  sx    ii"((+sQ's+eX01


""2773<s<r   c                 R   [         R                  " SS[         R                  S9n[        X5      u  p4U R	                  XC5        [         R
                  " SSS5      n[        X5      u  p4U R	                  XC5        UR                  S5      n[        X5      u  p4U R	                  XC5        g )Nr   r   r   ra  re  )r   r   )r   r   int16r   r   rh  r   )r   r   r   r4  r5  s        r   check_cumulative$TestArrayReductions.check_cumulativeI  s    ii2RXX.'4.kk!Q"'4.kk&!'4.r   c                 .    U R                  [        5        g r   )r  r*   r   s    r   test_array_cumsum%TestArrayReductions.test_array_cumsumT  s    l+r   c                 .    U R                  [        5        g r   )r  r-   r   s    r   test_array_cumsum_global,TestArrayReductions.test_array_cumsum_globalW  s    12r   c                 .    U R                  [        5        g r   )r  r!   r   s    r   test_array_cumprod&TestArrayReductions.test_array_cumprodZ  s    m,r   c                 .    U R                  [        5        g r   )r  r#   r   s    r   test_array_cumprod_global-TestArrayReductions.test_array_cumprod_global]  s    23r   c                    U(       a  SOSn[         R                  " U5      S-   R                  S5      n[        X5      u  pVU R	                  XV5        [         R                  " S5      S-   R                  S5      n[        X5      u  pVU R	                  XV5        UR                  S5      n[        X5      u  pVU R	                  XV5        g)	z8
Check that integer overflows are avoided (issue #931).
r   r   i@  r  l            int64uint64N)r   r   r}  r   r   )r   r   is_prodn_itemsr   nprnbrs          r   check_aggregation_magnitude/TestArrayReductions.check_aggregation_magnitude`  s     !Byy!E)11':"6/) yy}u$,,W5"6/)jj""6/)r   c                 X    U R                  [        5        U R                  [        5        g r   )r  r5   r7   r   s    r   test_sum_magnitude&TestArrayReductions.test_sum_magnitudes      ((3(()9:r   c                 X    U R                  [        5        U R                  [        5        g r   )r  r*   r-   r   s    r   test_cumsum_magnitude)TestArrayReductions.test_cumsum_magnitudew  s    ((6(()<=r   c                 ,    U R                  [        SS9  g NT)r  )r  r1   r   s    r   test_nancumsum_magnitude,TestArrayReductions.test_nancumsum_magnitude{  s    (($(Gr   c                 T    U R                  [        SS9  U R                  [        SS9  g r  )r  r:   r=   r   s    r   test_prod_magnitude'TestArrayReductions.test_prod_magnitude~  s)    ((T(B(():D(Ir   c                 T    U R                  [        SS9  U R                  [        SS9  g r  )r  r!   r#   r   s    r   test_cumprod_magnitude*TestArrayReductions.test_cumprod_magnitude  s)    (((E(()=t(Lr   c                 ,    U R                  [        SS9  g r  )r  r'   r   s    r   test_nancumprod_magnitude-TestArrayReductions.test_nancumprod_magnitude  s    (()94(Hr   c                 X    U R                  [        5        U R                  [        5        g r   )r  rA   rC   r   s    r   test_mean_magnitude'TestArrayReductions.test_mean_magnitude  s    ((4(():;r   c                 X    U R                  [        5        U R                  [        5        g r   )r  rF   rH   r   s    r   test_var_magnitude&TestArrayReductions.test_var_magnitude  r  r   c                 X    U R                  [        5        U R                  [        5        g r   )r  rK   rM   r   s    r   test_std_magnitude&TestArrayReductions.test_std_magnitude  r  r   c                    [        U5      n[        SS9" U5      nU R                  U" U5      U" U5      5        U R                  U" US S 5      U" US S 5      5        US S S2   R                  5       nU R                  U" U5      U" U5      5        [        R
                  R                  U5        U R                  U" U5      U" U5      5        SUR                  ;  a?  [        S[        U5      S5       H  nSX%'   M	     U R                  U" U5      U" U5      5        UR                  UR                  S5      5        U R                  U" U5      U" U5      5        g )NTr   r   rm   r   r   NaT)r   r   r   rK  r   r   rL  __name__r  lenfillr   )r   r   r   r  r   rv  s         r   _do_check_nptimedelta)TestArrayReductions._do_check_nptimedelta  s   sT"6*c
F3K8c#2hCR1AB$B$innc
F3K8
		#c
F3K86??* 1c#h* +##E#Js<U#$c
F3K8r   c                 l    [         R                  " S5      R                  SS9nU R                  X5        g )Nr   zM8[Y]r   r   r   r}  r  r   r   r   s      r   check_npdatetime$TestArrayReductions.check_npdatetime  +    iim"""1""6/r   c                 l    [         R                  " S5      R                  SS9nU R                  X5        g )Nr   zm8[s]r   r  r  s      r   check_nptimedelta%TestArrayReductions.check_nptimedelta  r  r   c                 X    U R                  [        5        U R                  [        5        g r   )r  rP   r  r   s    r   test_min_npdatetime'TestArrayReductions.test_min_npdatetime      i(y)r   c                 X    U R                  [        5        U R                  [        5        g r   )r  rX   r  r   s    r   test_max_npdatetime'TestArrayReductions.test_max_npdatetime  r  r   c                 X    U R                  [        5        U R                  [        5        g r   )r  ra   r  r   s    r   test_argmin_npdatetime*TestArrayReductions.test_argmin_npdatetime      l+|,r   c                 X    U R                  [        5        U R                  [        5        g r   )r  rh   r  r   s    r   test_argmax_npdatetime*TestArrayReductions.test_argmax_npdatetime  r"  r   c                 .    U R                  [        5        g r   )r  rn   r   s    r   test_median_npdatetime*TestArrayReductions.test_median_npdatetime  s    23r   c                 .    U R                  [        5        g r   )r  r5   r   s    r   test_sum_npdatetime'TestArrayReductions.test_sum_npdatetime  s    y)r   c                 .    U R                  [        5        g r   )r  r*   r   s    r   test_cumsum_npdatetime*TestArrayReductions.test_cumsum_npdatetime  s    |,r   c                 .    U R                  [        5        g r   )r  rA   r   s    r   test_mean_npdatetime(TestArrayReductions.test_mean_npdatetime  s    z*r   c                   ^ ^^ [        SS9" T5      mUUU 4S jnS nS nU" 5        H6  nU" U5        U" U" UR                  [        R                  5      5      5        M8     U" [        R                  " / 5      5        U" [        R
                  " S[        R                  5      5        [        R                  " [        R                  S[        R                  SS	S
SSS/	5      nUSUS S S2   -  -   nUR                  SS5      nU" U5        g )NTr   c                 H   > T" U 5      nT" U 5      nTR                  X5        g r   r   r   r4  r5  r   r   r   s      r   r   7TestArrayReductions.check_nan_cumulative.<locals>.check  #    ayH(C##H2r   c           	          U R                   S-  n[        R                  " U [        R                  R	                  [        U R                   5      USS9[        R                  5        U $ )Nr   F)replace)sizer   putr   ri  r  r   )r   ps     r   _set_some_values_to_nanITestArrayReductions.check_nan_cumulative.<locals>._set_some_values_to_nan  sF    !AFF1bii&&uQVV}a&GPHr   c               3     #    [         R                  " SSS5      R                  SSS5      v   [         R                  " [         R                  SS/5      v   [         R                  " / SQ5      v   [         R
                  " SS5      v   [         R                  " [         R
                  " SS	5      S
-
  5      v   [         R
                  " SS[         R                  S9S S S2   v   g 7f)Nr   r   <   rA  r   )TTTFr   r   rE  gfffff@@r   )r   rh  r   rp  r   r   asfortranarrayr    r   r   a_variations>TestArrayReductions.check_nan_cumulative.<locals>.a_variations  s     ++b!R(00Aq99((BFFAq>**((455))Ar""##BIIa$4t$;<<))Ar4TrT::s   C%C'r   r   rA  r   re  r9  ra  r8  r   r   r   )r   r}  r   r   rp  fullr   r   )r   r   r   r<  rB  r   partsr   s   ``     @r   check_nan_cumulative(TestArrayReductions.check_nan_cumulative  s    T"6*	3
	
	; A!H)!((2::*>?@  
 	bhhrlbggb"&&!""&&!RVVQ1aA>?Btt$$IIaOar   c                 X    U R                  [        5        U R                  [        5        g r   )r  r'   rF  r   s    r   test_nancumprod_basic)TestArrayReductions.test_nancumprod_basic  s     ./!!"23r   c                 X    U R                  [        5        U R                  [        5        g r   )r  r1   rF  r   s    r   test_nancumsum_basic(TestArrayReductions.test_nancumsum_basic  s    o.!!/2r   c                 v   ^ ^^ [         m[        SS9" T5      mUUU 4S jnS nU" 5        H  nU" U5        M     g )NTr   c                 H   > T" U 5      nT" U 5      nTR                  X5        g r   r   r4  s      r   r   1TestArrayReductions.test_ptp_basic.<locals>.check  r6  r   c               3     #    [         R                  " S5      v   [         R                  " S[         R                  S/5      v   [         R                  " [         R                  * S/5      v   Sv   Sv   [         R
                  " SS5      v   / SQv   [         R                  " SSS	5      R                  S
SS5      n U v   [         R                  " U 5      v   U S S S2   v   [         R                  R                  S5      R                  U 5        U v   Sv   Sv   [         R                  * v   Sv   S[         R                  /v   S[         R                  /v   Sv   [         R
                  " S[         R                  5      v   S[         R                  S-  -   v   [         R                  [         R                  S-  -   v   [         R                  v   g 7f)Nr   g皙@r   )rA  r   r   )r   )rR  gffffffr  rB  rA  r   r   r   re  g      @y      ?      @))gffffff@r   gffffff)g333333@g@g@r   r   )r   r   rp  r   r   rD  rh  r   r@  r   RandomStaterL  r   s    r   rB  8TestArrayReductions.test_ptp_basic.<locals>.a_variations  sO    ))B-((D"&&#.//((RVVGQ<((OJ''!Q-""CR(00Aq9AG##A&&DbD'MII!!!$,,Q/GGI66'ML--55''!RVV$$bffrk/!&&266B;&&&&Ls   GG)r   r   )r   r   rB  r   r   r   s   `   @@r   test_ptp_basic"TestArrayReductions.test_ptp_basic  s6    !T"6*	3
	4 A!H  r   c                     [         n[        SS9" U5      n[        R                  " S5      nU" U5      nU" U5      nU R	                  XE5        g )NTr   r   )r   r   r   r   r   )r   r   r   r   r4  r5  s         r   test_ptp_method#TestArrayReductions.test_ptp_method$  sE     T"6*IIbM!9Ah.r   c                 l  ^ ^^	 [         m	[        SS9" T	5      mUU	U 4S jnSS jn[        SS/SS9 H  u  p4U" X45      nU" U5        M     [        R                  " S5      n[        R
                  " S	S
5      nUSU-  -   nU" U5        USU-  -
  nU" U5        [        R                  " SSS9nU" U5        g )NTr   c                 H   > T" U 5      nT" U 5      nTR                  X5        g r   r   r4  s      r   r   3TestArrayReductions.test_ptp_complex.<locals>.check4  r6  r   Fc                     [         R                  " SSS5      nU (       a  [         R                  USS& [         R                  " SSS5      nU(       a  [         R                  USS& US	U-  -   R                  SS5      $ )
NrA     r8  r  r   r9  r   r   )r   rh  r   r   )real_nanimag_nanrealimags       r   
make_array8TestArrayReductions.test_ptp_complex.<locals>.make_array9  sf    ;;r1b)DFFQq	;;r1b)DVVQr
29$--a33r   r   )repeatra  r_  rA  r   )rA  rA  y      ?      )
fill_value)FF)r   r   r   r   onesr   rD  )
r   r   re  ra  rb  comprc  rd  r   r   s
   `       @@r   test_ptp_complex$TestArrayReductions.test_ptp_complex0  s    !T"6*	3
	4 #*4-"BHh1D$K #C wwqzyyQb4idb4idwwv63dr   c                    [         n[        SS9" U5      nU R                  5         U R                  5        nU" [        R
                  " S5      5        S S S 5        SnU R                  U[        WR                  5      5        U R                  [        5       nU" [        R
                  " / 5      5        S S S 5        SnU R                  U[        UR                  5      5        g ! , (       d  f       N= f! , (       d  f       NG= f)NTr   )TTFz+Boolean dtype is unsupported (as per NumPy)z&zero-size array reduction not possible)r   r   r  r  r   rp  r  r  r  r  r  )r   r   r   r  msgs        r   test_ptp_exceptions'TestArrayReductions.test_ptp_exceptionsP  s    !T"6* 	!##%"((./0 & <c3q{{+,z*a"((2, + 7c3q{{+, &% +*s   C$C5$
C25
Dc                   ^ ^^	 [         [        4nU H  m	[        SS9" T	5      mUU	U 4S jn[        R                  " SSS5      nUS   US S& US	-  nX4S
-  -
  nU" U5        [        S5       H  nT R                  R                  U5        T R                  R                  U5        T R                  R                  [        R                  [        R                  /5      nX4S
-  -
  nUS   US S& U" UR                  U5      5        M     M     g )NTr   c                 H   > T" U 5      nT" U 5      nTR                  X5        g r   r   r4  s      r   r   =TestArrayReductions.test_min_max_complex_basic.<locals>.checki  #    !!9Ah''6r   rS  r   (   r   rA  r   r   )rR   rZ   r   r   rh  r  r   rL  ri  r   
complex128r}  )
r   pyfuncsr   rc  rd  r   _r   r   r   s
   `       @@r   test_min_max_complex_basic.TestArrayReductions.test_min_max_complex_basicc  s    "$44F&v.E7
 ;;sB+DBxD!H!8Dby A!H2Y##D)##D)**BLL"--+HI"9$""1ahhuo&  r   c                   ^ ^^ [         [        4nU H  m[        SS9" T5      mUUU 4S jn[        R                  " SSS5      nUS   US S& [        R
                  US	S
& US-  n[        R
                  USS& X4S-  -
  nU" U5        [        S5       HP  nT R                  R                  U5        T R                  R                  U5        X4S-  -
  nUS   US S& U" U5        MR     M     g )NTr   c                 H   > T" U 5      nT" U 5      nTR                  X5        g r   r   r4  s      r   r   CTestArrayReductions.test_nanmin_nanmax_complex_basic.<locals>.check  rt  r   rS  r   ru  r   rA  r   r8  r   r9  r   r   )	rq   rt   r   r   rh  r   r  r   rL  )	r   rw  r   rc  rd  r   rx  r   r   s	   `      @@r    test_nanmin_nanmax_complex_basic4TestArrayReductions.test_nanmin_nanmax_complex_basic|  s    ,F&v.E7
 ;;sB+DBxD!HD1I!8DD2Jby A!H2Y##D)##D)"9$""1a ! r   c                    ^ ^^ [         [        4nUUU 4S jnS nU H(  m[        SS9" T5      mU" 5        H  nU" U5        M     M*     g )Nc                 H   > T" U 5      nT" U 5      nTR                  X5        g r   r   r4  s      r   r   FTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.check  r6  r   c               3   $  #    / SQv   Sv   [         R                  " S5      v   Sv   Sv   Sv   [         R                  SSS4v   [         R                  [         R                  [         R                  * /v   [         R                  S	4S
/v   g 7f)N)r   re  rA  r   ))rS  rA  i)r      ir   rf  gA`"	@Fgr   g?)ggffffff!@)r   rp  r   r   rA  r   r   rB  MTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.a_variations  so     00((1+JKK665$,,66266BFF7++FFC=+..s   BBTr   )rq   rt   r   )r   rw  r   rB  r   r   r   s   `    @@r   #test_nanmin_nanmax_non_array_inputs7TestArrayReductions.test_nanmin_nanmax_non_array_inputs  sE    ,	3
		/ F&v.E!^a $ r   c                    [         R                  " / SQ5      n[         R                  " S5      R                  SS5      nUS==   S-  ss'   [         R                  " S5      R                  SSSS	5      S
-   nUS==   S-  ss'   US==   S-  ss'   XU4 H  n[	        [        UR                  5      5      [        UR                  5       Vs/ s H  oUS-   * PM
     sn-   nU Vs/ s H	  nU4S jPM     nnU V	s/ s H  n	[        SS9" U	5      PM     n
n	U
 H*  nU R                  UR                  U5      U" U5      5        M,     M     g s  snf s  snf s  sn	f )Nr      r   rA  re  r   r   r   r   r  x   rA  r   r   r   r   r   r   r   r   r   r   3   r   c                 *    [         R                  " XS9$ Naxisrj   r   _axiss     r   <lambda>?TestArrayReductions.test_argmax_axis_1d_2d_4d.<locals>.<lambda>      bii&>r   Tr   
r   rp  r   r   listr  r  r   r   py_funcr   arr1darr2darr4dr   r  axesr  py_functionsr   c_functionsr   s               r   test_argmax_axis_1d_2d_4d-TestArrayReductions.test_argmax_axis_1d_2d_4d  J   '		!$$Q*c
c
		#&&q!Q2R7jS jR%(Cchh( %chh, /1A#, D
 ! D !%>   
 :F9EvT"6*   %''c(:E#JG % ),   E
$E:Ec                   ^ ^ [         R                  " S5      n[         R                  " S5      R                  SS5      n[        SS9S 5       mUU 4S jnU" US5        U" US	5        U" US
5        U" US5        T R	                  5         g )Nre  r   r   Tr   c                 .    [         R                  " X5      $ r   rj   r   r  s     r   	jitargmaxDTestArrayReductions.test_argmax_axis_out_of_range.<locals>.jitargmax      99S''r   c                    > TR                  [        S5         TR                  X5        S S S 5        TR                  [        S5         T" X5        S S S 5        g ! , (       d  f       N6= f! , (       d  f       g = fNzaxis.*out of boundsassertRaisesRegexr  r  )r   r  r  r   s     r   assert_raisesHTestArrayReductions.test_argmax_axis_out_of_range.<locals>.assert_raises  [    ''
4IJ!!#, K''
4IJ#$ KJ KJJJ   A	A+
A(+
A9r   r   r   r   r   r  )r   r  r  r  r  s   `   @r   test_argmax_axis_out_of_range1TestArrayReductions.test_argmax_axis_out_of_range  s|    		!		!$$Q*	d		( 
	(	% 	eQeR eR eQ!r   c                     [         R                  " S5      n[        SS9S 5       nU R                  5        nU" US5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nre  Tr   c                 .    [         R                  " X5      $ r   rj   r  s     r   r  GTestArrayReductions.test_argmax_axis_must_be_integer.<locals>.jitargmax  r  r   fooaxis must be an integerr   r   r   r  r  r  r  )r   r   r  r  s       r    test_argmax_axis_must_be_integer4TestArrayReductions.test_argmax_axis_must_be_integer  f    iil	d		( 
	( ##%c5! &/Q[[1AB &%   
A..
A<c                    ^ [         R                  " S5      R                  SS5      mU4S jnU R                  U" T5      [	        SS9" U5      " T5      5        g )Nre  r   r   c                 "   > TR                  SS9$ Nr   r  rf   r   r  s    r   rg   ;TestArrayReductions.test_argmax_method_axis.<locals>.argmax      <<Q<''r   Tr   r   r   r   r   r   r   rg   r  s     @r   test_argmax_method_axis+TestArrayReductions.test_argmax_method_axis  K    		!$$Q*	( 	u #T 26 :5 A	Cr   c                    ^ [         R                  " S[         R                  S9R                  SS5      mU4S jnU R	                  U" T5      [        SS9" U5      " T5      5        g )Nre  r   r   r   c                 "   > TR                  SS9$ r  rf   r  s    r   rg   ;TestArrayReductions.test_argmax_return_type.<locals>.argmax  r  r   Tr   r   r   uint8r   r   r   r  s     @r   test_argmax_return_type+TestArrayReductions.test_argmax_return_type  R    		!288,44Q:	( 	u #T 26 :5 A	Cr   c                    [         R                  " / SQ5      n[         R                  " S5      R                  SS5      nUS==   S-  ss'   [         R                  " S5      R                  SSSS	5      S
-   nUS==   S-  ss'   US==   S-  ss'   XU4 H  n[	        [        UR                  5      5      [        UR                  5       Vs/ s H  oUS-   * PM
     sn-   nU Vs/ s H	  nU4S jPM     nnU V	s/ s H  n	[        SS9" U	5      PM     n
n	U
 H*  nU R                  UR                  U5      U" U5      5        M,     M     g s  snf s  snf s  sn	f )Nr  re  r   r   r  r  r  rA  r   r   r  r  r  r   c                 *    [         R                  " XS9$ r  rc   r  s     r   r  ?TestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<lambda>  r  r   Tr   r  r  s               r   test_argmin_axis_1d_2d_4d-TestArrayReductions.test_argmin_axis_1d_2d_4d  r  r  c                   ^ ^ [         R                  " S5      n[         R                  " S5      R                  SS5      n[        SS9S 5       mUU 4S jnU" US5        U" US	5        U" US
5        U" US5        T R	                  5         g )Nre  r   r   Tr   c                 .    [         R                  " X5      $ r   rc   r  s     r   	jitargminDTestArrayReductions.test_argmin_axis_out_of_range.<locals>.jitargmin  r  r   c                    > TR                  [        S5         TR                  X5        S S S 5        TR                  [        S5         T" X5        S S S 5        g ! , (       d  f       N6= f! , (       d  f       g = fr  r  )r   r  r  r   s     r   r  HTestArrayReductions.test_argmin_axis_out_of_range.<locals>.assert_raises  r  r  r   r  r  r  )r   r  r  r  r  s   `   @r   test_argmin_axis_out_of_range1TestArrayReductions.test_argmin_axis_out_of_range  s~    		!		!$$Q*	d		( 
	(	% 	eQeR eR eQ 	!r   c                     [         R                  " S5      n[        SS9S 5       nU R                  5        nU" US5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nre  Tr   c                 .    [         R                  " X5      $ r   rc   r  s     r   r  GTestArrayReductions.test_argmin_axis_must_be_integer.<locals>.jitargmin)  r  r   r  r  r  )r   r   r  r  s       r    test_argmin_axis_must_be_integer4TestArrayReductions.test_argmin_axis_must_be_integer&  r  r  c                    ^ [         R                  " S5      R                  SS5      mU4S jnU R                  U" T5      [	        SS9" U5      " T5      5        g )Nre  r   r   c                 "   > TR                  SS9$ r  r_   r  s    r   r`   ;TestArrayReductions.test_argmin_method_axis.<locals>.argmin4  r  r   Tr   r  r   r`   r  s     @r   test_argmin_method_axis+TestArrayReductions.test_argmin_method_axis1  r  r   c                    ^ [         R                  " S[         R                  S9R                  SS5      mU4S jnU R	                  U" T5      [        SS9" U5      " T5      5        g )Nre  r   r   r   c                 "   > TR                  SS9$ r  r_   r  s    r   r`   ;TestArrayReductions.test_argmin_return_type.<locals>.argmin>  r  r   Tr   r  r  s     @r   test_argmin_return_type+TestArrayReductions.test_argmin_return_type:  r  r   c                   ^  [         [        [        [        [        [
        [        [        [        [        [        [        [        [        [        [        [         ["        [$        [&        [(        [*        [,        /n[.        [0        [2        [4        /nU[6        [8        [:        /-  nU[<        /-  n[>        R@                  [>        RB                  [>        RD                  [>        RF                  /nU 4S jnU" US S U5        U" X15        g )Nc                   >^ U  Hw  n[        U5      n[        X5       HZ  u  mnSnUR                  TR                  UR                  R
                  UR                  5      nTUU4U4S jjn[        TXV5        M\     My     g )Nztest_{0}_{1}_{2}dc                    > SnSTR                   ;   a  [        R                  " U5      (       a  Sn[        X5      u  pVU R	                  XVUSUS9  g )Nr   r9   r   single)rn  r	  ulps)r
  r   iscomplexobjr   r   )r   redFunc	testArraytestNamer  r  r  red_funcs          r   new_test_function]TestArrayReductions.install_generated_tests.<locals>.install_tests.<locals>.new_test_functionl  sW      !!X%6%66OOI66 $%D#27#F//h5=D 0 Jr   )r   r   formatr
  r   namer  setattr)	dtypesfuncsdttest_arraysr   	test_namer  r  clss	          @r   install_testsBTestArrayReductions.install_generated_tests.<locals>.install_testsa  s~    .r2,3E,G(Hj 3I ) 0 01B1B1;1A1A1F1F1;!BI 9A4>3<J C>+ -H 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_tests+TestArrayReductions.install_generated_testsD  s    
 %&6%'8%'8$&6$&6$&6$&6$&6%z$&6''  #/0C".0C"E 	M<FFM?*((BJJ",,G	?8 	nSb)+AB 	n6r   rA  )r  )F)^r
  
__module____qualname____firstlineno____doc__r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r  r   r#  r'  r*  r-  r0  rG  staticmethodrM  rS  rw  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-  r0  rF  rI  rL  rV  r   rY  rk  ro  ry  r~  r  r  r  r  r  r  r  r  r  r  r  classmethodr  __static_attributes____classcell__)r   s   @r   r   r      s   4 %.  %. "./=...11112121@2  4?;B,\K4K411//@21;=	/,3-4*&;>HJMI<;;9400**--4*-+!F43$L 	/ 	/@-&'242H."*	CCCH.",	CCC ;7 ;7r   r   c                   N    \ rS rSr\R
                  " S5      rS r\S 5       r	Sr
g)TestArrayReductionsExceptionsi  r   c                 p   [        SS9" U5      nU R                  [        5         U" U R                  5        S S S 5        U R                  [        5       nU" U R                  5        S S S 5        U R                  U[        WR                  5      5        g ! , (       d  f       Nd= f! , (       d  f       NE= f)NTr   )r   r  BaseException	zero_sizer  r  r  r  )r   r   rn  r   r  s        r   check_exception-TestArrayReductionsExceptions.check_exception  s|    T"6*}-4>>" . z*a$..! +c3q{{+, .- +*s   BB'
B$'
B5c                    [        5       nSnSn[        [        [        [        4 H  nX!U'   M	     [
        [
        [        [        4 H  nX1U'   M	     SnUR                  5        Ho  u  pgUR                  UR                  5      nUR                  UR                  5      n	U	R                  SS5      R                  SS5      n	Xi4S jn
[        XU
5        Mq     g )Nz'attempt to get {0} of an empty sequencez*zero-size array to reduction operation {0}ztest_zero_size_array_{0}array_ _globalc                 &    U R                  X5        g r   )r  )r   funcmessages      r   test_fn6TestArrayReductionsExceptions.install.<locals>.test_fn  s    $$T3r   )dictrh   rk   ra   rd   rX   rP   itemsr   r
  r8  r  )r  	fn_to_msg	empty_seqop_no_identrv  name_templatefnrn  r  lmsgr&  s              r   install%TestArrayReductionsExceptions.install  s     F	=	 3\%'A$aL' Y	9=A&aL > 3 (GB%,,R[[9I::bkk*D<<,44YrBD#% 4 CG, )r   rA  N)r
  r  r  r  r   r   r  r  r  r0  r  rA  r   r   r  r    s*     		!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  r0  r
  mainrA  r   r   <module>r:     sa   <  # # 0 O O !$""(&A7/8 A7H  + + -%-OX %-N  % % ' zMMO r   