
    "
3jL                        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    [/home/wildlama/miniconda3/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                   z  ^  \ rS rSrSrU 4S jrS rS r\4S jr	S r
S 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 rS rS r S r!S r"\#S 5       r$S  r%S! r&S_S" jr'S# r(S$ r)S% r*S& r+S' r,S( r-S) r.S* r/S+ r0S, r1S- r2S. r3S/ r4S0 r5S1 r6S2 r7S3 r8S`S4 jr9S5 r:S6 r;S7 r<S8 r=S9 r>S: r?S; r@S< rAS= rBS> rCS? rDS@ rESA rFSB rGSC rHSD rISE rJSF rKSG rLSH rMSI rNSJ rOSK rPSL rQ\RSM 5       rSSN rTSO rUSP rVSQ rWSR rXSS rYST rZSU r[SV r\SW r]SX r^SY r_SZ r`S[ raS\ rb\cS] 5       rdS^reU =rf$ )a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        ##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                 n  ^ ^^^ [        SS9" T5      mUUUU 4S jn[        R                  " S5      nU" U5        [        R                  " S5      nU" U5        [        R                  " S5      nU" U5        [        R                  " S5      nU" U5        [        R                  " S5      nU" U5        [        R                  " S	5      nU" U5        [        R                  " [        R
                  5      nU" U5        [        R                  " [        R
                  * 5      nU" U5        [        R                  " S
5      nU" U5        [        R                  " S5      nU" U5        [        R                  " S5      nU" U5        T R                  5        nT" S5        S S S 5        g ! , (       d  f       g = f)NTr   c                 F   > TR                   " T" U 5      T" U 5      40 TD6  g r   r   r   s    r   r   5TestArrayReductions.check_scalar_basic.<locals>.check   r   r   r   r   g      5@g      5   ir   Fstring)r   r   r   r   int32r   r   assertTypingError)r   r   r   r   r   er   s   ```   @r   check_scalar_basic&TestArrayReductions.check_scalar_basic   s3   T"6*	G 	G jjoc
jjc
jjc
jjc
hhrlc
hhsmc
 jj c
jj"&&!c
jjc
 hhtnc
hhuoc
 ##%(O &%%   	F&&
F4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                   ^ ^ [        SS9" [        5      mUU 4S jnU" [        R                  " / SQ5      5        U" [        R                  " / SQ5      5        U" [        R                  " / SQ5      5        U" [        R                  " / SQ5      5        T R	                  5        nT" S5        S S S 5        g ! , (       d  f       g = f)	NTr   c                 N   > [        U 5      nT" U 5      nTR                  X!5        g r   )r   r   argexpectedgotr   r   s      r   r   1TestArrayReductions.test_array_all.<locals>.check  #     ~H*C##C2r   TTTTFTr   r   r   r   r   r   hello)r   r   r   arrayr   r   r   r   r   s   `  @r   test_array_all"TestArrayReductions.test_array_all  s    T"9-	3 	bhh)*+bhh*+,bhh'(bhh'(##%'N &%%   %	B77
Cc                 
  ^ ^ [        SS9" [        5      mUU 4S jnU" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R
                  5        U" [        R                  5        U" [        R                  * 5        U" S5        U" [        R                  " / SQ5      5        U" [        R                  " / S	Q5      5        U" [        R                  " / S
Q5      5        U" [        R                  " / SQ5      5        T R                  5        nT" / SQ5        S S S 5        g ! , (       d  f       g = f)NTr   c                 N   > [        U 5      nT" U 5      nTR                  X!5        g r   )r   r   r  s      r   r   .TestArrayReductions.test_np_all.<locals>.check)  $    ',H*C##C2r   r   皙?Fr   r  r  r  r  r   r   r   )	r   r   r   r   r   r   r   r  r   r  s   `  @r   test_np_allTestArrayReductions.test_np_all&      T"#34	3 	bjjobjjobhhtnbhhuo 	bffbffrvvgd 	bhh)*+bhh*+,bhh'(bhh'(##%'N &%%    E44
F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>.checkE  r   r   )r   r   r   r   r   r   r   r   r   r   r  r  s   ``  @r   test_any_basic"TestArrayReductions.test_any_basicC  s    T"6*	= jj./c
uAc
uAc
Ac
kk&!c
c$B$ir   c                   ^ ^ [        SS9" [        5      mUU 4S jnU" [        R                  " / SQ5      5        U" [        R                  " / SQ5      5        U" [        R                  " / SQ5      5        U" [        R                  " / SQ5      5        T R	                  5        nT" S5        S S S 5        g ! , (       d  f       g = f)	NTr   c                 N   > [        U 5      nT" U 5      nTR                  X!5        g r   )r   r   r  s      r   r   1TestArrayReductions.test_array_any.<locals>.checkV  r  r   r  r  r  r  r  )r   r   r   r  r   r  s   `  @r   test_array_any"TestArrayReductions.test_array_anyT  s    T"9-	3 	bhh)*+bhh*+,bhh'(bhh'(##%'N &%%r  c                 
  ^ ^ [        SS9" [        5      mUU 4S jnU" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R
                  5        U" [        R                  5        U" [        R                  * 5        U" S5        U" [        R                  " / SQ5      5        U" [        R                  " / S	Q5      5        U" [        R                  " / S
Q5      5        U" [        R                  " / SQ5      5        T R                  5        nT" / SQ5        S S S 5        g ! , (       d  f       g = f)NTr   c                 N   > [        U 5      nT" U 5      nTR                  X!5        g r   )r   r   r  s      r   r   .TestArrayReductions.test_np_any.<locals>.checkg  r  r   r   r  Fr   r  r  r  r  r  )	r   r   r   r   r   r   r   r  r   r  s   `  @r   test_np_anyTestArrayReductions.test_np_anyd  r   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   r2  s    r   test_mean_basic#TestArrayReductions.test_mean_basic  s    "":.r   c                 n  ^ ^ [        SS9" [        5      mUU 4S jnU" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R
                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S	5      5        U" [        R                  " S
5      5        U" [        R                  " S5      5        U" [        R                  5        U" [        R                  5        U" [        R                  * 5        U" S5        U" S5        U" S5        U" S5        U" S5        T R                  5          T" S5        S S S 5        g ! , (       d  f       g = f)NTr   c                 N   > [        U 5      nT" U 5      nTR                  X!5        g r   )rC   r   r  s      r   r   6TestArrayReductions.test_np_mean_scalar.<locals>.check  $    (-H*C##C2r   r   r   Fg      ?g      y      @        y     N@     R@r   r   r   gӋ5>g>dпztest String)r   rC   r   r   int64uint32r   r   r   r   
complex128r   r   r   r   r   r   s   ` @r   test_np_mean_scalar'TestArrayReductions.test_np_mean_scalar  s   T"#45	3 	bhhqkbhhrlbiilbhhtnbhhuo 	bjjbjj 	bll4 !bmmF#$ 	bffbffrvvgdc
aih ##%-  &%%r   c                 ,    U R                  [        SS9  g Ndouble)prec)r   rF   r2  s    r   test_var_basic"TestArrayReductions.test_var_basic  s    ""98"<r   c                 .    U R                  [        5        g r   )r   rK   r2  s    r   test_std_basic"TestArrayReductions.test_std_basic  r5  r   c                 X    U R                  [        5        U R                  [        5        g r   )r   rR   r   rP   r2  s    r   test_min_basic"TestArrayReductions.test_min_basic  s     01""9-r   c                 X    U R                  [        5        U R                  [        5        g r   )r   rU   r   r2  s    r   test_amin_basic#TestArrayReductions.test_amin_basic  s    
+"":.r   c                 X    U R                  [        5        U R                  [        5        g r   )r   rX   r   rZ   r2  s    r   test_max_basic"TestArrayReductions.test_max_basic  s    ""9- 01r   c                 X    U R                  [        5        U R                  [        5        g r   )r   r]   r   r2  s    r   test_amax_basic#TestArrayReductions.test_amax_basic  s    "":.
+r   c                 .    U R                  [        5        g r   )r   ra   r2  s    r   test_argmin_basic%TestArrayReductions.test_argmin_basic      ""<0r   c                 .    U R                  [        5        g r   )r   rh   r2  s    r   test_argmax_basic%TestArrayReductions.test_argmax_basic  r\  r   c                 .    U R                  [        5        g r   )r   rq   r2  s    r   test_nanmin_basic%TestArrayReductions.test_nanmin_basic  r\  r   c                 .    U R                  [        5        g r   )r   rt   r2  s    r   test_nanmax_basic%TestArrayReductions.test_nanmax_basic  r\  r   c                 .    U R                  [        5        g r   )r   rw   r2  s    r   test_nanmean_basic&TestArrayReductions.test_nanmean_basic      ""=1r   c                 .    U R                  [        5        g r   )r   rz   r2  s    r   test_nansum_basic%TestArrayReductions.test_nansum_basic  r\  r   c                 .    U R                  [        5        g r   )r   r}   r2  s    r   test_nanprod_basic&TestArrayReductions.test_nanprod_basic  ri  r   c                 .    U R                  [        5        g r   )r   r   r2  s    r   test_nanstd_basic%TestArrayReductions.test_nanstd_basic  r\  r   c                 ,    U R                  [        SS9  g rE  )r   r   r2  s    r   test_nanvar_basic%TestArrayReductions.test_nanvar_basic  s    ""<h"?r   c                 B  ^ ^^^ [        SS9" T5      mUUU 4S jmT" [        R                  " / 5      5        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   r
  r  r   r   r   s      r   r   5TestArrayReductions.check_median_basic.<locals>.check  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_odd  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   r   array_variationsr  r   r  r   r   s   ``    @@r   check_median_basic&TestArrayReductions.check_median_basic  s}    T"6*	3 	bhhrl	
 ""))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         @r  r   r   )copyr   r   shuffler   r   s    r   _array_variations%TestArrayReductions._array_variations  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   r  r  r   )r  r   r   r  r   s    r   
variations9TestArrayReductions.test_median_basic.<locals>.variations  sM     G$B$AGIIa GA!eqjMGs   AA)rn   r  )r   r   r  s      r   test_median_basic%TestArrayReductions.test_median_basic  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   r  r
  r  finiter   r   r   s	         r   r   @TestArrayReductions.check_percentile_and_quantile.<locals>.check#  d    a|H+C [[*Fvvf~~''w'G''X5E07 ( 9r      r   r      r   r   r   )r   r   r   r  r            ?r   r  g      ?r   r  )      ?r  r   )g      @      @g      &@ih     )r  r  r   )r  r  g      ?)r   r  r  r   )r   r   r  r   )g-q=)r   r   randnr   r   linspacer   r   choiceflatr  flattentolisttupler   testingassert_equalr  shape
assertTrueisscalar)	r   r   q_upper_boundr   r   r   
not_finitexr   s	   ``      @r   check_percentile_and_quantile1TestArrayReductions.check_percentile_and_quantile   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 r  r  r  s	         r   r   >TestArrayReductions.check_percentile_edge_cases.<locals>.checkd  r  r   c                    > T" X5      R                  [        R                  5      nT" X5      nTR                  XCUS9  g r  )astyper   r   r   )r   r   r  r
  r  r   r   r   s        r   convert_to_float_and_checkSTestArrayReductions.check_percentile_edge_cases.<locals>.convert_to_float_and_checkp  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   r  )elementsicombs      r   _array_combinationsLTestArrayReductions.check_percentile_edge_cases.<locals>._array_combinationsu  s3     1b\9(FD((4.( G "s   ?Ar   皙?r  r   r   r   r   )g+=)r   r   r   r   r  )r   r   r  r   r  r  r   element_poolr   _checkr   s   ``        @r   check_percentile_edge_cases/TestArrayReductions.check_percentile_edge_casesa  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   r   assertInr  r  r   r   r  r   r   r   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   r  )r   r  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   r  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   r  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   r  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   r  r  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   r   r   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:   r  assert_allcloser9   r  s       r   test_array_prod_float_1d,TestArrayReductions.test_array_prod_float_1d  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=   r  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                 &  ^ ^ T R                  [        5        [        SS9" [        5      mUU 4S jnU" [        R                  " S5      5        U" [        R
                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        g )	NTr   c                 N   > [        U 5      nT" U 5      nTR                  X!5        g r   )r=   r   r  s      r   r   6TestArrayReductions.test_np_prod_scalar.<locals>.check  r<  r   r   r   r  r   y                )r   r=   r   r   int8uint8int16uint16r   r?  r   r@  rA  s   ` @r   test_np_prod_scalar'TestArrayReductions.test_np_prod_scalar  s     12T"#45	3 	bggajbhhqkbhhqkbiilbhhqkbiil 	bll2bmmB 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   r  r  )r   r   )r   r   r  r   r   r  r   )r   r   r   r
  r  s        r   check_cumulative$TestArrayReductions.check_cumulative  s    ii2RXX.'4.kk!Q"'4.kk&!'4.r   c                 .    U R                  [        5        g r   )r  r*   r2  s    r   test_array_cumsum%TestArrayReductions.test_array_cumsum$  s    l+r   c                 .    U R                  [        5        g r   )r  r-   r2  s    r   test_array_cumsum_global,TestArrayReductions.test_array_cumsum_global'  s    12r   c                 .    U R                  [        5        g r   )r  r!   r2  s    r   test_array_cumprod&TestArrayReductions.test_array_cumprod*  s    m,r   c                 .    U R                  [        5        g r   )r  r#   r2  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            r>  uint64N)r   r   r  r   r   )r   r   is_prodn_itemsr   nprnbrs          r   check_aggregation_magnitude/TestArrayReductions.check_aggregation_magnitude0  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   r2  s    r   test_sum_magnitude&TestArrayReductions.test_sum_magnitudeC      ((3(()9:r   c                 X    U R                  [        5        U R                  [        5        g r   )r.  r*   r-   r2  s    r   test_cumsum_magnitude)TestArrayReductions.test_cumsum_magnitudeG  s    ((6(()<=r   c                 ,    U R                  [        SS9  g NT)r*  )r.  r1   r2  s    r   test_nancumsum_magnitude,TestArrayReductions.test_nancumsum_magnitudeK  s    (($(Gr   c                 T    U R                  [        SS9  U R                  [        SS9  g r8  )r.  r:   r=   r2  s    r   test_prod_magnitude'TestArrayReductions.test_prod_magnitudeN  s)    ((T(B(():D(Ir   c                 T    U R                  [        SS9  U R                  [        SS9  g r8  )r.  r!   r#   r2  s    r   test_cumprod_magnitude*TestArrayReductions.test_cumprod_magnitudeR  s)    (((E(()=t(Lr   c                 ,    U R                  [        SS9  g r8  )r.  r'   r2  s    r   test_nancumprod_magnitude-TestArrayReductions.test_nancumprod_magnitudeV  s    (()94(Hr   c                 X    U R                  [        5        U R                  [        5        g r   )r.  rA   rC   r2  s    r   test_mean_magnitude'TestArrayReductions.test_mean_magnitudeY  s    ((4(():;r   c                 X    U R                  [        5        U R                  [        5        g r   )r.  rF   rH   r2  s    r   test_var_magnitude&TestArrayReductions.test_var_magnitude]  r3  r   c                 X    U R                  [        5        U R                  [        5        g r   )r.  rK   rM   r2  s    r   test_std_magnitude&TestArrayReductions.test_std_magnitudea  r3  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   r  r   r   r  __name__r  lenfillr   )r   r   r   r  r   r  s         r   _do_check_nptimedelta)TestArrayReductions._do_check_nptimedeltae  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  rR  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   rU  rV  s      r   check_nptimedelta%TestArrayReductions.check_nptimedelta  rY  r   c                 X    U R                  [        5        U R                  [        5        g r   )rW  rP   r[  r2  s    r   test_min_npdatetime'TestArrayReductions.test_min_npdatetime      i(y)r   c                 X    U R                  [        5        U R                  [        5        g r   )rW  rX   r[  r2  s    r   test_max_npdatetime'TestArrayReductions.test_max_npdatetime  r`  r   c                 X    U R                  [        5        U R                  [        5        g r   )rW  ra   r[  r2  s    r   test_argmin_npdatetime*TestArrayReductions.test_argmin_npdatetime      l+|,r   c                 X    U R                  [        5        U R                  [        5        g r   )rW  rh   r[  r2  s    r   test_argmax_npdatetime*TestArrayReductions.test_argmax_npdatetime  rg  r   c                 .    U R                  [        5        g r   )r[  rn   r2  s    r   test_median_npdatetime*TestArrayReductions.test_median_npdatetime  s    23r   c                 .    U R                  [        5        g r   )r[  r5   r2  s    r   test_sum_npdatetime'TestArrayReductions.test_sum_npdatetime  s    y)r   c                 .    U R                  [        5        g r   )r[  r*   r2  s    r   test_cumsum_npdatetime*TestArrayReductions.test_cumsum_npdatetime  s    |,r   c                 .    U R                  [        5        g r   )r[  rA   r2  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   r
  r  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   r  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   <   r  r   )TTTFr   r   r  gfffff@@r   )r   r  r   r  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   r  r   r  r{  r  rz  r   r   r   )r   r  r   r   r  fullr   r   )r   r   r   r  r  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'   r  r2  s    r   test_nancumprod_basic)TestArrayReductions.test_nancumprod_basic  s     ./!!"23r   c                 X    U R                  [        5        U R                  [        5        g r   )r  r1   r  r2  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   ry  s      r   r   1TestArrayReductions.test_ptp_basic.<locals>.check  r{  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   )r  r   r   )r   )r  gffffffr  r  r  r   r   r   r  g      @y      ?      @))gffffff@r   gffffff)g333333@g@g@r   r   )r   r   r  r   r   r  r  r   r  r   RandomStater  r   s    r   r  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   r  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   r
  r  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   ry  s      r   r   3TestArrayReductions.test_ptp_complex.<locals>.check  r{  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      $ )
Nr     rz  r  r   r{  r   r   )r   r  r   r   )real_nanimag_nanrealimags       r   
make_array8TestArrayReductions.test_ptp_complex.<locals>.make_array	  sf    ;;r1b)DFFQq	;;r1b)DVVQr
29$--a33r   r   )repeatr  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_complex$TestArrayReductions.test_ptp_complex   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   r  r  r  r  r  r  )r   r   r   r   msgs        r   test_ptp_exceptions'TestArrayReductions.test_ptp_exceptions   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   ry  s      r   r   =TestArrayReductions.test_min_max_complex_basic.<locals>.check9  #    !!9Ah''6r   r  r   (   r   r  r   r   )rR   rZ   r   r   r  r  r   r  r  r   r@  r  )
r   pyfuncsr   r  r  r   _r   r   r   s
   `       @@r   test_min_max_complex_basic.TestArrayReductions.test_min_max_complex_basic3  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   ry  s      r   r   CTestArrayReductions.test_nanmin_nanmax_complex_basic.<locals>.checkR  r  r   r  r   r  r   r  r   rz  r   r{  r   r   )	rq   rt   r   r   r  r   r  r   r  )	r   r  r   r  r  r   r  r   r   s	   `      @@r    test_nanmin_nanmax_complex_basic4TestArrayReductions.test_nanmin_nanmax_complex_basicL  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   ry  s      r   r   FTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.checki  r{  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   r  r  r   ))r  r  i)r      ir   r  gA`"	@Fgr   g?)ggffffff!@)r   r  r   r   r  r   r   r  MTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.a_variationsn  so     00((1+JKK665$,,66266BFF7++FFC=+..s   BBTr   )rq   rt   r   )r   r  r   r  r   r   r   s   `    @@r   #test_nanmin_nanmax_non_array_inputs7TestArrayReductions.test_nanmin_nanmax_non_array_inputsf  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   r  r  r   r   r   r   r  x   r  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   r  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 )Nr  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  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)Nr  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 )Nr  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 )Nr  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   r  r   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  r  r   r   r  r  r  r  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 )Nr  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)Nr  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 )Nr  r   r   c                 "   > TR                  SS9$ r	  r_   r
  s    r   r`   ;TestArrayReductions.test_argmin_method_axis.<locals>.argmin  r  r   Tr   r  r   r`   r  s     @r   test_argmin_method_axis+TestArrayReductions.test_argmin_method_axis  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 )Nr  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)r  rG  ulps)rO  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_function<  sW      !!X%6%66OOI66 $%D#27#F//h5=D 0 Jr   )r   r   formatrO  r   namer   setattr)	dtypesfuncsdttest_arraysr   	test_namer@  r?  clss	          @r   install_testsBTestArrayReductions.install_generated_tests.<locals>.install_tests1  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   )rJ  reduction_funcsreduction_funcs_rspacedtypes_to_testrK  s   `    r   install_generated_tests+TestArrayReductions.install_generated_tests  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   r  )r  )F)grO  
__module____qualname____firstlineno____doc__r   r   r   r   r  r  r  r   r%  r*  r/  r3  r7  rB  rH  rK  rN  rQ  rT  rW  rZ  r^  ra  rd  rg  rk  rn  rq  rt  r  staticmethodr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r.  r1  r5  r9  r<  r?  rB  rE  rH  rK  rR  rW  r[  r^  rb  re  ri  rl  ro  rr  ru  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r$  r)  r/  r4  classmethodrP  __static_attributes____classcell__)r   s   @r   r   r      s   4"H %. ": %. " :./#!J=../2,11112121@8  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)TestArrayReductionsExceptionsiV  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   r  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_fnx  s    $$T3r   )dictrh   rk   ra   rd   rX   rP   itemsrB  rO  r}  rD  )rJ  	fn_to_msg	empty_seqop_no_identr  name_templatefnr  rI  lmsgrh  s              r   install%TestArrayReductionsExceptions.installe  s     F	=	 3\%'A$aL' Y	9=A&aL > 3 (GB%,,R[[9I::bkk*D<<,44YrBD#% 4 CG, )r   r  N)rO  rR  rS  rT  r   r   r^  r_  rW  rr  rX  r  r   r   r[  r[  V  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   rP  r[  rr  rO  mainr  r   r   <module>r|     sa   <  # # 0 O O !$""(&Q7/8 Q7h$  + + -%-OX %-N  % % ' zMMO r   