Ë
    èÿæiLª  ã                   ó  — 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    úv/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_array_reductions.pyÚ	array_allr      ó   € Ø�7‰7‹9Ðó    c                 ó,   — t        j                  | «      S r   )Únpr   r   s    r   Úarray_all_globalr      ó   € Ü�6‰6�#‹;Ð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-   #   ó   € Ü�9‰9�S‹>Ð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:   /   ó   € Ø�8‰8‹:Ðr   c                 ó,   — t        j                  | «      S r   )r   r9   r   s    r   Úarray_prod_globalr=   2   ó   € Ü�7‰7�3‹<Ð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   € Ü�6‰6�!‹9Ðr   c                 ó"   — | j                  «       S r   )r�   r‘   s    r   Ú	array_ptpr•   ‰   s   € Ø�5‰5‹7€Nr   c                 ó.   — t        j                  | |«      S r   )r   Úquantiler‰   s     r   Úarray_quantile_globalr˜   Œ   s   € Ü�;‰;�s˜AÓÐ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.   € Ø�q‘5˜A’:Ð�:Ü—8‘8˜Q ˜F a¨1¡fÑ-Ó.Ð.r   c                 ó8   •— t        j                  | ‰¬«      dz   S )N©ÚdtyperŸ   )r   Úarange)r¡   r¥   s    €r   r¢   z!base_test_arrays.<locals>.factory˜   s   ø€ Ü—9‘9˜Q eÔ,¨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Ñ	×	$Ñ	$ Y°cÐ	$Ó	:€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Ó2¡z !�q˜2“v zÑ2Ñ2ˆ
ð ”—‘ÒØˆÛˆAØ�b‘&˜2 ™6 B™;Ñ&ˆCÜ—w‘w˜s¡3 Q 3™xÓ(ˆC‘�!�‰HØ�J‰J�s�Oð ð 	×Ñ˜#ÔãˆØ�w‰wœ"Ÿ(™( 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                   óh  ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zefd„Zd„ Z	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d„ Zd„ Zd„ Zd„ Z d„ Z!e"d„ «       Z#d„ Z$d „ Z%d]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/„ Z4d0„ Z5d1„ Z6d2„ Z7d^d3„Z8d4„ Z9d5„ Z:d6„ Z;d7„ Z<d8„ Z=d9„ Z>d:„ Z?d;„ Z@d<„ ZAd=„ ZBd>„ ZCd?„ ZDd@„ ZEdA„ ZFdB„ ZGdC„ ZHdD„ ZIdE„ ZJdF„ ZKdG„ ZLdH„ ZMdI„ ZNdJ„ ZOdK„ ZPeQdL„ «       ZRdM„ ZSdN„ ZTdO„ ZUdP„ ZVdQ„ ZWdR„ ZXdS„ ZYdT„ ZZdU„ Z[dV„ Z\dW„ Z]dX„ Z^dY„ Z_dZ„ Z`d[„ Zaebd\„ «       Zcˆ xZdS )_Ú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Ë   ó"   ø€ Ø#ˆD×#Ñ#¡F¨3£K±°s³ÑF¸vÓ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ô �j‰jÒ9Ó:ˆÙˆcŒ
Ü�j‰j˜$ ˜Ó&ˆÙˆcŒ
Ü�j‰jÒ+Ó,ˆÙˆcŒ
Ü�j‰jÒ,Ó-ˆÙˆcŒ
Ü�j‰jÒ3Ó4ˆÙˆcŒ
Ü�j‰jÒ7Ó8ˆÙˆcŒ
Ü�j‰jÒFÓGˆÙˆcŒ
Ü�j‰jÒ2Ó3ˆÙˆcŒ
ä�j‰j˜% ˜Ó(ˆÙˆc�
r   c                 óR  ‡ ‡‡‡—  t        d¬«      ‰«      Šˆˆˆˆ fd„}t        j                  d«      } ||«       t        j                  d«      } ||«       t        j                  d«      } ||«       t        j                  d«      } ||«       t        j                  d«      } ||«       t        j                  d	«      } ||«       t        j                  t        j
                  «      } ||«       t        j                  t        j
                   «      } ||«       t        j                  d
«      } ||«       t        j                  d«      } ||«       t        j                  d«      } ||«       ‰ j                  «       5 } ‰d«       d d d «       y # 1 sw Y   y xY w)NTrÔ   c                 óF   •—  ‰j                    ‰| «       ‰| «      fi ‰¤Ž y r   r×   rÙ   s    €€€€r   rÜ   z5TestArrayReductions.check_scalar_basic.<locals>.checkä   rÝ   r   rà   rá   g      5@g      5Àé   iëÿÿÿræ   FÚstring)r   r   rè   r¹   Úint32rä   r    ÚassertTypingError)rÑ   rÛ   rÚ   rÜ   r   ÚerÅ   s   ```   @r   Úcheck_scalar_basicz&TestArrayReductions.check_scalar_basicâ   s/  û€ Ø"”˜TÔ" 6Ó*ˆ÷	Gô �j‰j˜‹oˆÙˆcŒ
Ü�j‰j˜ÓˆÙˆcŒ
Ü�j‰j˜ÓˆÙˆcŒ
Ü�j‰j˜ÓˆÙˆcŒ
Ü�h‰h�r‹lˆÙˆcŒ
Ü�h‰h�s‹mˆÙˆcŒ
ô �j‰jœŸ™Ó ˆÙˆcŒ
Ü�j‰jœ"Ÿ&™&˜Ó!ˆÙˆcŒ
Ü�j‰j˜ÓˆÙˆcŒ
ô �h‰h�t‹nˆÙˆcŒ
Ü�h‰h�u‹oˆÙˆcŒ
ð ×#Ñ#Ô%¨Ù�(ŒO÷ &×%Ñ%ús   Æ	FÆF&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  ó   ø€ Ø×#Ñ#¡F¨3£K±°s³Õ<r   rÞ   rà   rä   ræ   rá   rŸ   ç      ø?©rž   rž   rª   ©r   r   rè   Úfloatr®   ©rÑ   rÛ   rÜ   r   rÅ   s   ``  @r   Útest_all_basicz"TestArrayReductions.test_all_basic  s†   ú€ Ø"”˜TÔ" 6Ó*ˆö	=ô �j‰j˜#˜s¤E¨%£L´%¸³,Ð?Ó@ˆÙˆcŒ
ØˆˆA‰ÙˆcŒ
ØˆˆA‰ÙˆcŒ
Ø�k‰k˜&Ó!ˆÙˆcŒ
Ùˆc‘$�B�$‰iÕr   c                 ó‚  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„} |t        j                  g d¢«      «        |t        j                  g d¢«      «        |t        j                  g d¢«      «        |t        j                  g d¢«      «       ‰ j	                  «       5 } ‰d«       d d d «       y # 1 sw Y   y xY w)	NTrÔ   c                 óP   •— t        | «      } ‰| «      }‰j                  ||«       y r   )r   rØ   ©ÚargÚexpectedÚgotrÅ   rÑ   s      €€r   rÜ   z1TestArrayReductions.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_allz"TestArrayReductions.test_array_all  s‚   ù€ Ø"”˜TÔ"¤9Ó-ˆõ	3ñ 	Œb�h‰hÒ)Ó*Ô+ÙŒb�h‰hÒ*Ó+Ô,ÙŒb�h‰h’Ó'Ô(ÙŒb�h‰h’Ó'Ô(à×#Ñ#Ô%¨Ù�'ŒN÷ &×%Ñ%úó   Â#	B5Â5B>c                 óô  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„} |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j
                  «        |t        j                  «        |t        j                   «        |d«        |t        j                  g d¢«      «        |t        j                  g d	¢«      «        |t        j                  g d
¢«      «        |t        j                  g d¢«      «       ‰ j                  «       5 } ‰g d¢«       d d d «       y # 1 sw Y   y xY w)NTrÔ   c                 óP   •— t        | «      } ‰| «      }‰j                  ||«       y r   )r   rØ   rþ   s      €€r   rÜ   z.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_allzTestArrayReductions.test_np_all&  óñ   ù€ Ø"”˜TÔ"Ô#3Ó4ˆõ	3ñ 	Œb�j‰j˜‹oÔÙŒb�j‰j˜‹oÔÙŒb�h‰h�t‹nÔÙŒb�h‰h�u‹oÔñ 	Œb�f‰fŒÙŒb�f‰fŒÙŒr�v‰vˆgŒÙˆdŒñ 	Œb�h‰hÒ)Ó*Ô+ÙŒb�h‰hÒ*Ó+Ô,ÙŒb�h‰h’Ó'Ô(ÙŒb�h‰h’Ó'Ô(à×#Ñ#Ô%¨Ù’'ŒN÷ &×%Ñ%úó   ÅE.Å.E7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>.checkE  rõ   r   )rà   rá   rà   rà   ræ   rž   rä   rö   r÷   rª   rø   rú   s   ``  @r   Útest_any_basicz"TestArrayReductions.test_any_basicC  sŽ   ú€ Ø"”˜TÔ" 6Ó*ˆö	=ô �j‰jÒ.Ó/ˆÙˆcŒ
Ü�u“ˆˆA‰ÙˆcŒ
Ü�u“ˆˆA‰ÙˆcŒ
ØˆˆA‰ÙˆcŒ
Ø�k‰k˜&Ó!ˆÙˆcŒ
Ùˆc‘$�B�$‰iÕr   c                 ó‚  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„} |t        j                  g d¢«      «        |t        j                  g d¢«      «        |t        j                  g d¢«      «        |t        j                  g d¢«      «       ‰ j	                  «       5 } ‰d«       d d d «       y # 1 sw Y   y xY w)	NTrÔ   c                 óP   •— t        | «      } ‰| «      }‰j                  ||«       y r   )r   rØ   rþ   s      €€r   rÜ   z1TestArrayReductions.test_array_any.<locals>.checkV  r  r   r  r  r  r  r  )r   r   r   r  rï   r	  s   `  @r   Útest_array_anyz"TestArrayReductions.test_array_anyT  s‚   ù€ Ø"”˜TÔ"¤9Ó-ˆõ	3ñ 	Œb�h‰hÒ)Ó*Ô+ÙŒb�h‰hÒ*Ó+Ô,ÙŒb�h‰h’Ó'Ô(ÙŒb�h‰h’Ó'Ô(à×#Ñ#Ô%¨Ù�'ŒN÷ &×%Ñ%úr  c                 óô  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„} |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j
                  «        |t        j                  «        |t        j                   «        |d«        |t        j                  g d¢«      «        |t        j                  g d	¢«      «        |t        j                  g d
¢«      «        |t        j                  g d¢«      «       ‰ j                  «       5 } ‰g d¢«       d d d «       y # 1 sw Y   y xY w)NTrÔ   c                 óP   •— t        | «      } ‰| «      }‰j                  ||«       y r   )r   rØ   rþ   s      €€r   rÜ   z.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_anyzTestArrayReductions.test_np_anyd  r  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                 óV  ‡ ‡—  t        d¬«      t        «      Šˆˆ fd„} |t        j                  d«      «        |t        j                  d«      «        |t        j
                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d	«      «        |t        j                  d
«      «        |t        j                  d«      «        |t        j                  «        |t        j                  «        |t        j                   «        |d«        |d«        |d«        |d«        |d«       ‰ j                  «       5   ‰d«       d d d «       y # 1 sw Y   y xY w)NTrÔ   c                 óP   •— t        | «      } ‰| «      }‰j                  ||«       y r   )rC   rØ   rþ   s      €€r   rÜ   z6TestArrayReductions.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_scalarz'TestArrayReductions.test_np_mean_scalar‡  s  ù€ Ø"”˜TÔ"Ô#4Ó5ˆõ	3ñ 	Œb�h‰h�q‹kÔÙŒb�h‰h�r‹lÔÙŒb�i‰i˜‹lÔÙŒb�h‰h�t‹nÔÙŒb�h‰h�u‹oÔñ 	Œb�j‰j˜ÓÔÙŒb�j‰j˜ÓÔñ 	Œb�l‰l˜4Ó Ô!ÙŒb�m‰m˜FÓ#Ô$ñ 	Œb�f‰fŒÙŒb�f‰fŒÙŒr�v‰vˆgŒÙˆdŒÙˆcŒ
ÙˆaŒÙˆiÔÙˆhŒð ×#Ñ#Õ%Ù�-Ô ÷ &×%Ñ%ús   Æ	FÆF(c                 ó2   — | j                  t        d¬«       y ©NÚdouble)Úprec)ré   rF   r  s    r   Útest_var_basicz"TestArrayReductions.test_var_basic¬  s   € Ø×"Ñ"¤9°8Ð"Õ<r   c                 ó.   — | j                  t        «       y r   )ré   rK   r  s    r   Útest_std_basicz"TestArrayReductions.test_std_basic¯  r   r   c                 óX   — | j                  t        «       | j                  t        «       y r   )rñ   rR   ré   rP   r  s    r   Útest_min_basicz"TestArrayReductions.test_min_basic²  s   € à×ÑÔ 0Ô1à×"Ñ"¤9Õ-r   c                 óX   — | j                  t        «       | j                  t        «       y r   )rñ   rU   ré   r  s    r   Útest_amin_basicz#TestArrayReductions.test_amin_basic¸  s   € à×Ñ¤
Ô+à×"Ñ"¤:Õ.r   c                 óX   — | j                  t        «       | j                  t        «       y r   )ré   rX   rñ   rZ   r  s    r   Útest_max_basicz"TestArrayReductions.test_max_basic¿  s   € à×"Ñ"¤9Ô-à×ÑÔ 0Õ1r   c                 óX   — | j                  t        «       | j                  t        «       y r   )ré   r]   rñ   r  s    r   Útest_amax_basicz#TestArrayReductions.test_amax_basicÅ  s   € à×"Ñ"¤:Ô.à×Ñ¤
Õ+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Ý  rF  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                 ó4  ‡ ‡‡‡—  t        d¬«      ‰«      Šˆˆˆ fd„Š ‰t        j                  g «      «       ˆ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   r   r  rÅ   rÛ   rÑ   s      €€€r   rÜ   z5TestArrayReductions.check_median_basic.<locals>.checkè  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_oddñ  s*   ø€ Ù�!ŒHØ—	‘	˜&Ó!ˆAÙ�!ŒHÙ�!—#‘#�Jr   é?   g      %@c                 ól   •—  ‰| «       | j                  d«      }  ‰| «        ‰| j                  «       y )N)é   é   rT  rV  s    €r   Ú
check_evenz:TestArrayReductions.check_median_basic.<locals>.check_evenú  s*   ø€ Ù�!ŒHØ—	‘	˜'Ó"ˆAÙ�!ŒHÙ�!—#‘#�Jr   é@   )r   r   r  r¦   )rÑ   rÛ   Úarray_variationsrW  r’   r\  rÅ   rÜ   s   ``    @@r   Úcheck_median_basicz&TestArrayReductions.check_median_basicæ  s   û€ Ø"”˜TÔ" 6Ó*ˆö	3ñ 	Œb�h‰h�r‹lÔô	ñ
 "¤"§)¡)¨B£-°$Ñ"6Ö7ˆAÙ�a�Lð 8ô	ñ
 "¤"§)¡)¨B£-°$Ñ"6Ö7ˆAÙ�q�Mñ 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ª   ç      @rZ  rŸ   rž   )Úcopyr   rÏ   Úshuffleræ   r‘   s    r   Ú_array_variationsz%TestArrayReductions._array_variations  s~   è ø€ ð ŠØ‰d�ˆd‰G�L‰L‹NˆØŠÜ
�	‰	×Ñ˜!ÔØŠØˆˆ!ˆa‰%�1‰*‰ØŠÜŸ™ˆˆ!ˆa‰%�1‰*‰ØŠÜ�v‰vˆ‰!ˆØ‹ù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ª   ra  rZ  rŸ   )rb  r   rÏ   rc  r‘   s    r   Ú
variationsz9TestArrayReductions.test_median_basic.<locals>.variations  sP   è ø€ àŠGØ‘$�B�$‘—‘“ˆAØŠGÜ�I‰I×Ñ˜aÔ ØŠGØˆAˆa�!‰e�q‰j‰MØ‹Gùs   ‚AA)rn   r_  )rÑ   rÛ   rg  s      r   Útest_median_basicz%TestArrayReductions.test_median_basic  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Š   rl  r   r  ÚfiniterÅ   rÛ   rÑ   s	         €€€r   rÜ   z@TestArrayReductions.check_percentile_and_quantile.<locals>.check#  ól   ø€ Ù˜a “|ˆHÙ˜˜1“+ˆCô —[‘[ Ó*ˆFÜ�v‰v�fŒ~Ø×'Ñ'¨¨X¸wÐ'ÕGà×'Ñ'¨¨F©°X¸fÑ5EØ07ð (õ 9r   é   r«   r   é   rª   rž   r§   )rŸ   rž   r«   rZ  r¨   é   ç      à?rà   ra  g      ü?r©   rZ  )ç      Ð?ru  rÞ   )g      @ç      @g      &@ih  é   )rv  ru  ©rž   )rv  ru  g      è?)r«   rw  r  rŸ   )rž   r«   rZ  rŸ   )gê-�™—q=)r   rÏ   Úrandnr®   r   Úlinspaceræ   rä   ÚchoiceÚflatrc  ÚflattenÚtolistÚtupler¦   ÚtestingÚassert_equalr  ÚshapeÚ
assertTrueÚisscalar)	rÑ   rÛ   Úq_upper_boundrÜ   r’   rŠ   Ú
not_finiteÚxrÅ   s	   ``      @r   Úcheck_percentile_and_quantilez1TestArrayReductions.check_percentile_and_quantile   sJ  ú€ Ø"”˜TÔ" 6Ó*ˆ÷
	9ð �K‰K×Ñ˜bÓ!×)Ñ)¨!¨Q°Ó2ˆÜ�K‰K˜˜=¨"Ó-©d°¨dÑ3ˆÙˆa�ŒÙˆa�ŒÙˆa� Ñ"Ô#Ùˆa�Ôä—f‘fœrŸv™v˜g¤r§v¡vÐ.ˆ
Ø—k‘k×(Ñ(¨°RÓ8ˆ�‰ˆs�ˆØ�‰×Ñ˜AÔØ�‰×Ñ˜AÔÙˆa�Œà�I‰I‹K×ÑÓ ˆØ�I‰I‹K×ÑÓ ˆÙˆa�ŒÙŒe�A‹hœ˜a›Ô!à�K‰K×Ñš|¨RÓ0ˆÜ�K‰K˜˜=¨!Ó,ˆÙˆa�Œô �I‰I�a‹L˜3ÑˆÜ
�
‰
×Ñ¡ a¨£¨RÔ0Ü
�
‰
×Ñ¡ a¨Ó 7¸Ô=Ü
�
‰
×Ñ¡ a¨¸Ñ):Ó ;¸TÔBä�I‰I�b‹M×!Ñ! ! QÓ'ˆÜ�H‰HÐ%Ó&¨Ñ6ˆÜ
�
‰
×Ñ¡ a¨£Ò->Ô?ä�I‰I�mÓ$×,Ñ,¨Q°°1°aÓ8ˆÜ�H‰H�\Ó" ]Ñ2ˆÜ
�
‰
×Ñ¡ a¨£× 1Ñ 1°4Ô8ä�H‰HÐ'Ó(¨=Ñ8ˆÜ
�
‰
×Ñ¡ a¨£× 1Ñ 1°4Ô8ä�I‰I�b‹M×!Ñ! ! QÓ'ˆÜ
�
‰
×Ñ¡ a¨¸Ñ):Ó ;¸SÔAØ�‰œŸ™¡E¨!¨]¸QÑ->Ó$?Ó@ÔAä
�
‰
×Ñ¡¢i°Ó 3°QÔ7ä�H‰H’\Ó"ˆÙˆa�- !Ñ#Ð$Ô%Ü
�
‰
×Ñ ¤2§8¡8ªLÓ#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 rk  rm  ro  s	         €€€r   rÜ   z>TestArrayReductions.check_percentile_edge_cases.<locals>.checkd  rq  r   c                 óŒ   •—  ‰| |«      j                  t        j                  «      } ‰| |«      }‰j                  |||¬«       y rk  )Úastyper   rè   rØ   )r’   rŠ   rl  r   r  rÅ   rÛ   rÑ   s        €€€r   Úconvert_to_float_and_checkzSTestArrayReductions.check_percentile_edge_cases.<locals>.convert_to_float_and_checkp  s=   ø€ Ù˜a “|×*Ñ*¬2¯:©:Ó6ˆHÙ˜˜1“+ˆCØ×#Ñ# C¨¸7Ð#ÕCr   c              3   ó~   K  — t        dd«      D ]*  }t        | |«      D ]  }t        j                  |«      –— Œ Œ, y ­w)NrŸ   r§   )Úranger   r   r  )ÚelementsÚiÚcombs      r   Ú_array_combinationszLTestArrayReductions.check_percentile_edge_cases.<locals>._array_combinationsu  s6   è ø€ Ü˜1˜b–\�Ü9¸(ÀAÖF�DÜŸ(™( 4›.Ó(ñ Gñ "ùs   ‚;=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_casesz/TestArrayReductions.check_percentile_edge_casesa  sÃ   ú€ Ø"”˜TÔ" 6Ó*ˆ÷
	9÷	Dò
	)ð ��mÑ# S¨=Ñ%8¸-ÐHˆØ˜2œrŸv™v¤r§v¡v´·±¨wÐ7ˆÙ$ \Ö2ˆAÙ�!�Q�Kð 3ð
 ˜AÒØ/‰FàˆFä�H‰H�Q‹KˆÜ�H‰H�Q‹KˆÙˆ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·   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_exceptionsz/TestArrayReductions.check_percentile_exceptions�  s²   ù€ Ø"”˜TÔ" 6Ó*ˆõ	ð 	×ÑÔ!ä�I‰I�a‹LˆÙ�!�RÔÙ�!�\Ô"Ù�!�a˜œRŸV™V�_Ô%à×#Ñ#Ô%¨Ü—	‘	˜!“˜rÑ!ˆAØˆAÙ�!�QŒK÷ &ð
 	�‰Ð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]r›  r¡  s      €€r   r£  z@TestArrayReductions.check_quantile_exceptions.<locals>.check_err¬  sI   ø€ Ø×"Ñ"¤:Ô.°&Ù�a˜”÷ /à×ÑØ7Ü�F×$Ñ$Ó%õ÷ /Ð.úr¤  r¨   g      à¿)r•  r•  gÍÌÌÌÌÌð?r•  r·   r§  r¨  r«  s   `     @r   Úcheck_quantile_exceptionsz-TestArrayReductions.check_quantile_exceptions©  s´   ù€ Ø"”˜TÔ" 6Ó*ˆõ	ð 	×ÑÔ!ä�I‰I�a‹LˆÙ�!�TÔÙ�!Ð&Ô'Ù�!�c˜4¤§¡Ð(Ô)à×#Ñ#Ô%¨Ü—	‘	˜!“˜rÑ!ˆAØˆAÙ�!�QŒK÷ &ð
 	�‰Ð7¼¸Q¿[¹[Ó9IÕJ÷ &Ð%úr­  c                 ó~   — t         }| j                  |d¬«       | j                  |d¬«       | j                  |«       y ©Néd   ©r†  )r‹   r‰  r˜  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Ž   r‰  r˜  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˜   r‰  r˜  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›   r‰  r˜  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_  rd  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¦   rî   r   rž  ÚndimÚlayoutr   r7   r4   ©rÑ   r   ÚarrtyrÅ   s       r   Útest_array_sum_globalz)TestArrayReductions.test_array_sum_globalß  sv   € Ü�i‰i˜¤"§(¡(Ô+ˆÜ�s“ˆØ×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ sÔ+à”�e�X“Ô 0Ó1ˆØ×ÑœŸ™ ›¡e¨C£jÕ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   rž  rÃ  rÄ  r   r:   r9   rÅ  s       r   Útest_array_prod_int_1dz*TestArrayReductions.test_array_prod_int_1dè  sx   € Ü�i‰i˜¤"§(¡(Ô+¨aÑ/ˆÜ�s“ˆØ×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ sÔ+à”�e�X“œzÓ*ˆØ×Ñ˜Ÿ™›¡U¨3£ZÕ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¤   r•  rŸ   rÂ  )r   r¦   r¹   r   rž  rÃ  rÄ  r   r:   r�  Úassert_allcloser9   rÅ  s       r   Útest_array_prod_float_1dz,TestArrayReductions.test_array_prod_float_1dñ  s|   € Ü�i‰i˜¤"§*¡*Ô-°Ñ6ˆÜ�s“ˆØ×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ sÔ+à”�e�X“œzÓ*ˆÜ
�
‰
×"Ñ" 3§8¡8£:©u°S«zÕ: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   rž  rÃ  rÄ  r   r=   r�  rË  r9   rÅ  s       r   Útest_array_prod_globalz*TestArrayReductions.test_array_prod_globalú  sz   € Ü�i‰i˜¤"§(¡(Ô+ˆÜ�s“ˆØ×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ sÔ+à”�e�X“Ô0Ó1ˆÜ
�
‰
×"Ñ"¤2§7¡7¨3£<±°s³Õ<r   c                 ó  ‡ ‡— ‰ j                  t        «        t        d¬«      t        «      Šˆˆ fd„} |t        j                  d«      «        |t        j
                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «        |t        j                  d«      «       y )	NTrÔ   c                 óP   •— t        | «      } ‰| «      }‰j                  ||«       y r   )r=   rØ   rþ   s      €€r   rÜ   z6TestArrayReductions.test_np_prod_scalar.<locals>.check  r%  r   rž   r«   rZ  r·   y                )rñ   r=   r   r   Úint8Úuint8Úint16Úuint16rî   r(  rº   r)  r*  s   ` @r   Útest_np_prod_scalarz'TestArrayReductions.test_np_prod_scalar  s¯   ù€ Ø×ÑÔ 1Ô2à"”˜TÔ"Ô#4Ó5ˆõ	3ñ 	Œb�g‰g�a‹jÔÙŒb�h‰h�q‹kÔÙŒb�h‰h�q‹kÔÙŒb�i‰i˜‹lÔÙŒb�h‰h�q‹kÔÙŒb�i‰i˜‹lÔñ 	Œb�l‰l˜2ÓÔÙŒb�m‰m˜BÓÕ 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¤   rt  rx  )r«   rž   )r   r¦   rÓ  rÈ   rØ   r{  r®   )rÑ   rÛ   r   r   r  s        r   Úcheck_cumulativez$TestArrayReductions.check_cumulative  s˜   € Ü�i‰i˜˜2¤R§X¡XÔ.ˆÜ'¨°Ó4‰ˆ�#Ø×Ñ  XÔ.Ü�k‰k˜!˜Q Ó"ˆÜ'¨°Ó4‰ˆ�#Ø×Ñ  XÔ.Ø�k‰k˜&Ó!ˆÜ'¨°Ó4‰ˆ�#Ø×Ñ  XÕ.r   c                 ó.   — | j                  t        «       y r   )r×  r*   r  s    r   Útest_array_cumsumz%TestArrayReductions.test_array_cumsum$  s   € Ø×ÑœlÕ+r   c                 ó.   — | j                  t        «       y r   )r×  r-   r  s    r   Útest_array_cumsum_globalz,TestArrayReductions.test_array_cumsum_global'  s   € Ø×ÑÔ1Õ2r   c                 ó.   — | j                  t        «       y r   )r×  r!   r  s    r   Útest_array_cumprodz&TestArrayReductions.test_array_cumprod*  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            r'  Úuint64N)r   r¦   r�  rÈ   rØ   )rÑ   rÛ   Úis_prodÚn_itemsr   ÚnprÚnbrs          r   Úcheck_aggregation_magnitudez/TestArrayReductions.check_aggregation_magnitude0  s¸   € ñ ‘! BˆÜ�y‰y˜Ó! EÑ)×1Ñ1°'Ó:ˆÜ" 6¨3Ó/‰ˆˆSØ×Ñ  SÔ)ô �y‰y˜‹}˜uÑ$×,Ñ,¨WÓ5ˆÜ" 6¨3Ó/‰ˆˆSØ×Ñ  SÔ)Ø�j‰j˜Ó"ˆÜ" 6¨3Ó/‰ˆˆSØ×Ñ  SÕ)r   c                 óX   — | j                  t        «       | j                  t        «       y r   )ræ  r5   r7   r  s    r   Útest_sum_magnitudez&TestArrayReductions.test_sum_magnitudeC  ó   € Ø×(Ñ(¬Ô3Ø×(Ñ(Ô)9Õ:r   c                 óX   — | j                  t        «       | j                  t        «       y r   )ræ  r*   r-   r  s    r   Útest_cumsum_magnitudez)TestArrayReductions.test_cumsum_magnitudeG  s   € Ø×(Ñ(¬Ô6Ø×(Ñ(Ô)<Õ=r   c                 ó2   — | j                  t        d¬«       y ©NT)râ  )ræ  r1   r  s    r   Útest_nancumsum_magnitudez,TestArrayReductions.test_nancumsum_magnitudeK  s   € Ø×(Ñ(¬À$Ð(ÕGr   c                 ó`   — | j                  t        d¬«       | j                  t        d¬«       y rí  )ræ  r:   r=   r  s    r   Útest_prod_magnitudez'TestArrayReductions.test_prod_magnitudeN  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_magnitudeR  s)   € Ø×(Ñ(¬ÀÐ(ÔEØ×(Ñ(Ô)=ÀtÐ(ÕLr   c                 ó2   — | j                  t        d¬«       y rí  )ræ  r'   r  s    r   Útest_nancumprod_magnitudez-TestArrayReductions.test_nancumprod_magnitudeV  s   € Ø×(Ñ(Ô)9À4Ð(ÕHr   c                 óX   — | j                  t        «       | j                  t        «       y r   )ræ  rA   rC   r  s    r   Útest_mean_magnitudez'TestArrayReductions.test_mean_magnitudeY  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_magnitudea  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Ø   rb  r   rÏ   rc  Ú__name__r�  ÚlenÚfillr¥   )rÑ   rÛ   r   rÆ  rÅ   rˆ  s         r   Ú_do_check_nptimedeltaz)TestArrayReductions._do_check_nptimedeltae  s"  € Ü�s“ˆØ"”˜TÔ" 6Ó*ˆà×Ñ¡ c£
©F°3«KÔ8à×Ñ¡ c¨#¨2 h£±¸¸C¸R¸Ó1AÔBà‘$�B�$‰i�n‰nÓˆØ×Ñ¡ c£
©F°3«KÔ8Ü
�	‰	×Ñ˜#ÔØ×Ñ¡ c£
©F°3«KÔ8à˜6Ÿ?™?Ñ*ô ˜1œc #›h¨Ö*�Ø��A’ð +à×#Ñ#¡E¨#£J±°s³Ô<à�‰�—‘˜UÓ#Ô$Ø×Ñ¡ c£
©F°3«KÕ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  ó-   € Ü�i‰i˜‹m×"Ñ"¨Ð"Ó1ˆØ×"Ñ" 6¨3Õ/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¦  ó%   ø€ Ù˜a“yˆHÙ˜“(ˆCØ×#Ñ# H¨cÕ2r   c                 óÔ   — | j                   dz  }t        j                  | t        j                  j	                  t        | j                   «      |d¬«      t        j                  «       | S )Nrž   F)Úreplace)Úsizer   ÚputrÏ   r|  r�  ræ   )r’   Úps     r   Ú_set_some_values_to_nanzITestArrayReductions.check_nan_cumulative.<locals>._set_some_values_to_nan«  sF   € Ø—‘˜!‘ˆAÜ�F‰F�1”b—i‘i×&Ñ&¤u¨Q¯V©V£}°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«   é<   rZ  r¨   )TTTFrŸ   r§   r]  gfffff¦@@r¤   )r   r{  r®   r  rä   r¦   Úasfortranarrayr¹   © r   r   Úa_variationsz>TestArrayReductions.check_nan_cumulative.<locals>.a_variations°  s£   è ø€ Ü—+‘+˜b ! RÓ(×0Ñ0°°A°qÓ9Ò9Ü—(‘(œBŸF™F A q˜>Ó*Ò*Ü—(‘(Ò4Ó5Ò5Ü—)‘)˜A˜rÓ"Ò"Ü×#Ñ#¤B§I¡I¨a°Ó$4°tÑ$;Ó<Ò<Ü—)‘)˜A˜r¬¯©Ô4±T°r°TÑ:Ó:ùs   ‚C!C#r§   rž   rZ  r¨   rx  rS  rt  rR  r·   rª   r«   )r   r�  r   rè   r  Ú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·:±:Ó*>Ó?Õ@ð  ñ
 	Œb�h‰h�r‹lÔÙŒb�g‰g�bœ"Ÿ&™&Ó!Ô"ä—‘œ"Ÿ&™& !¤R§V¡V¨Q°°1°a¸¸AÐ>Ó?ˆà�B˜™t ˜t™Ñ$Ñ$ˆØ�I‰I�a˜‹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¨   )rZ  rž   r¨   )rŸ   )r3  gffffffÀr•  éöÿÿÿr[  rZ  rž   rª   r   rx  g      @y      ð?      @))gffffff@rß   gffffffÀ)g333333@gš™™™™™@gÍÌÌÌÌÌ@rŸ   r·   )r   r¦   r  ræ   rä   r)  r{  r®   r&  rÏ   ÚRandomStaterc  r‘   s    r   r(  z8TestArrayReductions.test_ptp_basic.<locals>.a_variations×  sP  è ø€ Ü—)‘)˜B“-ÒÜ—(‘(˜D¤"§&¡&¨#Ð.Ó/Ò/Ü—(‘(œRŸV™V˜G Q˜<Ó(Ò(ØŠOØŠJÜ—'‘'˜!˜Q“-ÒÚ"Ò"Ü—‘˜C  RÓ(×0Ñ0°°A°qÓ9ˆAØŠGÜ×#Ñ# AÓ&Ò&Ø‘D�b�D‘'ŠMÜ�I‰I×!Ñ! !Ó$×,Ñ,¨QÔ/ØŠGØŠGØŠIÜ—6‘6�'ŠMØŠLØœŸ™�-ÒØœŸ™�-ÒØ5Ò5Ü—'‘'˜!œRŸV™VÓ$Ò$Ø”b—f‘f˜r‘k‘/Ò!Ü—&‘&œ2Ÿ6™6 B™;Ñ&Ò&Ü—&‘&‹Lùs   ‚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Ó*ˆä�I‰I�b‹MˆÙ˜!“9ˆÙ�A‹hˆØ×Ñ ¨#Õ.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>.check  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 )
NéüÿÿÿrZ  é   rR  r¥  r¨   rS  r©   r·   )r   r{  ræ   r®   )Úreal_nanÚimag_nanÚrealÚimags       r   Ú
make_arrayz8TestArrayReductions.test_ptp_complex.<locals>.make_array	  sf   € Ü—;‘;˜r 1 bÓ)ˆDÙÜŸF™F��Q�q�	Ü—;‘;˜r 1 bÓ)ˆDÙÜŸV™V��Q�r�
Ø˜2 ™9Ñ$×-Ñ-¨a°Ó3Ð3r   rž   )Úrepeatrt  r<  rZ  r·   )rZ  rZ  y      ð?      ð¿)Ú
fill_value)FF)r“   r   r   r   Úonesr¦   r)  )
rÑ   rÜ   rB  r>  r?  Úcompr@  rA  rÅ   rÛ   s
   `       @@r   Útest_ptp_complexz$TestArrayReductions.test_ptp_complex   s³   ú€ Ü!ˆØ"”˜TÔ" 6Ó*ˆö	3ó
	4ô #*¨4°¨-À×"BÑˆH�hÙ˜h¨Ó1ˆDÙ�$�Kð #Cô �w‰w�q‹zˆÜ�y‰y˜˜QÓˆØ�b˜4‘iÑˆÙˆdŒØ�b˜4‘iÑˆÙˆdŒä�w‰w�v¨6Ô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   r©  rï   r   r  rª  rŸ  r   rœ  r�  )rÑ   rÛ   rÅ   rð   Úmsgs        r   Útest_ptp_exceptionsz'TestArrayReductions.test_ptp_exceptions   s¾   € Ü!ˆØ"”˜TÔ" 6Ó*ˆð 	×ÑÔ!à×#Ñ#Ô%¨Ù”"—(‘(Ð.Ó/Ô0÷ &ð <ˆØ�‰�cœ3˜qŸ{™{Ó+Ô,à×ÑœzÔ*¨aÙ”"—(‘(˜2“,Ô÷ +ð 7ˆØ�‰�cœ3˜qŸ{™{Ó+Õ,÷ &Ð%ú÷ +Ð*ú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>.check9  ó%   ø€ Ù! !›9�Ù˜A“h�Ø×'Ñ'¨°#Õ6r   r4  r§   é(   rª   rZ  rž   r·   )rR   rZ   r   r   r{  r�  rÏ   rc  r|  rº   r)  r�  )
rÑ   ÚpyfuncsrÜ   r@  rA  r’   Ú_r¥   rÅ   rÛ   s
   `       @@r   Útest_min_max_complex_basicz.TestArrayReductions.test_min_max_complex_basic3  sï   ú€ Ü"Ô$4Ð4ˆãˆFØ&”C Ô& vÓ.ˆEö7ô
 —;‘;˜s B¨Ó+ˆDØ˜B‘xˆD��!ˆHØ˜!‘8ˆDØ�t˜b‘yÑ ˆAÙ�!ŒHä˜2–Y�Ø—‘×#Ñ# DÔ)Ø—‘×#Ñ# DÔ)ØŸ™×*Ñ*¬B¯L©L¼"¿-¹-Ð+HÓI�Ø˜4 "™9Ñ$�Ø˜"™��"�1�Ù�a—h‘h˜u“oÕ&ñ ñ 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>.checkR  rM  r   r4  r§   rN  rª   rZ  r¨   rR  rž   rS  r©   r·   )	rq   rt   r   r   r{  ræ   r�  rÏ   rc  )	rÑ   rO  rÜ   r@  rA  r’   rP  rÅ   rÛ   s	   `      @@r   Ú test_nanmin_nanmax_complex_basicz4TestArrayReductions.test_nanmin_nanmax_complex_basicL  sâ   ú€ Ü¤Ð,ˆãˆFØ&”C Ô& vÓ.ˆEö7ô
 —;‘;˜s B¨Ó+ˆDØ˜B‘xˆD��!ˆHÜŸ™ˆD��1ˆIØ˜!‘8ˆDÜŸ™ˆD��2ˆJØ�t˜b‘yÑ ˆAÙ�!ŒHä˜2–Y�Ø—‘×#Ñ# 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>.checki  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Ÿ   rx  rZ  rž   ))r4  rZ  iôÿÿÿ)r¨   éÈ   iâÿÿÿr«   ry  g‰A`åÐ"	@FgÍÌÌÌÌÌÀrç   gš™™™™™ñ?)gš™™™™™Àgffffff!@)r   r  ræ   rä   r'  r   r   r(  zMTestArrayReductions.test_nanmin_nanmax_non_array_inputs.<locals>.a_variationsn  sp   è ø€ ÚÒØ0Ò0Ü—(‘(˜1“+ÒØŠJØŠKØŠKÜ—6‘6˜5 $¨Ð,Ò,Ü—6‘6œ2Ÿ6™6¤B§F¡F 7Ð+Ò+Ü—F‘F˜C�= +Ð.Ó.ùs   ‚BBTrÔ   )rq   rt   r   )rÑ   rO  rÜ   r(  r’   rÅ   rÛ   s   `    @@r   Ú#test_nanmin_nanmax_non_array_inputsz7TestArrayReductions.test_nanmin_nanmax_non_array_inputsf  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«   rZ  rx  rž   r«   ©r   rŸ   r³  éx   rZ  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>�  ó   € ¤b§i¡i°¸Õ&>r   TrÔ   ©
r   r  r¦   r®   Úlistr�  rÃ  r   rØ   Úpy_func©rÑ   Úarr1dÚarr2dÚarr4dr   r’  Úaxesre  Ú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°Ó2°RÑ7ˆØˆjÓ˜SÑ ÓØˆjÓ˜RÑÓà˜5 %Ó(ˆCÜœ˜cŸh™h›Ó(Ü % c§h¡h¤ó,Ù /˜1�!�A‘#’ ñ,ñ ˆDñ
 !óá �Dð !%Ô>Ø ð ð ñ
 :FóÙ9E¨vÐ"”˜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 )Nrx  rž   r«   TrÔ   c                 ó.   — t        j                  | |«      S r   rj   ©r   re  s     r   Ú	jitargmaxzDTestArrayReductions.test_argmax_axis_out_of_range.<locals>.jitargmaxš  ó   € ä—9‘9˜S $Ó'Ð'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©ÚassertRaisesRegexr�  rl  )r   re  rz  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®   r   r©  )rÑ   rn  ro  r€  rz  s   `   @r   Útest_argmax_axis_out_of_rangez1TestArrayReductions.test_argmax_axis_out_of_range–  s|   ù€ Ü—	‘	˜!“ˆÜ—	‘	˜!“×$Ñ$ Q¨Ó*ˆä	�dÔ	ñ	(ó 
ð	(õ	%ñ 	�e˜QÔÙ�e˜RÔ Ù�e˜RÔ Ù�e˜QÔà×ÑÕ!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)Nrx  TrÔ   c                 ó.   — t        j                  | |«      S r   rj   ry  s     r   rz  zGTestArrayReductions.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   rz  rð   s       r   Ú test_argmax_axis_must_be_integerz4TestArrayReductions.test_argmax_axis_must_be_integer«  óf   € Ü�i‰i˜‹lˆä	�dÔ	ñ	(ó 
ð	(ð ×#Ñ#Ô%¨Ù�c˜5Ô!÷ &à�‰Ð/´°Q·[±[Ó1AÕB÷ &Ð%úó   ¸
A0Á0A9c                 ó¶   ‡— t        j                  d«      j                  dd«      Šˆfd„}| j                   |‰«        t	        d¬«      |«      ‰«      «       y )Nrx  rž   r«   c                 ó(   •— ‰j                  d¬«      S ©Nr   rd  rf   ©r   ro  s    €r   rg   z;TestArrayReductions.test_argmax_method_axis.<locals>.argmax¹  ó   ø€ Ø—<‘< Q�<Ó'Ð'r   TrÔ   ©r   r¦   r®   rØ   r   ©rÑ   rg   ro  s     @r   Útest_argmax_method_axisz+TestArrayReductions.test_argmax_method_axis¶  óP   ø€ Ü—	‘	˜!“×$Ñ$ Q¨Ó*ˆô	(ð 	×Ñ¡ u£Ø :Ð 2¤¨TÔ 2°6Ó :¸5Ó Aõ	Cr   c                 óÖ   ‡— t        j                  dt         j                  ¬«      j                  dd«      Šˆfd„}| j	                   |‰«        t        d¬«      |«      ‰«      «       y )Nrx  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¦   rÒ  r®   rØ   r   r”  s     @r   Útest_argmax_return_typez+TestArrayReductions.test_argmax_return_type¿  óW   ø€ ä—	‘	˜!¤2§8¡8Ô,×4Ñ4°Q¸Ó:ˆô	(ð 	×Ñ¡ u£Ø :Ð 2¤¨TÔ 2°6Ó :¸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[  rx  rž   r«   r]  r³  r^  rZ  r¨   r§   r_  r`  ra  rŸ   c                 ó0   — t        j                  | |¬«      S rc  rc   rf  s     r   rh  z?TestArrayReductions.test_argmin_axis_1d_2d_4d.<locals>.<lambda>×  ri  r   TrÔ   rj  rm  s               r   Útest_argmin_axis_1d_2d_4dz-TestArrayReductions.test_argmin_axis_1d_2d_4dÉ  ru  rv  c                 ó  ‡ ‡— t        j                  d«      }t        j                  d«      j                  dd«      }t        d¬«      d„ «       Šˆˆ fd„} ||d«        ||d	«        ||d
«        ||d«       ‰ j	                  «        y )Nrx  rž   r«   TrÔ   c                 ó.   — t        j                  | |«      S r   rc   ry  s     r   Ú	jitargminzDTestArrayReductions.test_argmin_axis_out_of_range.<locals>.jitargminä  r{  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r}  r~  )r   re  r¡  rÑ   s     €€r   r€  zHTestArrayReductions.test_argmin_axis_out_of_range.<locals>.assert_raisesè  r�  r‚  rŸ   rƒ  r&  r„  )rÑ   rn  ro  r€  r¡  s   `   @r   Útest_argmin_axis_out_of_rangez1TestArrayReductions.test_argmin_axis_out_of_rangeà  s~   ù€ Ü—	‘	˜!“ˆÜ—	‘	˜!“×$Ñ$ Q¨Ó*ˆä	�dÔ	ñ	(ó 
ð	(õ	%ñ 	�e˜QÔÙ�e˜RÔ Ù�e˜RÔ Ù�e˜QÔð 	×ÑÕ!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)Nrx  TrÔ   c                 ó.   — t        j                  | |«      S r   rc   ry  s     r   r¡  zGTestArrayReductions.test_argmin_axis_must_be_integer.<locals>.jitargminù  r{  r   rˆ  r‰  rŠ  )rÑ   r   r¡  rð   s       r   Ú test_argmin_axis_must_be_integerz4TestArrayReductions.test_argmin_axis_must_be_integerö  rŒ  r�  c                 ó¶   ‡— t        j                  d«      j                  dd«      Šˆfd„}| j                   |‰«        t	        d¬«      |«      ‰«      «       y )Nrx  rž   r«   c                 ó(   •— ‰j                  d¬«      S r�  r_   r‘  s    €r   r`   z;TestArrayReductions.test_argmin_method_axis.<locals>.argmin  r’  r   TrÔ   r“  ©rÑ   r`   ro  s     @r   Útest_argmin_method_axisz+TestArrayReductions.test_argmin_method_axis  r–  r   c                 óÖ   ‡— t        j                  dt         j                  ¬«      j                  dd«      Šˆfd„}| j	                   |‰«        t        d¬«      |«      ‰«      «       y )Nrx  r¤   rž   r«   c                 ó(   •— ‰j                  d¬«      S r�  r_   r‘  s    €r   r`   z;TestArrayReductions.test_argmin_return_type.<locals>.argmin  r’  r   TrÔ   r™  r©  s     @r   Útest_argmin_return_typez+TestArrayReductions.test_argmin_return_type
  r›  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)rI  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_function<  sZ   ø€ ð  !˜Ø! X×%6Ñ%6Ñ6ÜŸO™O¨IÔ6ð $%˜DÜ#2°7¸IÓ#F™˜˜SØ×/Ñ/°°S¸hØ5=À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_tests1  sƒ   ù€ ã�Ü.¨rÓ2�Ü,3°E¸;Ö,GÑ(�H˜jà 3�IØ )× 0Ñ 0°×1BÑ1BØ1;×1AÑ1A×1FÑ1FØ1;·±ó!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_tests  sÈ   ø€ ô
 %Ô&6Ü%Ô'8Ü%Ô'8Ü$Ô&6Ü$Ô&6Ü$Ô&6Ü$Ô&6Ü$Ô&6Ü%¤zÜ$Ô&6Ü'¬Ü'ðˆô  #/Ô0CÜ".Ô0Cð"EÐð 	œM¬<¼ÐFÑFˆØœM˜?Ñ*ˆäŸ(™(¤B§J¡J´·±¼"¿,¹,ÐGˆô	?ñ8 	�n S bÐ)Ð+AÔBñ 	�n oÕ6r   )r³  )F)erý  Ú
__module__Ú__qualname__Ú__doc__rÎ   ré   rñ   r   rû   r
  r  r   r  r  r  r  r"  r+  r0  r2  r4  r6  r8  r:  r<  r?  rA  rC  rE  rH  rJ  rL  rN  r_  Ústaticmethodrd  rh  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/  r6  r   r8  rG  rJ  rQ  rT  rY  rt  r…  r‹  r•  rš  rž  r£  r¦  rª  r­  ÚclassmethodrÆ  Ú__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ò<ò;ò;ò9ò4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   rœ  ÚBaseExceptionÚ	zero_sizer�  rª  rŸ  r   )rÑ   rÛ   rI  rÅ   rð   s        r   Úcheck_exceptionz-TestArrayReductionsExceptions.check_exception[  s~   € Ø"”˜TÔ" 6Ó*ˆà×Ñœ}Õ-Ù�4—>‘>Ô"÷ .ð ×ÑœzÔ*¨aÙ�$—.‘.Ô!÷ +à�‰�cœ3˜qŸ{™{Ó+Õ,÷ .Ð-ú÷ +Ð*ú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_fnx  s   € Ø×$Ñ$ T¨7Õ3r   )Údictrh   rk   ra   rd   rX   rP   Úitemsr¹  rý  r  r»  )rÁ  Ú	fn_to_msgÚ	empty_seqÚop_no_identrˆ  Úname_templateÚfnrI  rÀ  ÚlmsgrÚ  s              r   Úinstallz%TestArrayReductionsExceptions.installe  sÌ   € ô “Fˆ	Ø=ˆ	ðˆäÔ 3´\Ü%ó'ˆAà$ˆI�aŠLð'ô œY¬	´9Ó=ˆAØ&ˆI�aŠLð >ð 3ˆØ —‘Ö(‰GˆB�Ø%×,Ñ,¨R¯[©[Ó9ˆIà—:‘:˜bŸk™kÓ*ˆDØ—<‘< ¨Ó,×4Ñ4°Y¸rÓBˆDØ#%¨tó 4ô �C˜ GÕ,ñ )r   N)	rý  rÇ  rÈ  r   r¦   rÑ  rÒ  rË  rã  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Ê   rÆ  rÎ  rã  rý  Úmainr'  r   r   Ú<module>rì     sc  ðß <ã ç #Ñ #Ý 0ß OÓ OÛ òòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòò!ò$òòòò"òò"ò(&ôQ7˜/¨8ô Q7ðh$ × +Ñ +Ô -ô%- O°Xô %-ðN × %Ñ %Ô 'ð ˆzÒØ€H‡M�M…Oð r   