
    xKg!                        d dl mZmZ d dlZd dlmZmZmZ d dl	m
Z
 d dlmZmZmZmZ d dlZd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1d' Z2d( Z3d) Z4d* Z5d+ Z6d, Z7d- Z8d. Z9d/ Z:d0 Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@ G d6 d7ee      ZAeAj                           G d8 d9ee      ZCeCj                          eEd:k(  r ej                          yy);    )productcombinations_with_replacementN)jitnjittypeof)numpy_version)TestCaseMemoryLeakMixintagskip_if_numpy_2c                 "    | j                         S N)allarrs    e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_array_reductions.py	array_allr          779    c                 ,    t        j                  |       S r   )npr   r   s    r   array_all_globalr          66#;r   c                 "    | j                         S r   )anyr   s    r   	array_anyr      r   r   c                 ,    t        j                  |       S r   )r   r   r   s    r   array_any_globalr      r   r   c                 "    | j                         S r   )cumprodr   s    r   array_cumprodr!      s    ;;=r   c                 ,    t        j                  |       S r   )r   r    r   s    r   array_cumprod_globalr#          ::c?r   c                 ,    t        j                  |       S r   )r   
nancumprodr   s    r   array_nancumprodr'      s    ==r   c                 "    | j                         S r   )cumsumr   s    r   array_cumsumr*           ::<r   c                 ,    t        j                  |       S r   )r   r)   r   s    r   array_cumsum_globalr-   #       99S>r   c                 ,    t        j                  |       S r   )r   	nancumsumr   s    r   array_nancumsumr1   &       <<r   c                 "    | j                         S r   )sumr   s    r   	array_sumr5   )   r   r   c                 ,    t        j                  |       S r   )r   r4   r   s    r   array_sum_globalr7   ,   r   r   c                 "    | j                         S r   )prodr   s    r   
array_prodr:   /       88:r   c                 ,    t        j                  |       S r   )r   r9   r   s    r   array_prod_globalr=   2       773<r   c                 "    | j                         S r   )meanr   s    r   
array_meanrA   5   r;   r   c                 ,    t        j                  |       S r   )r   r@   r   s    r   array_mean_globalrC   8   r>   r   c                 "    | j                         S r   )varr   s    r   	array_varrF   ;   r   r   c                 ,    t        j                  |       S r   )r   rE   r   s    r   array_var_globalrH   >   r   r   c                 "    | j                         S r   )stdr   s    r   	array_stdrK   A   r   r   c                 ,    t        j                  |       S r   )r   rJ   r   s    r   array_std_globalrM   D   r   r   c                 "    | j                         S r   )minr   s    r   	array_minrP   G   r   r   c                 ,    t        j                  |       S r   )r   rO   r   s    r   array_min_globalrR   J   r   r   c                 ,    t        j                  |       S r   )r   aminr   s    r   
array_aminrU   M   r>   r   c                 "    | j                         S r   )maxr   s    r   	array_maxrX   P   r   r   c                 ,    t        j                  |       S r   )r   rW   r   s    r   array_max_globalrZ   S   r   r   c                 ,    t        j                  |       S r   )r   amaxr   s    r   
array_amaxr]   V   r>   r   c                 "    | j                         S r   argminr   s    r   array_argminra   Y   r+   r   c                 ,    t        j                  |       S r   r   r`   r   s    r   array_argmin_globalrd   \   r.   r   c                 "    | j                         S r   argmaxr   s    r   array_argmaxrh   _   r+   r   c                 ,    t        j                  |       S r   r   rg   r   s    r   array_argmax_globalrk   b   r.   r   c                 ,    t        j                  |       S r   )r   medianr   s    r   array_median_globalrn   e   r.   r   c                 ,    t        j                  |       S r   )r   nanminr   s    r   array_nanminrq   h   r.   r   c                 ,    t        j                  |       S r   )r   nanmaxr   s    r   array_nanmaxrt   k   r.   r   c                 ,    t        j                  |       S r   )r   nanmeanr   s    r   array_nanmeanrw   n   r$   r   c                 ,    t        j                  |       S r   )r   nansumr   s    r   array_nansumrz   q   r.   r   c                 ,    t        j                  |       S r   )r   nanprodr   s    r   array_nanprodr}   t   r$   r   c                 ,    t        j                  |       S r   )r   nanstdr   s    r   array_nanstdr   w   r.   r   c                 ,    t        j                  |       S r   )r   nanvarr   s    r   array_nanvarr   z   r.   r   c                 ,    t        j                  |       S r   )r   	nanmedianr   s    r   array_nanmedian_globalr   }   r2   r   c                 .    t        j                  | |      S r   )r   
percentiler   qs     r   array_percentile_globalr      s    ==a  r   c                 .    t        j                  | |      S r   )r   nanpercentiler   s     r   array_nanpercentile_globalr      s    C##r   c                 ,    t        j                  |       S r   )r   ptpas    r   array_ptp_globalr      s    66!9r   c                 "    | j                         S r   )r   r   s    r   	array_ptpr      s    557Nr   c                 .    t        j                  | |      S r   )r   quantiler   s     r   array_quantile_globalr      s    ;;sAr   c                 .    t        j                  | |      S r   )r   nanquantiler   s     r   array_nanquantile_globalr      s    >>#q!!r   c                       t         j                  k(  rd }n fd} |d      } |d      j                  dd      } |d      d d d   j                  dd	
      }|j                  j                  s|j                  j
                  rJ |||gS )Nc                 P    | dz  dk(  sJ t        j                  ddg| dz  z        S )N   r      )r   bool_)ns    r   factoryz!base_test_arrays.<locals>.factory   s.    q5A::88QFa1f-..r   c                 8    t        j                  |       dz   S )Ndtyper   )r   arange)r   r   s    r   r   z!base_test_arrays.<locals>.factory   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                    t        |       }| t        j                  k(  r||D cg c]  }|dz  	 c}z  }| t        j                  k(  rZg }|D ]B  }|dz  d|z  dz  z   }t        j                  |d d d         |d d d<   |j                  |       D |j                  |       |D ]&  }|j                  t        j                  |       k(  r&J  |S c c}w )Nr                 ?   r   )r   r   float32	complex64conjappendextendr   )r   
array_listr   acctmps        r   full_test_arraysr      s    !%(J 

z2z!q2vz22
 Ab&26B;&Cwws3Q3x(C!HJJsO  	#ww"((5/)))  3s   Cc                 @    t        |       } | |      } ||      }||fS r   )r   )compare_func
test_arraycfuncnumpy_resultnumba_results        r   run_comparativer      s+    E
+L$L%%r   c                   2    e Zd ZdZ fdZd ZefdZefdZ	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed        Zd Zd ZdTdZd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.dUd*Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZDd@ ZEdA ZFdB ZGeHdC        ZIdD ZJdE ZKdF ZLdG ZMdH ZNdI ZOdJ ZPdK ZQdL ZRdM ZSdN ZTdO ZUdP ZVdQ ZWdR ZXeYdS        ZZ xZ[S )VTestArrayReductionszQ
    Test array reduction methods and functions such as .sum(), .max(), etc.
    c                 h    t         t        |           t        j                  j                  d       y )N*   )superr   setUpr   randomseed)self	__class__s    r   r   zTestArrayReductions.setUp   s!    !4.0
		rr   c                 n     t        d             fd}t        j                  g d      } ||       t        j                  ddg      } ||       t        j                  g d      } ||       t        j                  g d      } ||       t        j                  g d	      } ||       t        j                  g d
      } ||       t        j                  g d      } ||       t        j                  g d      } ||       t        j                  ddg      } ||       y )NTnopythonc                 F     j                    |        |       fi  y r   assertPreciseEqual)r   r   kwargspyfuncr   s    r   checkz8TestArrayReductions.check_reduction_basic.<locals>.check   s"    #D##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_basicz)TestArrayReductions.check_reduction_basic   s    "T"6*	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                 $     t        d             fd}t        j                  ddt        d      t        d      g      } ||       d|d	<    ||       d
|d	<    ||       |j	                  d      } ||        ||d d d          y )NTr   c                 B    j                   |        |              y r   r   r   r   r   r   s    r   r   z1TestArrayReductions.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_basicz"TestArrayReductions.test_all_basic   s    "T"6*	= jj#sE%L%,?@c
Ac
Ac
kk&!c
c$B$ir   c                 :     t        d             fd}t        j                  g d      } ||       t        d      |d<    ||       t        d      |d<    ||       d|d<    ||       |j	                  d	      } ||        ||d d d
          y )NTr   c                 B    j                   |        |              y r   r   r   s    r   r   z1TestArrayReductions.test_any_basic.<locals>.check   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   s   ``  @r   test_any_basicz"TestArrayReductions.test_any_basic   s    "T"6*	= jj./c
uAc
uAc
Ac
kk&!c
c$B$ir   c                 .    | j                  t               y r   )r   r5   r   s    r   test_sum_basicz"TestArrayReductions.test_sum_basic      ""9-r   c                 .    | j                  t               y r   )r   rA   r   s    r   test_mean_basicz#TestArrayReductions.test_mean_basic  s    "":.r   c                 2    | j                  t        d       y Ndouble)prec)r   rF   r   s    r   test_var_basicz"TestArrayReductions.test_var_basic  s    ""98"<r   c                 .    | j                  t               y r   )r   rK   r   s    r   test_std_basicz"TestArrayReductions.test_std_basic  r   r   c                 .    | j                  t               y r   )r   rP   r   s    r   test_min_basicz"TestArrayReductions.test_min_basic  r   r   c                 .    | j                  t               y r   )r   rX   r   s    r   test_max_basicz"TestArrayReductions.test_max_basic  r   r   c                 .    | j                  t               y r   )r   ra   r   s    r   test_argmin_basicz%TestArrayReductions.test_argmin_basic      ""<0r   c                 .    | j                  t               y r   )r   rh   r   s    r   test_argmax_basicz%TestArrayReductions.test_argmax_basic  r  r   c                 .    | j                  t               y r   )r   rq   r   s    r   test_nanmin_basicz%TestArrayReductions.test_nanmin_basic  r  r   c                 .    | j                  t               y r   )r   rt   r   s    r   test_nanmax_basicz%TestArrayReductions.test_nanmax_basic  r  r   c                 .    | j                  t               y r   )r   rw   r   s    r   test_nanmean_basicz&TestArrayReductions.test_nanmean_basic       ""=1r   c                 .    | j                  t               y r   )r   rz   r   s    r   test_nansum_basicz%TestArrayReductions.test_nansum_basic#  r  r   c                 .    | j                  t               y r   )r   r}   r   s    r   test_nanprod_basicz&TestArrayReductions.test_nanprod_basic&  r  r   c                 .    | j                  t               y r   )r   r   r   s    r   test_nanstd_basicz%TestArrayReductions.test_nanstd_basic)  r  r   c                 2    | j                  t        d       y r   )r   r   r   s    r   test_nanvar_basicz%TestArrayReductions.test_nanvar_basic,  s    ""<h"?r   c                       t        d             fdfd} |t        j                  d      dz         D ]
  } ||        fd} |t        j                  d      dz         D ]
  } ||        y )	NTr   c                 J     |       } |       }j                  ||       y r   r   )r   expectedgotr   r   r   s      r   r   z5TestArrayReductions.check_median_basic.<locals>.check1  s%    c{H*C##C2r   c                 l     |        | j                  d      }  |         | j                         y )N)	      r   Tr   r   s    r   	check_oddz9TestArrayReductions.check_median_basic.<locals>.check_odd7  s*    !H		&!A!H!##Jr   ?   g      %@c                 l     |        | j                  d      }  |         | j                         y )N)      r!  r#  s    r   
check_evenz:TestArrayReductions.check_median_basic.<locals>.check_even@  s*    !H		'"A!H!##Jr   @   )r   r   r   )r   r   array_variationsr$  r   r)  r   r   s   ``    @@r   check_median_basicz&TestArrayReductions.check_median_basic/  sm    "T"6*	3	
 ""))B-$"67AaL 8	
 ""))B-$"67AqM 8r   c              #     K   |  | d d d   j                         } |  t        j                  j                  |        |  d| | dz  dk\  <   |  t        j                  | | dz  dk\  <   |  t        j                  | d d  |  y w)Nr         @r'  r   r   )copyr   r   shuffler   r   s    r   _array_variationsz%TestArrayReductions._array_variationsH  s~      ddGLLN
		!!a%1*!a%1*vv!s   BBc                 :    t         }d }| j                  ||       y )Nc              3      K   |  | d d d   j                         } |  t        j                  j                  |        |  d| | dz  dk\  <   |  y w)Nr   r.  r'  r   )r/  r   r   r0  r   s    r   
variationsz9TestArrayReductions.test_median_basic.<locals>.variationsZ  sP     G$B$AGIIa GAa!eqjMGs   AA)rn   r,  )r   r   r4  s      r   test_median_basicz%TestArrayReductions.test_median_basicW  s    $	 	
3r   c           	           t        d            d  fd	} j                  j                  d      j                  ddd      }t	        j
                  d|d      d d d   } |||        ||d        |||d	z          |||       t        j                  t        j                   t        j                  g} j                  j                  |d
      |j                  d d
  j                  j                  |        j                  j                  |        |||       |j                         j                         }|j                         j                         } |||        |t        |      t        |              j                  j                  g dd
      }t	        j
                  d|d      } |||       t	        j                  d      dz  }t        j                  j!                   |d      d       t        j                  j!                   ||      d       t        j                  j!                   ||d	z        d       t	        j                  d      j                  dd      }t	        j"                  d      |z  }t        j                  j!                   ||      g d       t	        j                  d      j                  dddd      }t	        j"                  d      |z  }t        j                  j!                   ||      j$                  d       t	        j"                  d      |z  }t        j                  j!                   ||      j$                  d       t	        j                  d      j                  dd      }t        j                  j!                   ||d	z        d        j'                  t	        j(                   ||d	z                     t        j                  j!                   g dd      d       t	        j"                  g d      } ||d	z  g       t        j                  j!                  |t	        j"                  g d             y )!NTr   c                      | |      } | |      }t        j                  |      }t        j                  |      rj                  |||       y j                  ||   ||   |       y N)abs_tolr   isfiniter   r   	r   r   r9  r  r  finiter   r   r   s	         r   r   z@TestArrayReductions.check_percentile_and_quantile.<locals>.checki  l    a|H1+C [[*Fvvf~''Xw'G''FXf5E07 ( 9r      r   r      r   r   r   )r   r   r   r'  r            ?r   r.  g      ?r   r'  )      ?rB  r   )g      @      @g      &@ih     )rC  rB  r   )rC  rB  g      ?)r   rD  )r   r   r   r   )r   r   r'  r   )g-q=)r   r   randnr   r   linspacer   r   choiceflatr0  flattentolisttupler   testingassert_equalarrayshape
assertTrueisscalar)	r   r   q_upper_boundr   r   r   
not_finitexr   s	   ``      @r   check_percentile_and_quantilez1TestArrayReductions.check_percentile_and_quantilef  sJ   "T"6*
	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                    
  t        d            
d
 fd	}d
 fd	}d }dd|z  d|z  |f}d	d
t        j                  t        j                  t        j                   f} ||      D ]  } |||        |d	k(  r|}	n|}	t        j                  d      }t        j                  d	      } |	||       d}|dz  } |	||       y )NTr   c                      | |      } | |      }t        j                  |      }t        j                  |      rj                  |||       y j                  ||   ||   |       y r8  r:  r<  s	         r   r   z>TestArrayReductions.check_percentile_edge_cases.<locals>.check  r>  r   c                      | |      j                  t        j                        } | |      }j                  |||       y r8  )astyper   r   r   )r   r   r9  r  r  r   r   r   s        r   convert_to_float_and_checkzSTestArrayReductions.check_percentile_edge_cases.<locals>.convert_to_float_and_check  s=    a|**2::6H1+C##C7#Cr   c              3   ~   K   t        dd      D ]*  }t        | |      D ]  }t        j                  |        , y w)Nr   r   )ranger   r   rP  )elementsicombs      r   _array_combinationszLTestArrayReductions.check_percentile_edge_cases.<locals>._array_combinations  s6     1b\9(AFD((4.( G "s   ;=r   皙?g?r   r   r   r   )g+=)r   r   r   r   rP  )r   r   rT  r   r\  rb  r   element_poolr   _checkr   s   ``        @r   check_percentile_edge_casesz/TestArrayReductions.check_percentile_edge_cases  s    "T"6*
	9	D
	) m#S=%8-H2rvvrvvw7$\2A!QK 3
 A/FFHHQKHHQKq!Aq!r   c                      t        d      |       fd} j                          t        j                  d      } ||d        ||d        ||ddt        j                  f        j                         5 }t        j                  d      d	z  }d
} ||       d d d         j                  dt        j                               y # 1 sw Y   /xY w)NTr   c                     j                  t              5 } | |       d d d        j                  dt        j                               y # 1 sw Y   /xY w)Nz)Percentiles must be in the range [0, 100]assertRaises
ValueErrorassertEqualstr	exceptionr   r   raisesr   r   s      r   	check_errzBTestArrayReductions.check_percentile_exceptions.<locals>.check_err  sI    "":.&a /;F$$% /.   
AAr   )r   r   i   r   r   r   rc  Not supported for complex dtype	r   disable_leak_checkr   r   r   assertTypingErrorassertInrm  rn  r   r   rq  r   er   r   s   `     @r   check_percentile_exceptionsz/TestArrayReductions.check_percentile_exceptions  s    "T"6*	 	!IIaL!R!\"!aRVV_%##%		!r!AA!QK &
 	7Q[[9IJ &%   <$CCc                      t        d      |       fd} j                          t        j                  d      } ||d        ||d        ||ddt        j                  f        j                         5 }t        j                  d      dz  }d} ||       d d d         j                  d	t        j                               y # 1 sw Y   /xY w)
NTr   c                     j                  t              5 } | |       d d d        j                  dt        j                               y # 1 sw Y   /xY w)Nz%Quantiles must be in the range [0, 1]ri  ro  s      r   rq  z@TestArrayReductions.check_quantile_exceptions.<locals>.check_err  sI    "":.&a /7F$$% /.rr  r   g      )rc  rc  g?rc  r   ru  rv  rz  s   `     @r   check_quantile_exceptionsz-TestArrayReductions.check_quantile_exceptions  s    "T"6*	 	!IIaL!T!&'!c4()##%		!r!AA!QK &
 	7Q[[9IJ &%r}  c                 ~    t         }| j                  |d       | j                  |d       | j                  |       y Nd   rT  )r   rW  rf  r|  r   r   s     r   test_percentile_basicz)TestArrayReductions.test_percentile_basic	  s;    (**6*E((s(C((0r   c                 ~    t         }| j                  |d       | j                  |d       | j                  |       y r  )r   rW  rf  r|  r  s     r   test_nanpercentile_basicz,TestArrayReductions.test_nanpercentile_basic  s;    +**6*E((s(C((0r   c                 ~    t         }| j                  |d       | j                  |d       | j                  |       y Nr   r  )r   rW  rf  r  r  s     r   test_quantile_basicz'TestArrayReductions.test_quantile_basic  s;    &**6*C((q(A&&v.r   c                 ~    t         }| j                  |d       | j                  |d       | j                  |       y r  )r   rW  rf  r  r  s     r   test_nanquantile_basicz*TestArrayReductions.test_nanquantile_basic  s;    )**6*C((q(A&&v.r   c                 H    t         }| j                  || j                         y r   )r   r,  r1  r  s     r   test_nanmedian_basicz(TestArrayReductions.test_nanmedian_basic!  s    '(>(>?r   c                 V   t        j                  dt         j                        }t        |      }| j	                  |j
                  d       | j	                  |j                  d        t        |f      t              }| j	                  t        j                  |       ||             y Nr   r   r   C)
r   r   int32r   rl  ndimlayoutr   r7   r4   r   r   arrtyr   s       r   test_array_sum_globalz)TestArrayReductions.test_array_sum_global%  sv    ii"((+sQ's+eX 01eCj1r   c                 R   t        j                  dt         j                        dz   }t        |      }| j	                  |j
                  d       | j	                  |j                  d        t        |f      t              }| j	                  |j                          ||             y r  )
r   r   r  r   rl  r  r  r   r:   r9   r  s       r   test_array_prod_int_1dz*TestArrayReductions.test_array_prod_int_1d.  sx    ii"((+a/sQ's+eXz*U3Z0r   c                 n   t        j                  dt         j                        dz   }t        |      }| j	                  |j
                  d       | j	                  |j                  d        t        |f      t              }t         j                  j                  |j                          ||             y )Nr   r   rc  r   r  )r   r   r   r   rl  r  r  r   r:   rN  assert_allcloser9   r  s       r   test_array_prod_float_1dz,TestArrayReductions.test_array_prod_float_1d7  s|    ii"**-6sQ's+eXz*


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


""2773<s<r   c                 f   t        j                  ddt         j                        }t        ||      \  }}| j	                  ||       t        j
                  ddd      }t        ||      \  }}| j	                  ||       |j                  d      }t        ||      \  }}| j	                  ||       y )Nr   r   r   rA  rE  )r   r   )r   r   int16r   r   rH  r   )r   r   r   r  r  s        r   check_cumulativez$TestArrayReductions.check_cumulativeI  s    ii2RXX.'4#X.kk!Q"'4#X.kk&!'4#X.r   c                 .    | j                  t               y r   )r  r*   r   s    r   test_array_cumsumz%TestArrayReductions.test_array_cumsumT  s    l+r   c                 .    | j                  t               y r   )r  r-   r   s    r   test_array_cumsum_globalz,TestArrayReductions.test_array_cumsum_globalW  s    12r   c                 .    | j                  t               y r   )r  r!   r   s    r   test_array_cumprodz&TestArrayReductions.test_array_cumprodZ  s    m,r   c                 .    | j                  t               y r   )r  r#   r   s    r   test_array_cumprod_globalz-TestArrayReductions.test_array_cumprod_global]  s    23r   c                    |rdnd}t        j                  |      dz   j                  d      }t        ||      \  }}| j	                  ||       t        j                  d      dz   j                  d      }t        ||      \  }}| j	                  ||       |j                  d      }t        ||      \  }}| j	                  ||       y)	zH
        Check that integer overflows are avoided (issue #931).
        r   r   i@  r  l            int64uint64N)r   r   r[  r   r   )r   r   is_prodn_itemsr   nprnbrs          r   check_aggregation_magnitudez/TestArrayReductions.check_aggregation_magnitude`  s     !Byy!E)11':"63/SS) yy}u$,,W5"63/SS)jj""63/SS)r   c                 X    | j                  t               | j                  t               y r   )r  r5   r7   r   s    r   test_sum_magnitudez&TestArrayReductions.test_sum_magnitudes      ((3(()9:r   c                 X    | j                  t               | j                  t               y r   )r  r*   r-   r   s    r   test_cumsum_magnitudez)TestArrayReductions.test_cumsum_magnitudew  s    ((6(()<=r   c                 2    | j                  t        d       y NT)r  )r  r1   r   s    r   test_nancumsum_magnitudez,TestArrayReductions.test_nancumsum_magnitude{  s    (($(Gr   c                 `    | j                  t        d       | j                  t        d       y r  )r  r:   r=   r   s    r   test_prod_magnitudez'TestArrayReductions.test_prod_magnitude~  s)    ((T(B(():D(Ir   c                 `    | j                  t        d       | j                  t        d       y r  )r  r!   r#   r   s    r   test_cumprod_magnitudez*TestArrayReductions.test_cumprod_magnitude  s)    (((E(()=t(Lr   c                 2    | j                  t        d       y r  )r  r'   r   s    r   test_nancumprod_magnitudez-TestArrayReductions.test_nancumprod_magnitude  s    (()94(Hr   c                 X    | j                  t               | j                  t               y r   )r  rA   rC   r   s    r   test_mean_magnitudez'TestArrayReductions.test_mean_magnitude  s    ((4(():;r   c                 X    | j                  t               | j                  t               y r   )r  rF   rH   r   s    r   test_var_magnitudez&TestArrayReductions.test_var_magnitude  r  r   c                 X    | j                  t               | j                  t               y r   )r  rK   rM   r   s    r   test_std_magnitudez&TestArrayReductions.test_std_magnitude  r  r   c                    t        |      } t        d      |      }| j                   ||       ||             | j                   ||d d        ||d d              |d d d   j                         }| j                   ||       ||             t        j
                  j                  |       | j                   ||       ||             d|j                  vr>t        dt        |      d      D ]  }d||<   	 | j                   ||       ||             |j                  |j                  d             | j                   ||       ||             y )NTr   r   rm   r   r   NaT)r   r   r   r/  r   r   r0  __name__r^  lenfillr   )r   r   r   r  r   rV  s         r   _do_check_nptimedeltaz)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*A +##E#Js<U#$c
F3K8r   c                 r    t        j                  d      j                  d      }| j                  ||       y )Nr   zM8[Y]r   r   r   r[  r  r   r   r   s      r   check_npdatetimez$TestArrayReductions.check_npdatetime  -    iim"""1""63/r   c                 r    t        j                  d      j                  d      }| j                  ||       y )Nr   zm8[s]r   r  r  s      r   check_nptimedeltaz%TestArrayReductions.check_nptimedelta  r  r   c                 X    | j                  t               | j                  t               y r   )r  rP   r  r   s    r   test_min_npdatetimez'TestArrayReductions.test_min_npdatetime      i(y)r   c                 X    | j                  t               | j                  t               y r   )r  rX   r  r   s    r   test_max_npdatetimez'TestArrayReductions.test_max_npdatetime  r  r   c                 X    | j                  t               | j                  t               y r   )r  ra   r  r   s    r   test_argmin_npdatetimez*TestArrayReductions.test_argmin_npdatetime      l+|,r   c                 X    | j                  t               | j                  t               y r   )r  rh   r  r   s    r   test_argmax_npdatetimez*TestArrayReductions.test_argmax_npdatetime  r  r   c                 .    | j                  t               y r   )r  rn   r   s    r   test_median_npdatetimez*TestArrayReductions.test_median_npdatetime  s    23r   c                 .    | j                  t               y r   )r  r5   r   s    r   test_sum_npdatetimez'TestArrayReductions.test_sum_npdatetime  s    y)r   c                 .    | j                  t               y r   )r  r*   r   s    r   test_cumsum_npdatetimez*TestArrayReductions.test_cumsum_npdatetime  s    |,r   c                 .    | j                  t               y r   )r  rA   r   s    r   test_mean_npdatetimez(TestArrayReductions.test_mean_npdatetime  s    z*r   c                      t        d             fd}d }d } |       D ]5  } ||        | ||j                  t        j                                     7  |t        j                  g               |t        j
                  dt        j                               t        j                  t        j                  dt        j                  dd	d
dddg	      }|d|d d d   z  z   }|j                  dd      } ||       y )NTr   c                 J     |       } |       }j                  ||       y r   r   r   r  r  r   r   r   s      r   r   z7TestArrayReductions.check_nan_cumulative.<locals>.check  %    ayH(C##Hc2r   c                     | j                   dz  }t        j                  | t        j                  j	                  t        | j                         |d      t        j                         | S )Nr   F)replace)sizer   putr   rI  r^  r   )r   ps     r   _set_some_values_to_nanzITestArrayReductions.check_nan_cumulative.<locals>._set_some_values_to_nan  sF    !AFF1bii&&uQVV}a&GPHr   c               3     K   t        j                  ddd      j                  ddd       t        j                  t         j                  ddg       t        j                  g d       t        j
                  dd       t        j                  t        j
                  dd	      d
z
         t        j
                  ddt         j                        d d d    y w)Nr   r   <   r'  r   )TTTFr   r   r*  gfffff@@r   )r   rH  r   rP  r   r   asfortranarrayr    r   r   a_variationsz>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   rE  r   rA  r  r   r   r   )r   r[  r   r   rP  fullr   r   )r   r   r   r  r  r   partsr   s   ``     @r   check_nan_cumulativez(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    | j                  t               | j                  t               y r   )r  r'   r  r   s    r   test_nancumprod_basicz)TestArrayReductions.test_nancumprod_basic  s     ./!!"23r   c                 X    | j                  t               | j                  t               y r   )r  r1   r  r   s    r   test_nancumsum_basicz(TestArrayReductions.test_nancumsum_basic  s    o.!!/2r   c                 v     t          t        d             fd}d } |       D ]
  } ||        y )NTr   c                 J     |       } |       }j                  ||       y r   r   r  s      r   r   z1TestArrayReductions.test_ptp_basic.<locals>.check  r  r   c               3     K   t        j                  d       t        j                  dt         j                  dg       t        j                  t         j                   dg       d d t        j
                  dd       g d t        j                  ddd	      j                  d
dd      } |  t        j                  |        | d d d    t         j                  j                  d      j                  |        |  d d t         j                    d dt         j                  g dt         j                  g d t        j
                  dt         j                         dt         j                  dz  z    t         j                  t         j                  dz  z    t         j                   y w)Nr   g皙@r   )r'  r   r   )r   )r  gffffffrc  r(  r'  r   r   r   rE  g      @y      ?      @))gffffff@r   gffffff)g333333@g@g@r   r   )r   r   rP  r   r   r  rH  r   r  r   RandomStater0  r   s    r   r  z8TestArrayReductions.test_ptp_basic.<locals>.a_variations  sP    ))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_basicz"TestArrayReductions.test_ptp_basic  s8    !"T"6*	3
	4 A!H  r   c                     t         } t        d      |      }t        j                  d      } ||      } ||      }| j	                  ||       y )NTr   r   )r   r   r   r   r   )r   r   r   r   r  r  s         r   test_ptp_methodz#TestArrayReductions.test_ptp_method$  sI     "T"6*IIbM!9Ah#.r   c                 t   	 t         	 t        d      	      	 fd}dd}t        ddgd      D ]  \  }} |||      } ||        t        j                  d      }t        j
                  d	d
      }|d|z  z   } ||       |d|z  z
  } ||       t        j                  dd      } ||       y )NTr   c                 J     |       } |       }j                  ||       y r   r   r  s      r   r   z3TestArrayReductions.test_ptp_complex.<locals>.check4  r  r   Fc                     t        j                  ddd      }| rt         j                  |dd t        j                  ddd      }|rt         j                  |dd |d	|z  z   j                  dd      S )
Nr'     r  rs  r   r   r   r   )r   rH  r   r   )real_nanimag_nanrealimags       r   
make_arrayz8TestArrayReductions.test_ptp_complex.<locals>.make_array9  sf    ;;r1b)DFFQq	;;r1b)DVVQr
29$--a33r   r   )repeatrA  r  r'  r   )r'  r'  y      ?      )
fill_value)FF)r   r   r   r   onesr   r  )
r   r   r  r
  r  compr  r  r   r   s
   `       @@r   test_ptp_complexz$TestArrayReductions.test_ptp_complex0  s    !"T"6*	3
	4 #*4-"BHhh1D$K #C wwqzyyQb4idb4idwwv63dr   c                    t         } t        d      |      }| j                          | j                         5 } |t	        j
                  d             d d d        d}| j                  |t        j                               | j                  t              5 } |t	        j
                  g              d d d        d}| j                  |t        |j                               y # 1 sw Y   xY w# 1 sw Y   =xY w)NTr   )TTFz+Boolean dtype is unsupported (as per NumPy)z&zero-size array reduction not possible)r   r   rw  rx  r   rP  ry  rm  rn  rj  rk  )r   r   r   r{  msgs        r   test_ptp_exceptionsz'TestArrayReductions.test_ptp_exceptionsP  s    !"T"6* 	!##%"((./0 & <c3q{{+,z*a"((2, + 7c3q{{+, &% +*s   C%C1%C.1C:c                    	 t         t        f}|D ]  	 t        d      	      	 fd}t        j                  ddd      }|d   |d d |d	z  }||d
z  z
  } ||       t        d      D ]  } j                  j                  |        j                  j                  |        j                  j                  t        j                  t        j                  g      }||d
z  z
  }|d   |d d  ||j                  |               y )NTr   c                 J     |       } |       }j                  ||       y r   r   r  s      r   r   z=TestArrayReductions.test_min_max_complex_basic.<locals>.checki  %    !!9Ah''#6r   r   r   (   r   r'  r   r   )rR   rZ   r   r   rH  r^  r   r0  rI  r   
complex128r[  )
r   pyfuncsr   r  r  r   _r   r   r   s
   `       @@r   test_min_max_complex_basicz.TestArrayReductions.test_min_max_complex_basicc  s    "$44F&C&v.E7
 ;;sB+DBxD!H!8Dtby A!H2Y##D)##D)**BLL"--+HI4"9$""1ahhuo&  r   c                     t         t        f}|D ]   t        d             fd}t        j                  ddd      }|d   |d d t        j
                  |d	d
 |dz  }t        j
                  |dd ||dz  z
  } ||       t        d      D ]P  } j                  j                  |        j                  j                  |       ||dz  z
  }|d   |d d  ||       R  y )NTr   c                 J     |       } |       }j                  ||       y r   r   r  s      r   r   zCTestArrayReductions.test_nanmin_nanmax_complex_basic.<locals>.check  r  r   r   r   r  r   r'  r   r  r   r   r   r   )	rq   rt   r   r   rH  r   r^  r   r0  )	r   r  r   r  r  r   r  r   r   s	   `      @@r    test_nanmin_nanmax_complex_basicz4TestArrayReductions.test_nanmin_nanmax_complex_basic|  s    ,F&C&v.E7
 ;;sB+DBxD!HD1I!8DD2Jtby A!H2Y##D)##D)4"9$""1a ! r   c                      t         t        f} fd}d }|D ](   t        d             |       D ]
  } ||        * y )Nc                 J     |       } |       }j                  ||       y r   r   r  s      r   r   zFTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.check  r  r   c               3   "  K   g d d t        j                  d       d d d t         j                  dddf t         j                  t         j                  t         j                   g t         j                  d	fd
g y w)N)r   rE  r'  r   ))r   r'  i)r      ir   rF  gA`"	@Fgr   g?)ggffffff!@)r   rP  r   r   r  r   r   r  zMTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.a_variations  sp     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_inputsz7TestArrayReductions.test_nanmin_nanmax_non_array_inputs  sG    ,	3
		/ F&C&v.E!^a $ r   c                    t        j                  g d      }t        j                  d      j                  dd      }|dxx   dz  cc<   t        j                  d      j                  dddd	      d
z   }|dxx   dz  cc<   |dxx   dz  cc<   |||fD ]  }t	        t        |j                              t        |j                        D cg c]  }|dz    
 c}z   }|D cg c]  }|fd	 }}|D 	cg c]  }	 t        d      |	       }
}	|
D ])  }| j                  |j                  |       ||             +  y c c}w c c}w c c}	w )Nr      r   r'  rE  r   r   r   r   r  x   r'  r   r   r   r   r   r   r   r   r   r   3   r   c                 0    t        j                  | |      S Naxisrj   r   _axiss     r   <lambda>z?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`  axesr2  py_functionsr   c_functionsr   s               r   test_argmax_axis_1d_2d_4dz-TestArrayReductions.test_argmax_axis_1d_2d_4d  Q   '		!$$Q*c
c
		#&&q!Q2R7jS jR5%(Cchh( %chh, /1!A#, D
 ! D !%>   
 :F9Ev"T"6*   %''c(:E#JG % ),   
D> E2Ec                     t        j                  d      }t        j                  d      j                  dd      }t        d      d         fd} ||d        ||d	        ||d
        ||d        j	                          y )NrE  r   r   Tr   c                 .    t        j                  | |      S r   rj   r   r2  s     r   	jitargmaxzDTestArrayReductions.test_argmax_axis_out_of_range.<locals>.jitargmax      99S$''r   c                     j                  t        d      5  j                  | |       d d d        j                  t        d      5   | |       d d d        y # 1 sw Y   2xY w# 1 sw Y   y xY wNzaxis.*out of boundsassertRaisesRegexrk  r9  )r   r2  rG  r   s     r   assert_raiseszHTestArrayReductions.test_argmax_axis_out_of_range.<locals>.assert_raises  _    ''
4IJ!!#t, K''
4IJ#t$ KJ KJJJ   A	
A(A%(A1r   r   r   r   r   rw  )r   r;  r<  rM  rG  s   `   @r   test_argmax_axis_out_of_rangez1TestArrayReductions.test_argmax_axis_out_of_range  s|    		!		!$$Q*	d		( 
	(	% 	eQeR eR eQ!r   c                     t        j                  d      }t        d      d        }| j                         5 } ||d       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)NrE  Tr   c                 .    t        j                  | |      S r   rj   rF  s     r   rG  zGTestArrayReductions.test_argmax_axis_must_be_integer.<locals>.jitargmax  rH  r   fooaxis must be an integerr   r   r   rx  ry  rm  rn  )r   r   rG  r{  s       r    test_argmax_axis_must_be_integerz4TestArrayReductions.test_argmax_axis_must_be_integer  f    iil	d		( 
	( ##%c5! &/Q[[1AB &%   
A00A9c                     t        j                  d      j                  dd      fd}| j                   |        t	        d      |                   y )NrE  r   r   c                 (    j                  d      S Nr   r1  rf   r   r<  s    r   rg   z;TestArrayReductions.test_argmax_method_axis.<locals>.argmax      <<Q<''r   Tr   r   r   r   r   r   r   rg   r<  s     @r   test_argmax_method_axisz+TestArrayReductions.test_argmax_method_axis  P    		!$$Q*	( 	u : 2T 26 :5 A	Cr   c                     t        j                  dt         j                        j                  dd      fd}| j	                   |        t        d      |                   y )NrE  r   r   r   c                 (    j                  d      S r^  rf   r_  s    r   rg   z;TestArrayReductions.test_argmax_return_type.<locals>.argmax  r`  r   Tr   r   r   uint8r   r   r   rb  s     @r   test_argmax_return_typez+TestArrayReductions.test_argmax_return_type  W    		!288,44Q:	( 	u : 2T 26 :5 A	Cr   c                    t        j                  g d      }t        j                  d      j                  dd      }|dxx   dz  cc<   t        j                  d      j                  dddd	      d
z   }|dxx   dz  cc<   |dxx   dz  cc<   |||fD ]  }t	        t        |j                              t        |j                        D cg c]  }|dz    
 c}z   }|D cg c]  }|fd	 }}|D 	cg c]  }	 t        d      |	       }
}	|
D ])  }| j                  |j                  |       ||             +  y c c}w c c}w c c}	w )Nr(  rE  r   r   r*  r  r+  r'  r   r   r,  r-  r.  r   c                 0    t        j                  | |      S r0  rc   r3  s     r   r5  z?TestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<lambda>  r6  r   Tr   r7  r:  s               r   test_argmin_axis_1d_2d_4dz-TestArrayReductions.test_argmin_axis_1d_2d_4d  rB  rC  c                     t        j                  d      }t        j                  d      j                  dd      }t        d      d         fd} ||d        ||d	        ||d
        ||d        j	                          y )NrE  r   r   Tr   c                 .    t        j                  | |      S r   rc   rF  s     r   	jitargminzDTestArrayReductions.test_argmin_axis_out_of_range.<locals>.jitargmin  rH  r   c                     j                  t        d      5  j                  | |       d d d        j                  t        d      5   | |       d d d        y # 1 sw Y   2xY w# 1 sw Y   y xY wrJ  rK  )r   r2  rp  r   s     r   rM  zHTestArrayReductions.test_argmin_axis_out_of_range.<locals>.assert_raises  rN  rO  r   rP  rQ  rR  )r   r;  r<  rM  rp  s   `   @r   test_argmin_axis_out_of_rangez1TestArrayReductions.test_argmin_axis_out_of_range  s~    		!		!$$Q*	d		( 
	(	% 	eQeR eR eQ 	!r   c                     t        j                  d      }t        d      d        }| j                         5 } ||d       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)NrE  Tr   c                 .    t        j                  | |      S r   rc   rF  s     r   rp  zGTestArrayReductions.test_argmin_axis_must_be_integer.<locals>.jitargmin)  rH  r   rV  rW  rX  )r   r   rp  r{  s       r    test_argmin_axis_must_be_integerz4TestArrayReductions.test_argmin_axis_must_be_integer&  rZ  r[  c                     t        j                  d      j                  dd      fd}| j                   |        t	        d      |                   y )NrE  r   r   c                 (    j                  d      S r^  r_   r_  s    r   r`   z;TestArrayReductions.test_argmin_method_axis.<locals>.argmin4  r`  r   Tr   ra  r   r`   r<  s     @r   test_argmin_method_axisz+TestArrayReductions.test_argmin_method_axis1  rd  r   c                     t        j                  dt         j                        j                  dd      fd}| j	                   |        t        d      |                   y )NrE  r   r   r   c                 (    j                  d      S r^  r_   r_  s    r   r`   z;TestArrayReductions.test_argmin_return_type.<locals>.argmin>  r`  r   Tr   rg  rx  s     @r   test_argmin_return_typez+TestArrayReductions.test_argmin_return_type:  rj  r   c                     t         t        t        t        t        t
        t        t        t        t        t        t        t        t        t        t        t         t"        t$        t&        t(        t*        t,        g}t.        t0        t2        t4        g}|t6        t8        t:        gz  }|t<        gz  }t>        j@                  t>        jB                  t>        jD                  t>        jF                  g} fd} ||d d |        |||       y )Nc                     | D ]t  }t        |      }t        ||      D ]X  \  }d}|j                  j                  |j                  j
                  |j                        }||ffd	}t        ||       Z v y )Nztest_{0}_{1}_{2}dc                     d}dj                   v rt        j                  |      rd}t        ||      \  }}| j	                  |||d|       y )Nr   r9   r   single)r  r   ulps)r  r   iscomplexobjr   r   )r   redFunc	testArraytestNamer  r  r  red_funcs          r   new_test_functionz]TestArrayReductions.install_generated_tests.<locals>.install_tests.<locals>.new_test_functionl  sZ      !!X%6%66OOI6 $%D#27I#FS//Sh5=D 0 Jr   )r   r   formatr  r   namer  setattr)	dtypesfuncsdttest_arraysr   	test_namer  r  clss	          @r   install_testszBTestArrayReductions.install_generated_tests.<locals>.install_testsa  s    .r2,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_testsz+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 	no6r   )r  )F)\r  
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r  r  r  r  r
  r  r  r  r  r  r  r  r,  staticmethodr1  r5  rW  rf  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r!  r&  rA  rS  rY  rc  ri  rm  rr  ru  ry  r|  classmethodr  __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                   F    e Zd Z ej                  d      Zd Zed        Zy)TestArrayReductionsExceptionsr   c                 b    t        d      |      }| j                  t              5   || j                         d d d        | j                  t              5 } || j                         d d d        | j                  |t        j                               y # 1 sw Y   _xY w# 1 sw Y   ;xY w)NTr   )r   rj  BaseException	zero_sizerk  ry  rm  rn  )r   r   r  r   r{  s        r   check_exceptionz-TestArrayReductionsExceptions.check_exception  s~    "T"6*}-4>>" . z*a$..! +c3q{{+, .- +*s   BB%B"%B.c                    t               }d}d}t        t        t        t        fD ]  }|||<   	 t
        t
        t        t        fD ]  }|||<   	 d}|j                         D ]p  \  }}|j                  |j                        }|j                  |j                        }	|	j                  dd      j                  dd      }	||	fd}
t        | ||
       r y )Nz'attempt to get {0} of an empty sequencez*zero-size array to reduction operation {0}ztest_zero_size_array_{0}array_ _globalc                 (    | j                  ||       y r   )r  )r   funcmessages      r   test_fnz6TestArrayReductionsExceptions.install.<locals>.test_fn  s    $$T73r   )dictrh   rk   ra   rd   rX   rP   itemsr  r  r  r  )r  	fn_to_msg	empty_seqop_no_identrV  name_templatefnr  r  lmsgr  s              r   installz%TestArrayReductionsExceptions.install  s     F	=	 3\%'A$IaL' Y	9=A&IaL > 3 (GB%,,R[[9I::bkk*D<<,44YrBD#%t 4 CG, )r   N)	r  r  r  r   r   r  r  r  r  r  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  r  r  mainr  r   r   <module>r     sc   <  # # 0 O O !$""(&A7/8 A7H  + + -%-OX %-N  % % ' zHMMO r   