
    ܙd                    4   d dl Z d dlZd dlZd dlmZ d dl mZ d dlZd dlmZ d dl	Z
d dlmZ d dlmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'Z' e            Z(de(_)        d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5ddZ6d Z7d Z8d Z9d  Z:d! Z;d" Z<d# Z=d$ Z>d% Z?d& Z@d' ZAdd(ZBdd)ZCdd-ZDd. ZEd/ ZFd0 ZGd1 ZHd2 ZId3 ZJd4 ZKd5 ZLdd7ZMd8 ZNdd:ZOdd;ZPdd<ZQd= ZRd> ZSd? ZTdd@ZUddAZVddBZWdC ZXddDZYdE ZZddFZ[ddGZ\ddHZ]dI Z^ddJZ_dK Z`ddLZadM ZbddNZcddOZdddPZedQ ZfddRZgddSZhdT ZidU ZjddVZkddWZlddXZmdY ZndZ Zod[ Zpe
jq        fd\Zrd] Zsd^ Ztd_ Zud` Zvda Zwdb ZxddcZydddZzde Z{df Z|dg Z}ddhZ~di Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds ZddtZdu Zdv ZddxZ G dy dze$e"          Z G d{ d|e"          Z G d} d~e"          Zedk    r e'j                     dS dS )    N)partial)product)dedent)Flags)jitnjittypeof)types)ListDict)numpy_version)TypingErrorNumbaDeprecationWarning)	IS_32BITS)pysignaturecross2d)TestCaseCompilationCacheMemoryLeakMixin
needs_blasrun_in_subprocessTc                 *    t          j        |           S N)npsincxs    =lib/python3.11/site-packages/numba/tests/test_np_functions.pyr   r          71::    c                 *    t          j        |           S r   r   angler   s    r   angle1r%   #       8A;;r!   c                 ,    t          j        | |          S r   r#   )r   degs     r   angle2r)   '   s    8Asr!   c                 ,    t          j        | |          S r   )r   array_equalabs     r   r+   r+   +       >!Qr!   c                 ,    t          j        | |          S r   )r   intersect1dr,   s     r   r1   r1   /   r/   r!   c                 0    t          j        | ||          S Naxis)r   append)arrvaluesr5   s      r   r6   r6   3   s    9S&t,,,,r!   c                 .    t          j        | |          S r3   )r   count_nonzero)r7   r5   s     r   r:   r:   7   s    Cd++++r!   c                 ,    t          j        | |          S r   )r   delete)r7   objs     r   r<   r<   ;   s    9S#r!   c                 *    t          j        |           S r   r   diffr-   s    r   diff1rB   ?   r    r!   c                 ,    t          j        | |          S r   r?   )r-   ns     r   diff2rE   C       71a==r!   c                 *    t          j        |           S r   r   bincountrA   s    r   	bincount1rJ   G       ;q>>r!   c                 .    t          j        | |          S )NweightsrH   )r-   ws     r   	bincount2rP   K   s    ;q!$$$$r!   c                 .    t          j        | ||          S r   rH   )r-   rO   	minlengths      r   	bincount3rS   O   s    ;q!Y'''r!   c                 ,    t          j        | |          S r   r   searchsortedr-   vs     r   rV   rV   S       ?1a   r!   c                 0    t          j        | |d          S )NleftsiderU   rW   s     r   searchsorted_leftr^   W   s    ?1af----r!   c                 0    t          j        | |d          S )Nrightr\   rU   rW   s     r   searchsorted_rightra   [   s    ?1ag....r!   c                      t          j        |  S r   )r   digitizeargss    r   rc   rc   _   s    ;r!   c                      t          j        |  S r   )r   	histogramrd   s    r   rg   rg   c   s    <r!   c                  (    t          j                    S r   )r   MachArrd   s    r   macharrj   g   s    9;;r!   c                 *    t          j        |           S r   )r   	iscomplexr   s    r   rl   rl   k       <??r!   c                 *    t          j        |           S r   )r   iscomplexobjr   s    r   ro   ro   o       ?1r!   c                 *    t          j        |           S r   )r   isscalarr   s    r   rr   rr   s   rK   r!   c                 *    t          j        |           S r   )r   isrealr   s    r   rt   rt   w       9Q<<r!   c                 *    t          j        |           S r   )r   	isrealobjr   s    r   rw   rw   {   rm   r!   c                 ,    t          j        | |          S r   )r   isneginfr   outs     r   ry   ry          ;q#r!   c                 ,    t          j        | |          S r   )r   isposinfrz   s     r   r~   r~      r|   r!   h㈵>:0yE>Fc                 2    t          j        | ||||          S r   )r   iscloser-   r.   rtolatol	equal_nans        r   r   r      s    :aD$	222r!   c                 *    t          j        |           S r   )r   isnatr   s    r   r   r      r&   r!   c                      t          j        |  S r   )r   iinford   s    r   r   r          8T?r!   c                      t          j        |  S r   )r   finford   s    r   r   r      r   r!   c                  (    t          j        |  j        S r   )r   r   rj   rd   s    r   finfo_macharr      s    8T?!!r!   c                 *    t          j        |           S r   r   fliplrrA   s    r   r   r      ru   r!   c                 *    t          j        |           S r   r   flipudrA   s    r   r   r      ru   r!   c                 *    t          j        |           S r   )r   fliprA   s    r   r   r      r    r!   c                 ,    t          j        | |          S r   r   logspace)startstops     r   	logspace2r      s    ;ud###r!   2   c                 0    t          j        | ||          S )N)numr   )r   r   r   s      r   	logspace3r      s    ;ud,,,,r!   c                 *    t          j        |           S r   r   rot90rA   s    r   r   r      r&   r!      c                 ,    t          j        | |          S r   r   )r-   ks     r   rot90_kr          8Aq>>r!   c                 0    t          j        | ||          S r3   )r   array_splitr-   indicesr5   s      r   r   r      s    >!W40000r!   c                 0    t          j        | ||          S r3   )r   splitr   s      r   r   r      s    8AwT****r!   c                 ,    t          j        | |          S r   )r   	correlaterW   s     r   r   r      s    <1r!   c                 ,    t          j        | |          S r   )r   convolverW   s     r   r   r      s    ;q!r!   c                 *    t          j        |           S r   r   triNs    r   tri_nr      s    6!99r!   c                 ,    t          j        | |          S r   r   r   Ms     r   tri_n_mr          6!Q<<r!   c                 ,    t          j        | |          S r   r   r   r   s     r   tri_n_kr      r   r!   c                 .    t          j        | ||          S r   r   r   r   r   s      r   	tri_n_m_kr      s    6!Q??r!   c                 *    t          j        |           S r   r   trilms    r   tril_mr      r    r!   c                 ,    t          j        | |          S r   r   r   r   s     r   tril_m_kr      rF   r!   c                 *    t          j        |           S r   r   tril_indicesrD   s    r   tril_indices_nr      rp   r!   c                 ,    t          j        | |          S r   r   rD   r   s     r   tril_indices_n_kr      rY   r!   c                 .    t          j        | |          S Nr   r   rD   r   s     r   tril_indices_n_mr          ?1""""r!   c                 .    t          j        | ||          S r   r   rD   r   r   s      r   tril_indices_n_k_mr          ?1a###r!   c                 *    t          j        |           S r   r   tril_indices_fromr7   s    r   tril_indices_from_arrr          $$$r!   c                 ,    t          j        | |          S r   r   r7   r   s     r   tril_indices_from_arr_kr          Q'''r!   c                 *    t          j        |           S r   r   triur   s    r   triu_mr      r    r!   c                 ,    t          j        | |          S r   r   r   s     r   triu_m_kr      rF   r!   c                 *    t          j        |           S r   r   triu_indicesr   s    r   triu_indices_nr      rp   r!   c                 ,    t          j        | |          S r   r   r   s     r   triu_indices_n_kr     rY   r!   c                 .    t          j        | |          S r   r   r   s     r   triu_indices_n_mr     r   r!   c                 .    t          j        | ||          S r   r   r   s      r   triu_indices_n_k_mr     r   r!   c                 *    t          j        |           S r   r   triu_indices_fromr   s    r   triu_indices_from_arrr     r   r!   c                 ,    t          j        | |          S r   r   r   s     r   triu_indices_from_arr_kr     r   r!   c                 .    t          j        | ||          S r   )r   vanderr   r   
increasings      r   r   r     s    9Q:&&&r!   c                 ,    t          j        | |          S r   )r   	partitionr-   kths     r   r  r    s    <3r!   c                 ,    t          j        | |          S r   )r   argpartitionr  s     r   r  r    s    ?1c"""r!   c                 2    t          j        | ||||          S r   )r   cov)r   yrowvarbiasddofs        r   r
  r
  #  s    6!Qd+++r!   c                 .    t          j        | ||          S r   )r   corrcoefr   r  r  s      r   r  r  '  s    ;q!V$$$r!   c                 .    t          j        | ||          S r   )r   ediff1d)aryto_endto_begins      r   r  r  +  s    :c68,,,r!   c                 ,    t          j        | |          S r   )r   roll)r-   shifts     r   r  r  /  s    71er!   c                 *    t          j        |           S r   r   asarrayrA   s    r   r  r  3      :a==r!   c                 .    t          j        | |          S Ndtyper  r-   r!  s     r   asarray_kwsr#  7  s    :au%%%%r!   c                 .    t          j        | |          S r  r   asfarrayr"  s     r   r&  r&  ;  s    ;q&&&&r!   c                 *    t          j        |           S r   r%  rA   s    r   asfarray_default_kwargr(  ?  rK   r!   c                 ,    t          j        | |          S r   )r   extract	conditionr7   s     r   r*  r*  C  s    :i%%%r!   c                 *    t          j        |           S r   r   trapzr  s    r   np_trapzr1  G  r&   r!   c                 ,    t          j        | |          S r   r.  r  r   s     r   
np_trapz_xr4  K  r   r!   c                 .    t          j        | |          S )Ndxr.  r  r7  s     r   np_trapz_dxr9  O  s    8A"r!   c                 .    t          j        | ||          S r   r.  r  r   r7  s      r   np_trapz_x_dxr<  S  s    8Aq"r!   c                 2    t          j        | ||||          S r   )r   allcloser   s        r   np_allcloser?  W  s    ;q!T4333r!   c                 0    t          j        | ||          S )Nr5   rN   )r   average)r-   r5   rN   s      r   
np_averagerC  [  s    :adG4444r!   c                 .    t          j        | ||          S r   )r   interpr   xpfps      r   rE  rE  _  s    9QBr!   c                 ,    t          j        | |          S r   )r   repeatr-   repeatss     r   	np_repeatrM  c  s    9Q   r!   c                 P    t          j        |                               |          S r   )r   r  rJ  rK  s     r   array_repeatrO  g  s    :a==(((r!   c                 0    t          j        | ||          S )N)defaultr   select)condlist
choicelistrQ  s      r   	np_selectrV  k  s    9Xz7;;;;r!   c                 ,    t          j        | |          S r   rR  )rT  rU  s     r   np_select_defaultsrX  o  s    9Xz***r!   c                 *    t          j        |           S r   )r   bartlettr   s    r   np_bartlettr\  s  rK   r!   c                 *    t          j        |           S r   )r   blackmanr[  s    r   np_blackmanr_  w  rK   r!   c                 *    t          j        |           S r   )r   hammingr[  s    r   
np_hammingrb  {  r  r!   c                 *    t          j        |           S r   )r   hanningr[  s    r   
np_hanningre    r  r!   c                 ,    t          j        | |          S r   )r   kaiser)r   betas     r   	np_kaiserri    s    9Qr!   c                 ,    t          j        | |          S r   )r   crossr,   s     r   np_crossrl    r   r!   c                 "    t          | |          S r   r   r,   s     r   
nb_cross2drn    s    1a==r!   c                 *    t          j        |           S r   r   rA   s    r   flip_lrrp    ru   r!   c                 *    t          j        |           S r   r   rA   s    r   flip_udrr    ru   r!   c                 ,    t          j        | |          S r   )r   union1dr,   s     r   
np_union1dru    s    :a??r!   c                 ,    t          j        | |          S r   )r   asarray_chkfiniter"  s     r   np_asarray_chkfiniterx    s    5)))r!   c                 
    || v S r    )r-   keys     r   array_containsr|    s    !8Or!   c                 .    t          j        | ||          S r   )r   swapaxes)r-   a1a2s      r   r~  r~    s    ;q"b!!!r!           c                 0    t          j        | ||          S )Ncopynan)r   
nan_to_num)Xr  r  s      r   r  r    s    =3////r!   c                   @    e Zd ZdZ fdZeddddfdZ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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.dd.Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8e9d8             Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCddCZDdD ZEdE ZFdF ZGdG ZHdH ZIdI ZJdJ ZKdK ZLdL ZMdM ZNdN ZOdO ZPdP ZQdQ ZRdR ZSdS ZTdT ZUdU ZVdV ZWdW ZXdX ZYdY ZZdZ Z[d[ Z\d\ Z]d] Z^d^ Z_d_ Z`d` Zada Zbdb Zcdc Zddd Zede Zfegdf             Zhdg Ziegdh             Zjegdi             Zkegdj             Zlegdk             Zmdl Znegdm             Zoegdn             Zpegdo             Zqegdp             Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej        d          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestNPFunctionsz,
    Tests for various Numpy functions.
    c                     t          t          |                                            t                      | _        t
          j                            d          | _        d S )N*   )	superr  setUpr   ccacher   randomRandomStaternd)self	__class__s    r   r  zTestNPFunctions.setUp  sG    ot$$**,,,&((9((,,r!   NFc	           
         t          ||          D ]\  }
}|dgx}}t          ||          D ]\  }}| j                            ||
f|z   |          }|j        } ||g|R  } ||g|R  }	 |
j        }n# t
          $ r |
}Y nw xY w|t          j        t          j        fv rdnd}d|d|} | j	        ||f||||d|	 dS )	a  
        Runs tests for a unary function operating in the numerical real space.

        Parameters
        ----------
        pyfunc : a python function definition holding that calls the numpy
                 functions to be tested.
        x_types: the types of the values being tested, see numba.types
        x_values: the numerical values of the values to be tested
        flags: flags to pass to the CompilationCache::ccache::compile function
        func_extra_types: the types of additional arguments to the numpy
                          function
        func_extra_args:  additional arguments to the numpy function
        ignore_sign_on_zero: boolean as to whether to allow zero values
        with incorrect signs to be considered equal
        prec: the required precision match, see assertPreciseEqual

        Notes:
        ------
        x_types and x_values must have the same length

        Nrz  )flagssingledoublez
for input z with prec )precmsgignore_sign_on_zeroabs_tol)
zipr  compileentry_pointr!  AttributeErrorr
   float32	complex64assertPreciseEqual)r  pyfuncx_typesx_valuesr  func_extra_typesfunc_extra_argsr  r  kwargstxvxxtypesxargscrcfuncgotexpectedscaltyr  r  s                        r   	run_unaryzTestNPFunctions.run_unary  sy   2 '8,, 	C 	CFB&68T9 ?!$%5!G!G C C[(("/4 ) 6 6eB''''!6"-u--- XFF%      FFF  "emU_%EEE !%  68RR>''X C-1,/<O07	C C <B	C C C CC	C 	Cs   -A55BBc                     ddt            fd}g d}t          j        t          j        gt	          |          dz  z  } |||           t          j        |t
          j                  g}d |D             } |||           g d}t          j        t          j        gt	          |          dz  z  } |||d	           t          j        |t
          j                  g}d
 |D             } |||d	           dS )zv
        Tests the sinc() function.
        This test is purely to assert numerical computations are correct.
        Tepsc                 .     j         | |fd| d S )N)r  r  )r  )r  r  r  isozr  r  tols      r   checkz(TestNPFunctions.test_sinc.<locals>.check  s@    DN67H %/3S% %#% % % % %r!   )
      ?      r               ?         g#B;g#B   r   c                 ,    g | ]}t          |          S rz  r	   .0rX   s     r   
<listcomp>z-TestNPFunctions.test_sinc.<locals>.<listcomp>      ///6!99///r!   )      ?                                      r                ?y                    ?                            ?      ?                  @      @            y#B;        y#B        y        #B;y        #B)ulpsc                 ,    g | ]}t          |          S rz  r  r  s     r   r  z-TestNPFunctions.test_sinc.<locals>.<listcomp>  r  r!   N)	r   r
   r  float64lenr   arrayr  
complex128)r  r  r  r  r  r  r  s   `   @@@r   	test_sinczTestNPFunctions.test_sinc  sS     	% 	% 	% 	% 	% 	% 	% 	% IHH=%-0CMMQ4FGgx    HXRZ8889//h///gx     
 ?E$45X!9KLgxa(((( HXR];;;<//h///gxa((((((r!   c                 8   t           } t          d          |          }|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                                  d S )NTnopythonstrz+Argument "x" must be a Number or array-like)r   r   assertRaisesr   assertInr  	exceptiondisable_leak_checkr  r  r  raisess       r   test_sinc_exceptionsz$TestNPFunctions.test_sinc_exceptions  s    "T"""6**{++ 	vE%LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	C&*++	- 	- 	- 	!!!!!   AAAc                     d }t           } t          d          |          } |            D ]3\  }} |||          } |||          }|                     ||           4d S )Nc               3   l  K   t          j        dd          } d}| |fV  t          j        d          }d}||fV  t          j        dg          }d}d}||fV  ||fV  t          j        g           }||fV  t          j        ddg          }|dfV  ||fV  t           j                            d           t           j                            d          }	t           j                            d           t           j                                        }
|	d	         }|	|
fV  |	|fV  |	                    t           j                  }||d	         fV  ||
fV  t           j                            d           t           j        	                    dd
t           j
                  }|dfV  |dfV  d S )N
   r            TFr  r      )sizer!  r     )r   aranger  r  r  seedrandviewr  randintuint8)a_0k_0a_1k_1single_val_ak_ink_out	empty_arrbool_arr	float_arrrand_k	present_k
complx_arruint_arrs                 r   arrsz+TestNPFunctions.test_contains.<locals>.arrs*  s     )B##CCs(NNN)A,,CCs(NNN:rd++LDE$$$$%%%%
2IU"""" xu..HD.   C-INN1	r**IINN1Y^^%%F!!IV####Y&&&&"66Jjm++++f$$$$INN1y(("BH(EEHA+B,r!   Tr  )r|  r   r  )r  r  r  r  r7   r{  r  receiveds           r   test_containszTestNPFunctions.test_contains)  s    +	 +	 +	Z  "T"""6** 	8 	8HCvc3''HuS#H##Hh7777		8 	8r!   c                     t           t           fd}g d}t          j        t          j        gt          |          dz  dz   z  } |||           t          j        |t          j                  g}d |D             } |||           g d}t          j        t          j	        gt          |          dz  dz   z  } |||           t          j        |          }t          j        t          j	        g} |||           dS )	zw
        Tests the angle() function.
        This test is purely to assert numerical computations are correct.
        c                                          | |           ddg}t          j        fgt          |          z  }                     | |||           d S )NTF)r  r  )r  r
   bool_r  )r  r  xtra_values
xtra_typespyfunc1pyfunc2r  s       r   r  z)TestNPFunctions.test_angle.<locals>.checki  sm    NN7GX666"H-K ;.)C,<,<<JNN7GX,6+6  9 9 9 9 9r!   )r  r  r  r  r  r  r  r  r  r   r   c                 ,    g | ]}t          |          S rz  r  r  s     r   r  z.TestNPFunctions.test_angle.<locals>.<listcomp>z  r  r!   )r  r  r  r  r  y             r  r  r  r  r  r  N)
r%   r)   r
   r  r  r  r   r  r  r  )r  r  r  r  r  r  r  s   `    @@r   
test_anglezTestNPFunctions.test_anglea  s8   
 	9 	9 	9 	9 	9 	9 	9 :99=%-0CMMQ4F4JKgx    HXRZ8889//h///gx   A A A?E$45X!9Ka9OPgx    8H%%?E$45gx     r!   c                    d }|}g d}g d}t          ||          D ]a\  }}t          j        |g|          } t          d          |          } ||          }	 ||          }
|                     |	|
           bd S )Nc                 8    t          j        |           }|j        S r   )r   r$   r!  )r   rs     r   numba_anglez;TestNPFunctions.test_angle_return_type.<locals>.numba_angle  s    A7Nr!   )r  r  r  r  )f4f8c8c16r   Tr  )r  r   r  r   assertEquals)r  r  r  r  r  valtypr   r  r  r  s              r   test_angle_return_typez&TestNPFunctions.test_angle_return_type  s    	 	 	 ...+++Hg.. 	- 	-HC#c***A&C&&&v..EvayyH%((Ch,,,,	- 	-r!   c                 8   t           } t          d          |          }|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                                  d S )NTr  helloz0Argument "z" must be a complex or Array[complex])r%   r   r  r   r  r  r  r  r  s       r   test_angle_exceptionsz%TestNPFunctions.test_angle_exceptions  s    "T"""6**{++ 	vE'NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	H&*++	- 	- 	- 	!!!!!r  c                     d }t           } t          d          |          } |            D ]3\  }} |||          } |||          }|                     ||           4d S )Nc               3     K   t          j        g           t          j        g           fV  t          j        ddg          t          j        ddg          fV  t          j        g           t          j        dg          fV  t          j        d                              dd          } d| d         d<   t          j        d                              dd          | fV  | | fV  dV  dV  dV  d	V  d
V  dV  dV  dV  d S )Nr   r  r  r     r   r     r"  )r  r  )r#  r  )TTTF)Tr  )Tr   )Fr   r   r  r  reshaper   s    r   arraysz0TestNPFunctions.test_array_equal.<locals>.arrays  s,     (2,,,,,,(Aq6""BHaV$4$44444(2,,!----	"%%a++AAaDG)B--''1--q0000Q$JJJ&&&&JJJJJJMMMMMMNNNNNr!   Tr  )r+   r   r  r  r'  r  r  r7   r=   r  r  s           r   test_array_equalz TestNPFunctions.test_array_equal  s    	 	 	" "T"""6** 	3 	3HCvc3''H%S//C##Hc2222	3 	3r!   c                 ^   t           } t          d          |          }|                     t                    5 } |t	          j        d                              dd          d            d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )NTr     r#     z3Both arguments to "array_equals" must be array-like)
r+   r   r  r   r   r  r&  r  r  r  r  s       r   test_array_equal_exceptionz*TestNPFunctions.test_array_equal_exception  s    "T"""6**{++ 	8vE")E""**1a00$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8A !!	
 	
 	
 	
 	
s   3A::A>A>c                    d }t           } t          d          |          } |            D ][\  }}t          j        |          }t          j        |          } |||          } |||          }|                     ||           \d S )Nc               3      K   g g fV  dgg fV  g dgfV  dgdgfV  dgdgfV  ddgdgfV  g dddgfV  ddgddgfV  g dg dfV  d S )Nr   r  r   r  r  r"  rz  rz  r!   r   r'  z0TestNPFunctions.test_intersect1d.<locals>.arrays  s      b&LLL#r'MMMqc'MMM#s(NNN#s(NNNa&1#+))aV####a&1a&.   ))YYY&&&&&&r!   Tr  )r1   r   r   r  r  )r  r'  r  r  r-   r.   r  r  s           r   test_intersect1dz TestNPFunctions.test_intersect1d  s    		' 		' 		' "T"""6**FHH 	3 	3DAqAAva||H%1++C##Hc2222	3 	3r!   c                     d }t           } t          d          |          } |            D ]3\  }} |||          } |||          }|                     ||           4d S )Nc               3     K   t          j        g           d fV  t          j        d          d fV  t          j        d          d fV  t          j        d                              ddd          d fV  t          j        d                              dd          dfV  t          j        d                              dd          dfV  d S )	Nr  <   r#  r,  r  r+  r   r   )r   r  zerosr  r&  rz  r!   r   r'  z2TestNPFunctions.test_count_nonzero.<locals>.arrays  s      (2,,$$$$(2,,$$$$)B--%%%%)I&&..q!Q77====)E""**1a00!3333)E""**1a00!333333r!   Tr  )r:   r   r  )r  r'  r  r  r7   r5   r  r  s           r   test_count_nonzeroz"TestNPFunctions.test_count_nonzero  s    	4 	4 	4 "T"""6** 	3 	3ICvc4((H%T""C##Hc2222	3 	3r!   c                     d }t           } t          d          |          } |            D ]6\  }}} ||||          } ||||          }|                     ||           7d S )Nc               3     K   dV  t          j        d          dd fV  t          j        d          t          j        d          d fV  t          j        d                              dd          t          j        d          d fV  t          j        g dg dg          t          j        g dg          d	fV  t          j        g dg dg          } | | d
fV  d S )N)r  r  Nr  r#  r  r  r"  r,  r  r        	   r   r   )r   r  r&  r  r   s    r   r'  z.TestNPFunctions.test_np_append.<locals>.arrays  s      )B--D(((()B--1t3333)B--''1--ry||TAAAA(IIIyyy122BHiii[4I4I1LLLL(IIIyyy122CsA+r!   Tr  )r6   r   r  )	r  r'  r  r  r7   r=   r5   r  r  s	            r   test_np_appendzTestNPFunctions.test_np_append  s    	 	 	 "T"""6**$fhh 	3 	3NCdvc3--H%S$''C##Hc2222	3 	3r!   c                 @   t           } t          d          |          }t          j        g dg dg          }t          j        g dg          }d}|                     t
                    5 } |d ||           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t
                    5 } ||d |           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t
                    5 } |||d	
           d d d            n# 1 swxY w Y   |                     dt          |j                             | 	                                 d S )NTr  r"  r9  r:  r   z+The first argument "arr" must be array-likez/The second argument "values" must be array-liker  r4   z,The third argument "axis" must be an integer)
r6   r   r   r  r  r   r  r  r  r  )r  r  r  r7   r8   r5   r  s          r   test_np_append_exceptionsz)TestNPFunctions.test_np_append_exceptions  s]   "T"""6**h			999-..999+&& {++ 	&vE$%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&9 !!	
 	
 	
 {++ 	#vE#tT"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#= !!	
 	
 	
 {++ 	)vE#vC((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	): !!	
 	
 	

 	!!!!!s6   .BBBC//C36C3<EEEc                     d }t           } t          d          |          } |            D ]3\  }} |||          } |||          }|                     ||           4d S )Nc               3   &  K   g ddfV  g dddgfV  t          j        d          dfV  t          j        d          dfV  t          j        d          g dfV  t          j        d          g dfV  t          j        d                              dd	d
          dfV  t          j        d                              dd	d
          g dfV  g dt          ddd          fV  t          j        d          t          d          fV  d S )Nr   r  r#  r,  r  r#  r  r  )r#  r  r  )r  r#  r,  r  r4  r,  r  )r  r      r<  r   r  r#  r,  r   )r   r  r&  slicerz  r!   r   r'  z+TestNPFunctions.test_delete.<locals>.arrays&  sD      "//1$$$$!//Aq6)))))B--"""")B--####)B--****)B------)I&&..q!Q77::::)I&&..q!Q77GGGG,,aA....)B--r******r!   Tr  )r<   r   r  r(  s           r   test_deletezTestNPFunctions.test_delete$  s    	+ 	+ 	+( "T"""6** 	3 	3HCvc3''H%S//C##Hc2222	3 	3r!   c                    t           } t          d          |          }|                                  |                     t                    5 } |ddgd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        d          g d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |dd	           d d d            n# 1 swxY w Y   |                     d
t          |j                             |                     t                    5 } |ddgd	           d d d            n# 1 swxY w Y   |                     dt          |j                             |                                  d S )NTr  r   r  gQ	@zobj should be of Integer dtyper  )g      @gffffff@g@r#  z)arr must be either an Array or a Sequencez"obj must be less than the len(arr))r<   r   r  r  r   r  r  r  r   r  
IndexErrorr  s       r   test_delete_exceptionsz&TestNPFunctions.test_delete_exceptionsB  s   "T"""6**!!!{++ 	 vE1a&$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 , !!	
 	
 	

 {++ 	2vE")B--111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2, !!	
 	
 	

 {++ 	vE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	7 !!	
 	
 	

 z** 	fE1a&!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	0 !!	
 	
 	

 	!!!!!sH   A**A.1A.7!C$$C(+C(1E

EEF22F69F6c              #      K   t          j        d          dz  }|V  |                    d          }|V  t          j        d                              d          dz  }|V  dS )z0
        Some test arrays for np.diff()
        r+  r#  r#  r,     )r#  r  r,  Nr   r  r&  r  r-   r.   cs       r   diff_arrayszTestNPFunctions.diff_arrayse  sj       IbMMQIIfIbMM!!),,1r!   c                 d   t           } t          d          |          }|                                 D ].} ||          } ||          }|                     ||           /t	          j        d          }|                                 5   ||           d d d            d S # 1 swxY w Y   d S )NTr  r  )rB   r   rR  r  r   r  assertTypingError)r  r  r  r7   r  r  r-   s          r   
test_diff1zTestNPFunctions.test_diff1p  s   "T"""6**##%% 	3 	3Cvc{{H%**C##Hc2222 HRLL##%% 	 	E!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B%%B),B)c           	         t           } t          d          |          }|                                 D ]P}|j        d         }dddd|dz
  ||dz   dfD ]0} |||          } |||          }|                     ||           1Qd S )	NTr  r   r   r  r#  i  )rE   r   rR  shaper  )r  r  r  r7   r  rD   r  r  s           r   
test_diff2zTestNPFunctions.test_diff2}  s    "T"""6**##%% 	7 	7C9R=DAq$(D$(C@ 7 7!6#q>>eCmm''#66667	7 	7r!   c                 ,   t           } t          d          |          }|                                  t          j        d          }|                                 5   ||d           d d d            n# 1 swxY w Y   t          j        d          }dD ]h}|                     t                    5 } |||           d d d            n# 1 swxY w Y   | 	                    dt          |j                             i|                                  d S )NTr  r  r   r  )rW  izorder must be non-negative)rE   r   r  r   r  rT  r  r  
ValueErrorr  r  r  )r  r  r  r7   rD   r  s         r   test_diff2_exceptionsz%TestNPFunctions.test_diff2_exceptions  s   "T"""6** 	!!! hrll##%% 	 	E#qMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 imm 	O 	OA"":.. &c1              MM6F<L8M8MNNNN!!!!!s$   A66A:=A:3CC	C	c                     d }t           } t          d          |          } |            D ]/} ||          } ||          }|                     |||           0d S )Nc               3   F  K   dV  t          j        dg          V  dV  dV  dV  t          d          V  t          j        d          V  dV  dV  d V  t          j        dd	          V  t          j        d
          V  t          j        dd	          V  d S )Nr#  )r#                @numbar  i90  gV-@TYnatr   )r   r  intint16timedelta64
datetime64rz  r!   r   r8   z-TestNPFunctions.test_isscalar.<locals>.values  s      GGG*aS//!!!JJJHHHMMMb''MMM(5//!!!KKKJJJJJJ.S)))))-&&&&&-3'''''''r!   Tr  )rr   r   assertEqualr  r8   r  r  r   r  r  s          r   test_isscalarzTestNPFunctions.test_isscalar  s    	( 	( 	( "T"""6** 	/ 	/AvayyH%((CXsA....	/ 	/r!   c                 @   d }t          d          d             }t          t          g}|D ]} t          d          |          } |            D ]} ||          } ||          }|                     ||           |                    |d|          }	 ||d|          }
|                     |	|
           |                    |d|          } ||d|          }|                     ||           |                     t          |j                  d           d S )Nc               3   R   K   dV  dV  t          j        g d          V  dV  d S )Nr   r  )r#  r  Thello worldr  rz  r!   r   r8   z4TestNPFunctions.test_isobj_functions.<locals>.values  sG      GGGLLL*.../////r!   Tr  c                 $    |r| nd } ||          S r   rz  )r   condr  r  s       r   optional_fnz9TestNPFunctions.test_isobj_functions.<locals>.optional_fn  s    #tA588Or!   Fr<  )r   ro   rw   rh  py_funcr  
signatures)r  r8   rp  pyfuncsr  r  r   r  r  expected_optionalgot_optionalexpected_nonegot_nones                r   test_isobj_functionsz$TestNPFunctions.test_isobj_functions  si   	  	  	  
d				 	 
		  + 	7 	7F&C&&&v..EVXX : :!6!99eAhh  3/// %0$7$74$H$H!*{1dE::  !2LAAA !, 3 3Auf E E&;q%77  9999S!122A6666#	7 	7r!   c                     d }t           t          g}|D ]T} t          d          |          } |            D ].} ||          } ||          }|                     ||           /Ud S )Nc               3      K   t          j        g d          V  t          j        g d          V  dV  dV  dV  dV  dV  t          j        dd	gdd
gddgddgg          V  d S )N)      ?      ?r        @r#  r                 @r"  r#  y              (@      ?      @y      $@        )r~  y       @        r   r  r,  r  r  r;  r<  r   r  rz  r!   r   r8   z7TestNPFunctions.test_is_real_or_complex.<locals>.values  s      (:::;;;;;(999%%%%%GGGIIILLLMMM""""(QFQFQFQF;<<<<<<<r!   Tr  )rl   rt   r   r  )r  r8   rs  r  r  r   r  r  s           r   test_is_real_or_complexz'TestNPFunctions.test_is_real_or_complex  s    	= 	= 	= f% 	7 	7F&C&&&v..EVXX 7 7!6!99eAhh''#66667	7 	7r!   c                     d }t           t          g}|D ]Y} t          d          |          } |            D ]3\  }} |||          } |||          }|                     ||           4Zd S )Nc               3     K   t           j        d fV  t           j        d fV  t           j        d fV  t          j        t           j         dt           j        g          d fV  t           j        t          j        dt           j                  fV  t           j        t          j        dt           j                  fV  t           j        t          j        dt           j                  fV  t           j        t          j        d          fV  t          j        t           j         dt           j        g          t          j        dt           j                  fV  d S )Nr  r   r   r+  r#  )r   NINFinfPINFr  r5  r  emptyrz  r!   r   r8   z7TestNPFunctions.test_isneg_or_ispos_inf.<locals>.values  s*     '4-&$,'4-*rvgr26233T9999'28ARX6666666&"(1BH5555555'28ARX6666666'28B<<''''*rvgr26233RXarx5P5P5PPPPPPPr!   Tr  )ry   r~   r   r  )	r  r8   rs  r  r  r   r{   r  r  s	            r   test_isneg_or_ispos_infz'TestNPFunctions.test_isneg_or_ispos_inf  s    		Q 		Q 		Q X& 	7 	7F&C&&&v..E &(( 7 73!6!S>>eAsmm''#66667	7 	7r!   c                   	
 ddt          j        ddg          
t          j        d                              d          	d	
fd}t          } t          d	
          |          } |            D ]s\  }}} |||fi |} |||fi |}t          |t           j                  r|                     ||           K| 	                    t          j
        ||                     td S )Nr   r   d     r<  r  r  r  )r   r   c               3   `  K   ddi fV  dt           j        i fV  t          j        ddg          t          j        ddg          i fV  t          j        ddg          t          j        ddg          i fV  t          j        ddg          t          j        ddg          i fV  t          j        ddg          t          j        ddg          i fV  t          j        dt           j        g          t          j        dt           j        g          i fV  t          j        dt           j        g          t          j        dt           j        g          d	d
ifV  t          j        t           j        t           j        g          t          j        dt           j        g          d	d
ifV  t          j        ddg          t          j        ddg          ddifV  t          j        ddg          t          j        ddg          i fV  t          j        ddg          t          j        ddg          ddifV  t          j        dt           j        dg          t          j        dt           j        dg          fV  t          j        t           j        t           j         t           j        g          t          j        dg          fV  t          j        t           j        t           j         t           j        g          dfV  dt          j        t           j        t           j         t           j        g          fV  t          j        ddg          t          j        ddg          fV  fV  t          j        dg          t          j        dz   z   g          fV  z  z   fV  z  z   z   fV     z  z   fV  t           j        t           j        fV  t           j         t           j        fV  t           j        t          j        t           j        g          fV  t          j        t           j        t           j         g          t          j        t           j        t           j         g          fV  t          j        t           j        dg          t          j        dt           j        g          fV  t          j        t           j        t           j         g          t          j        ddg          fV  t          j        t           j        t           j        g          t          j        dt           j         g          fV  t          j        t           j        t           j        g          t          j        ddg          fV  t          j        t           j        dg          t          j        t           j        t           j         g          fV  t          j        dz  g          t          j        dg          fV  t          j        dg          t          j        dz   dz  z   g          fV    dz   z  z   dz  z   fV  t          j        t          j        t           j        dg                    t          j        t          j        dt           j        g                    fV  t          j        t           j        dg          t          j        dz  dz  g          fV  t          j        t           j        dg          t          j        t           j        dz  g          fV  t          j        ddddz  z   z  z   g          t          j        dt           j        dg          fV  t          j        d          t          j        g d          fV  t           j        t          j        t           j        t           j        t           j        g          fV  t          j        dg          t          j        t           j        t           j         t           j        g          fV  dt          j        t           j        t           j         t           j        g          fV  d S )N    _B   UkBr   Hz>r  &.>   2٠Br  r   T0.++r   绽|=g#B;g=|=r   r  r#  r,  r   皙?g    .A)r   r    @)r   r  r  r  r  )aranr7   r   kwr   s   r   r8   z,TestNPFunctions.test_isclose.<locals>.values  s     
B&&&&""""(D$<(("(C:*>*>BBBB(D$<(("(J3E*F*FJJJJ(D$<(("(J3E*F*FJJJJ(D$<(("(It3D*E*ErIIII(C=))28S"&M+B+BBFFFF(C=))28S"&M+B+B[RVDWWWWW(BFBF+,,bhRV}.E.EUYGZZZZZ(FD>**BHc3Z,@,@63-OOOO(E5>**BHeS\,B,BBFFFF(E5>**BHe\5J,K,KfVY]ZZZZ(Arvq>**BHa^,D,DbHHHH(D"&26'26:;;RXqc]]BNNNN(D"&26'26:;;QBBBBRXtRVbfWbf=>>BBBB (Aq6""BHaV$4$4b8888sB,(A3--1t8d?*;!<!<b@@@@sS4Z'++++sS4Z'$.2222td{*B....&"&"$$$$6'262%%%%&"(BF8,,b0000(BFRVG,--rx"&8I/J/JBNNNN (BFA;''1bf+)>)>BBBB(BFRVG,--rxA/?/?CCCC(BFBF+,,bhBF7|.D.DbHHHH(BFBF+,,bh1v.>.>BBBB(BFA;''26BF72C)D)DbHHHH(D1H:&&!r9999(A3--1t8dQh+>*?!@!@"DDDDtczD004#:=rAAAA(28RVQK001128BHa[<Q<Q3R3RTVVVVV (BFA;''4!8TAX2F)G)GKKKK(BFA;''264!82D)E)ErIIII(D!SADL%9D%@ABBBHaQSQWY\M]D^D^`bbbbb)A,, 5 5r9999&"(BFBFBF#;<<b@@@@(A3--4"&"&*I!J!JBNNNNRXtRVbfWbf=>>BBBBBBr!   Tr  )r   r  r  r&  r   r   
isinstancer  rh  
assertTruer+   )r  r8   r  r  r-   r.   r  r  r  r  r7   r   r  r   s            @@@@@r   test_isclosezTestNPFunctions.test_isclose  sI   hT{##y||##I..D))3	C 3	C 3	C 3	C 3	C 3	C 3	C 3	C 3	Cj "T"""6**"FHH 	? 	?LAq&va--f--H%1''''C(BH-- ?  3////x = =>>>>	? 	?r!   c                 *   t           } t          d          |          }g d}|D ]k\  }}|                     t                    5 } |||           d d d            n# 1 swxY w Y   |                     dt          |j                             ld S )NTr  ))r  world)       @N)r-         @z+Inputs for `np.isclose` must be array-like.)r   r   r  r   r  r  r  )r  r  r  inputsr-   r.   r  s          r   isclose_exceptionz!TestNPFunctions.isclose_exception@  s    "T"""6**>>> 	1 	1FQ"";// 6a              MMGf.//1 1 1 1	1 	1s   AA#	&A#	c                     g d}t          j        g d          }| j                            ddd                              t           j                  }|||fS )z7
        Some test sequences for np.bincount()
        )r   r  r  r  r#  r  )r  r<  r  r  r   r  i,  r  )r   r  r  r  astypeint8rP  s       r   bincount_sequencesz"TestNPFunctions.bincount_sequencesJ  sZ      H]]]##HQ#..55bg>>1ayr!   c                     t           } t          d          |          }|                                 D ].} ||          } ||          }|                     ||           /d S NTr  )rJ   r   r  r  )r  r  r  seqr  r  s         r   test_bincount1zTestNPFunctions.test_bincount1S  sy    "T"""6****,, 	3 	3Cvc{{H%**C##Hc2222	3 	3r!   c                 d   t           } t          d          |          }|                                  |                     t                    5 } |ddg           d d d            n# 1 swxY w Y   |                     dt          |j                             |                                  d S )NTr  r  rW  #first argument must be non-negative)rJ   r   r  r  r\  r  r  r  r  s       r   test_bincount1_exceptionsz)TestNPFunctions.test_bincount1_exceptions[  s    "T"""6** 	!!! z** 	fE1b'NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	;&*++	- 	- 	- 	!!!!!s   A))A-0A-c                 B   t           } t          d          |          }|                                 D ]i}d |D             }|t          j        |          |t          j        |          fD ]0} |||          } |||          }|                     ||           1jd S )NTr  c                 <    g | ]}t          j        |          d z
  S r  )mathsqrt)r  r   s     r   r  z2TestNPFunctions.test_bincount2.<locals>.<listcomp>n  s%    ///a1!///r!   )rP   r   r  r   r  r  )r  r  r  r  rO   rN   r  r  s           r   test_bincount2zTestNPFunctions.test_bincount2j  s    "T"""6****,, 	7 	7C//3///Arx{{C#? 7 7!6#w//eC))''#66667	7 	7r!   c                    t           } t          d          |          }|                                  |                     t                    5 } |ddgddg           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |ddgdg           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NTr  r  rW  r   r  z+weights and list don't have the same length)rP   r   r  r  r\  r  r  r  r  s       r   test_bincount2_exceptionsz)TestNPFunctions.test_bincount2_exceptionsu  s   "T"""6** 	!!! z** 	#fE1b'Aq6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#;&*++	- 	- 	- z** 	 fE1b'A3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 C&*++	- 	- 	- 	- 	-$   A,,A03A09CCCc                 f   t           } t          d          |          }|                                 D ]{}t          |          }||dz   fD ]b} ||d |          } ||d |          }|                     t          |          t          |                     |                     ||           c|d S )NTr  r  )rS   r   r  maxrh  r  r  )r  r  r  r  a_maxrR   r  r  s           r   test_bincount3zTestNPFunctions.test_bincount3  s    "T"""6****,, 	7 	7CHHE#UQY/ 7 7	!6#tY77eCy11  XC999''#6666	7	7 	7r!   c                    t           } t          d          |          }|                                  |                     t                    5 } |ddgddg           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |ddgd d           d d d            n# 1 swxY w Y   |                     d	t          |j                             d S )
NTr  r  rW  r   r     &   z 'minlength' must not be negative)rS   r   r  r  r\  r  r  r  r  s       r   test_bincount3_exceptionsz)TestNPFunctions.test_bincount3_exceptions  s   "T"""6** 	!!! z** 	#fE1b'Aq6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#;&*++	- 	- 	- z** 	&fE2r(D"%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&8&*++	- 	- 	- 	- 	-r  c                    	
 t            t          d                    t           t          d                    	t           t          d                    
	
 fd}t	          j        d          dz  }t	          j        d          dz
  }|t          |          fD ]R}|D ]} |||           ||                    d          fD ]} |||            ||t          |                     St	          j        t          |          t          d	          gd
z  z             dz  }t	          j        d          dz
  }|t          |          fD ]R}|D ]} |||           ||                    d          fD ]} |||            ||t          |                     Sd } t          d          |           
                                5   ddgd           d d d            n# 1 swxY w Y   dd} t          d          |           
                                5   ddgdd           d d d            n# 1 swxY w Y   t	          j        g d          }t	          j        ddgdd
gddgddgg          } |||           t	          j        g d          }t	          j        ddgddgddgg          } |||           d S )NTr  c                     | |          } | |          }
                     ||            | |          } | |          }
                     ||            	| |          } | |          }
                     ||           d S r   r  )r-   rX   r  r  r  
cfunc_leftcfunc_rightr  pyfunc_leftpyfunc_rightr  s       r   r  z0TestNPFunctions.test_searchsorted.<locals>.check  s    va||H%1++C##Hc222"{1a((H*Q""C##Hc222#|Aq))H+a##C##Hc22222r!   r  r  r  r   r,  r  r  r;  r  r  c                 0    t          j        | |d          S )Nnonsenser\   rU   rW   s     r   bad_sidez3TestNPFunctions.test_searchsorted.<locals>.bad_side  s    ?1aj9999r!   r[   c                 0    t          j        | ||          S )Nr\   rU   )r-   rX   r]   s      r   nonconst_sidez8TestNPFunctions.test_searchsorted.<locals>.nonconst_side  s    ?1ad3333r!   r`   r\   )r   r  r   r,  r  r   r#  )	r=  r   r,  r  r   r#  r;  r  r<  r  rW  )r[   )rV   r   r^   ra   r   r  listr&  r  floatrT  r  )r  r  binsr8   r-   rX   r  r  r  r  r  r  r  r  s   `       @@@@@@r   test_searchsortedz!TestNPFunctions.test_searchsorted  s   "T"""6**''S$'''44
)(c4(((66	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 y||q 2"T

# 	# 	#A  afnnV445  aE!T&\\"""" z$t**e~'99::S@2$T

# 	# 	#A  afnnV445  aE!T&\\""""	: 	: 	:"T"""8,,##%% 	 	E1Q%OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 		4 	4 	4 	4"T"""=11##%% 	* 	*E1Q%))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* HYYYHAAAA	
 
 	aH00011HBQQ
 
 	as$   (HH
H?II #I c                     t            t          d                     fd}t          j        dddddd	d
ddt	          d          t	          d          t	          d          f          }t          |          dk    sJ  j                            |           t          j        g d          }t          j        dddd
t	          d          t	          d          g          }t          j        dddd
t	          d          t	          d          gt	          d          gdz  z             }|||g}||                    d          g}|D ]<}|	                                 |D ]#}	 ||	|            ||	|d d d                    $=|D ]>}|	                                 dD ]%}
 ||||
            |||d d d         |
           &? |t          |          |           d S )NTr  c                  H     |  } |  }                     ||           d S r   r  )re   r  r  r  r  r  s      r   r  z,TestNPFunctions.test_digitize.<locals>.check  s5    vt}H%,C##Hc22222r!   r   Gz?r   皙@r|  r;  r<  r=        #@r  z-infr  r+  r   r#  r|  r<  r#  r  rM  rW  r$  )rc   r   r   r  r  r  r  shuffler&  sortr  )r  r  r8   bins1bins2bins3all_binsxsr  r   r`   r  r  s   `          @@r   test_digitizezTestNPFunctions.test_digitize  sA   "T"""6**	3 	3 	3 	3 	3 	3 	3
 Qac1aC"5\\5==%,,H I I6{{b       
>>>**
Aq#q%,,fFGG
Aq#q%,,fF#Ell^b01 2 2 5%(fnnV,,-  	% 	%DIIKKK % %aaddd$$$$%
  	1 	1DIIKKK& 1 1fdE***fd44R4j%00001
 	d6llE"""""r!   c                     t            t          d                     fdfd}t          j        d          }t	          |          dk    sJ  j                            |            ||           d S )NTr  c                       |  \  }} |  \  }}                     ||                                ||dd           d S )Nr  r  r  r  r  )re   pyhistpybinschistcbinsr  r  r  s        r   r  z-TestNPFunctions.test_histogram.<locals>.check)  s\    #VT]NFF 5$<LE5##FE222 ##FEq#IIIIIr!   c                     t          j        g d          } | |            |                     d          |            | d            | dd            |            d S )Nr  rM  r;  )r  g      +@)r   r  r&  )r8   r  r  s     r   check_valuesz4TestNPFunctions.test_histogram.<locals>.check_values1  s     :nnn--DE&$E&..(($/// E&! E&![))) E&MMMMMr!   )r   r  r   r  r|  r;  r<  r=  r  g     @E@r  r  r+  )rg   r   r   r  r  r  r  )r  r  r8   r  r  r  s   `  @@@r   test_histogramzTestNPFunctions.test_histogram%  s    "T"""6**	J 	J 	J 	J 	J 	J 	J	 	 	 	 	   7 8 86{{b       Vr!   c                     t          d          |          }d}t          j        t          j        t          j        t          j        t          j        t          j        t          j        g}t          j
        ||||          D ]\  }}}}t          j        ||          }	t          j        ||          }
t          j        |t          j                  r|	d|	z  z                       |          }	t          j        |t          j                  r|
d|
z  z                       |          }
 ||	|
          } ||	|
          }|                     ||           t          j        d                              dd          }t          j        d          }||f||ffD ]m\  }}|                     t$                    5 } |||           d d d            n# 1 swxY w Y   d	}|                     |t)          |j                             nd S )
NTr  )r   r  r#  r;  r   r  r+  r,  r#  zonly supported on 1D arrays)r   r   r  int32int64r  r  r  r  	itertoolsr   r  
issubdtypecomplexfloatingr  r  r&  r  r   r  r  r  )r  r  r  lengthsdtsdt1dt2rD   r   r-   rX   r  r  _a_br   r  r  r  s                      r   _test_correlate_convolvez(TestNPFunctions._test_correlate_convolveH  s%   "T"""6** w"(BJ
|R], (/S'7KK 	3 	3NCa	!3'''A	!3'''A}S""455 -aZ'',,}S""455 -aZ'',,va||H%1++C##Hc2222Yr]]""1a((Yr]]"XBx( 	6 	6DAq"";// 6a              /CMM#s6#3445555		6 	6s   ;GG	G	c                 :    |                      t                     d S r   )r  r   r  s    r   test_correlatezTestNPFunctions.test_correlatee  s    %%i00000r!   c                    |                                   t          j        d          }t          j        d          } t	          d          |          }||f||ffD ]\  }}|                     t                    5 } |||           d d d            n# 1 swxY w Y   t          |          dk    r)|                     dt          |j
                             |                     dt          |j
                             d S )	Nr   )rX  r  Tr  r   z'a' cannot be emptyz'v' cannot be empty)r  r   onesr  r   r  r\  r  r  r  r  )r  fnr  r  r  r   r  r  s           r   #_test_correlate_convolve_exceptionsz3TestNPFunctions._test_correlate_convolve_exceptionsh  sG   !!! W4   Yq\\"T"""2&&"XBx( 	L 	LDAq"":.. &a              1vv{{3S9I5J5JKKKK3S9I5J5JKKKK	L 	Ls   >BB	B	c                 :    |                      t                     d S r   )r  r   r  s    r   test_correlate_exceptionsz)TestNPFunctions.test_correlate_exceptionsx  s    00;;;;;r!   c                 :    |                      t                     d S r   )r  r   r  s    r   test_convolvezTestNPFunctions.test_convolve|  s    %%h/////r!   c                 :    |                      t                     d S r   )r  r   r  s    r   test_convolve_exceptionsz(TestNPFunctions.test_convolve_exceptions  s    00:::::r!   c                 V     |di |} |di |}|                      |||           d S )Nr  rz  r  )r  r  r  paramsr  r  r  s          r   _check_outputzTestNPFunctions._check_output  sI    6##F##eoofoo#w?????r!   c                    t           } t          d          |          }t          | j        ||          fd} |t	          j        g d                      |t	          j        d          dz
              |t	          j        ddd	                      |t	          j        d
t          j        t          j	        t          j	         g                      |t	          j        g                       |t	          j        dd	          dz
              |t	          j        dgd	z  dgdz  z                        t          j
        t          j        t          j        t          j        fD ]!} |t	          j        d|                     " |g d            |d            |d            |d            |d            |d           d S )NTr  c                     g d}ddg}d| i} |           |D ]}| |d} |           |D ]}| |d} |           |D ]}|D ]}| ||d} |           d S )N)Nr   r   r  r#  r,  TFr   )r   r   )r   r  r  rz  )r   	n_choicesincreasing_choicesr  rD   r  r  s         r   _checkz1TestNPFunctions.test_vander_basic.<locals>._check  s    ---I"& 1XFM&!!!  & & q))f%%%% 1 & &
 
;;f%%%%  * *"4 * *J#$1JGGF!M&))))** *r!   )r   r  r#  r  r;        %@r#  r  r  333333?r  333333?Fr,  r   )r   r   r  r#  r,  r  r  r;  )r  r  r  rz  )r#  g-@A`"	@)TFr,  )r   r   r   r  r   r  r  linspacer  r  r  r  r  r  )r  r  r  r
  r!  r  s        @r   test_vander_basicz!TestNPFunctions.test_vander_basic  s   "T"""6** 2FEBB	* 	* 	* 	* 	*0 	rx%%&&&ry||d"###r{1b!$$%%%rxbfbfrvg677888rx||ryQ#%&&& 	rx
eWq[011222 XrxRZ? 	/ 	/EF29Ru---.... 	||||r


 	 !!!     r!   c                 H    t           } t          d          |                                            t          j        d          dz
   fd}ddt          j        ddgfD ]} ||                                t                    5 } d	
           d d d            n# 1 swxY w Y                        dt          |j
                              fd}t          j        d                              d           |           d |           d S )NTr  r  r  c                                                      5 } |            d d d            n# 1 swxY w Y                       dt          |j                             d S )Nr   z,Second argument N must be None or an integerrT  r  r  r  )r   r  r  r  r   s     r   _check_nz8TestNPFunctions.test_vander_exceptions.<locals>._check_n  s    '')) Va1              MMHf.//1 1 1 1 1   044r  r   r  rW  r   z#Negative dimensions are not allowedc                                          t                    5 } |            d d d            n# 1 swxY w Y                       dt          |j                             d S )Nz.x must be a one-dimensional array or sequence.)r  r\  rh  r  r  )r   r  r  r  s     r   	_check_1dz9TestNPFunctions.test_vander_exceptions.<locals>._check_1d  s    "":.. &a              M !1224 4 4 4 4   488rE  )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   s   `     @@r   test_vander_exceptionsz&TestNPFunctions.test_vander_exceptions  s   "T"""6** 	!!!IaLL3	1 	1 	1 	1 	1 	1 	1 dBFQF* 	 	AHQKKKKz** 	fE!rNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	;&*++	- 	- 	-	4 	4 	4 	4 	4 	4 IbMM!!),,	!	!s   B**B.1B.c                     t           } t          d          |          }t          | j        ||          }d } |            D ]}d|i} ||           d S )NTr  c                  ,    t          j        dd          S Nr<  r   r  rz  r!   r   n_variationsz6TestNPFunctions.test_tri_n_basic.<locals>.n_variations      9R###r!   r   )r   r   r   r  )r  r  r  r
  r!  rD   r  s          r   test_tri_n_basicz TestNPFunctions.test_tri_n_basic  s}    "T"""6**+VU;;	$ 	$ 	$  	 	A1XFF6NNNN	 	r!   c                 
   t           } t          d          |          }t          | j        ||          }d }d } |            D ]}d|i} ||            |            D ]} |            D ]}||d} ||            d S )NTr  c                  ,    t          j        dd          S r  r   rz  r!   r   r!  z8TestNPFunctions.test_tri_n_m_basic.<locals>.n_variations  r"  r!   c                  b    t           j                            d gt          dd          f          S Nr  r=  r  chainfrom_iterablerangerz  r!   r   m_variationsz8TestNPFunctions.test_tri_n_m_basic.<locals>.m_variations  '    ?004&%A,,1GHHHr!   r   r   )r   r   r   r  )	r  r  r  r
  r!  r,  rD   r  r   s	            r   test_tri_n_m_basicz"TestNPFunctions.test_tri_n_m_basic  s    "T"""6**+VU;;	$ 	$ 	$	I 	I 	I
  	 	A1XFF6NNNN  	 	A!\^^   q))v	 	r!   c                 
   t           } t          d          |          }t          | j        ||          }d }d } |            D ]}d|i} ||            |            D ]} |            D ]}||d} ||            d S )NTr  c                  ,    t          j        dd          S r  r   rz  r!   r   r!  z8TestNPFunctions.test_tri_n_k_basic.<locals>.n_variations  r"  r!   c                  ,    t          j        dd          S Nr  r   rz  r!   r   k_variationsz8TestNPFunctions.test_tri_n_k_basic.<locals>.k_variations      9S"%%%r!   r   r   )r   r   r   r  )	r  r  r  r
  r!  r4  rD   r  r   s	            r   test_tri_n_k_basicz"TestNPFunctions.test_tri_n_k_basic  s    "T"""6**+VU;;	$ 	$ 	$	& 	& 	&  	 	A1XFF6NNNN  	 	A!\^^   q))v	 	r!   c                    t           } t          d          |          }t          | j        ||          }d }d }d } |            D ]}d|i} ||            |            D ]} |            D ]}	||	d} ||             |            D ]} |            D ]}
||
d} ||             |            D ]-} |            D ] }
 |            D ]}	||	|
d	} ||           !.d S )
NTr  c                  ,    t          j        dd          S r  r   rz  r!   r   r!  z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.n_variations  r"  r!   c                  b    t           j                            d gt          dd          f          S r'  r(  rz  r!   r   r,  z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.m_variations!  r-  r!   c                  ,    t          j        dd          S r2  r   rz  r!   r   r4  z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.k_variations%  r5  r!   r   r   r   r   )r   r   r   r  )r  r  r  r
  r!  r,  r4  rD   r  r   r   s              r   test_tri_n_m_k_basicz$TestNPFunctions.test_tri_n_m_k_basic  s   "T"""6**+VU;;	$ 	$ 	$	I 	I 	I	& 	& 	&  	 	A1XFF6NNNN  	 	A!\^^   q))v
  	 	A!\^^   q))v
  	# 	#A!\^^ # #% # #A#$1155FF6NNNN##	# 	#r!   c                      t           } t          d          |                                             fd}ddt          j        ddgfD ]} ||           d S )NTr  c                                                      5 } dd|            d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr  r  r   k must be an integer)rT  r  r  )r   r  r  r  s     r   r
  z3TestNPFunctions.test_tri_exceptions.<locals>._checkG  s    '')) !Vaa    ! ! ! ! ! ! ! ! ! ! ! ! ! ! !)S1A-B-BBBBBBBs   155      ?r   r  )r   r   r  r   r  )r  r  r
  r   r  s   `   @r   test_tri_exceptionsz#TestNPFunctions.test_tri_exceptions@  s    "T"""6** 	!!!	C 	C 	C 	C 	C 	C
 dBFQF* 	 	AF1IIII	 	r!   c                 v      t          d                     fd}                      |          S )NTr  c                      |           } |           }                     |j        |j                   t          j                            ||           d S r   )rh  r!  r   testingassert_array_equal)r7   r  r  r  r  r  s      r   r
  z:TestNPFunctions._triangular_matrix_tests_m.<locals>._checkR  sU    vc{{H%**CSY777J))#x88888r!   r   _triangular_matrix_tests_innerr  r  r
  r  s   `` @r   _triangular_matrix_tests_mz*TestNPFunctions._triangular_matrix_tests_mO  s\    "T"""6**	9 	9 	9 	9 	9 	9 	9 224HHHr!   c                 v      t          d                     fd}                      |          S )NTr  c                 $   t           j                            d gt          dd          f          D ]]}|i }nd|i} | fi |} | fi |}                    |j        |j                   t          j                            ||           ^d S )Nr3  r  r   )	r  r)  r*  r+  rh  r!  r   rD  rE  )r7   r   r  r  r  r  r  r  s        r   r
  z<TestNPFunctions._triangular_matrix_tests_m_k.<locals>._check^  s    _22TFE#rNN3KLL 	= 	=9FF!1XF!6#0000eC**6**  HN;;;
--c8<<<<	= 	=r!   rF  rH  s   `` @r   _triangular_matrix_tests_m_kz,TestNPFunctions._triangular_matrix_tests_m_k[  s\    "T"""6**
	= 
	= 
	= 
	= 
	= 
	= 
	= 224HHHr!   c                    fd}fd} |t          j        d          dz               |t          j        d          dz
              t          j        d                              ddd	d
                      t          j        g                       t          j        d                              d          d d d                     t          j        d                              dd                     t          j        d          dz
                      d          } |            t          j        |                     d S )Nc                      |            |                      d          }  |            |                      d          }  |             | j                   d S )N)r=  r;  )r;  r   r#  r#  r&  Tr-   r
  s    r   	check_oddzATestNPFunctions._triangular_matrix_tests_inner.<locals>.check_oddo  s_    F1III		&!!AF1III		,''AF1IIIF13KKKKKr!   c                      |            |                      d          }  |            |                      d          }  |             | j                   d S )N)r,     r,  r  r  r,  rO  rQ  s    r   
check_evenzBTestNPFunctions._triangular_matrix_tests_inner.<locals>.check_evenw  s_    F1III		'""AF1III		,''AF1IIIF13KKKKKr!   ?   r  @   ih  r#  r,  r  r  r=  )r#  r#  rW  ForderrU  )r   r  r&  r  asfortranarray)r  r  r
  rR  rV  r7   s     `   r   rG  z.TestNPFunctions._triangular_matrix_tests_innerl  sa   	 	 	 	 		 	 	 	 	 		")B--$&'''
29R==4'((( 	ry~~%%aAq11222rx||ry||##F++DDbD1222ry||##F##66777y}}t#,,\::sr %%&&&&&r!   c                 L    t          d          |          }|                                  t          j        d          }|                                 5 } ||d           |                     dt          |j                             d d d            d S # 1 swxY w Y   d S )NTr  r  r  r@  r>  r?  )r   r  r   r  rT  r  r  r  )r  r  r  r-   r  s        r   _triangular_matrix_exceptionsz-TestNPFunctions._triangular_matrix_exceptions  s    "T"""6** 	!!!GFOO##%% 	IE!sOOOOMM0#f6F2G2GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   6BB Bc                     t          d          |          }|D ]} || } || }|                     t          |          t          |                     |                     t          |          t          |                     t	          ||          D ]%\  }}t
          j                            ||           &d S r  )r   rh  typer  r  r   rD  rE  )	r  r  re   r  r   r  r  egs	            r   _triangular_indices_tests_basez.TestNPFunctions._triangular_indices_tests_base  s    "T"""6** 	4 	4AvqzH%)CT(^^T#YY777S]]CHH555Hc** 4 41
--a33334	4 	4r!   c                 `    |                      |d t          d          D                        d S )Nc                     g | ]}|gS rz  rz  )r  rD   s     r   r  z?TestNPFunctions._triangular_indices_tests_n.<locals>.<listcomp>  s    $$$QaS$$$r!   r  rd  r+  r  r  s     r   _triangular_indices_tests_nz+TestNPFunctions._triangular_indices_tests_n  s>    ++$$%))$$$	
 	
 	
 	
 	
r!   c                 `    |                      |d t          d          D                        d S )Nc                 J    g | ] }t          | d z
  |dz             D ]}||g!S r   r  r+  )r  rD   r   s      r   r  zATestNPFunctions._triangular_indices_tests_n_k.<locals>.<listcomp>  s=    EEEqb1fa!e0D0DEE1aVEEEEr!   r  rg  rh  s     r   _triangular_indices_tests_n_kz-TestNPFunctions._triangular_indices_tests_n_k  s>    ++EEU2YYEEE	
 	
 	
 	
 	
r!   c                 `    |                      |d t          d          D                        d S )Nc                 @    g | ]}t          d |z            D ]}||gS r  rm  )r  rD   r   s      r   r  zATestNPFunctions._triangular_indices_tests_n_m.<locals>.<listcomp>  s3    ===a!e==1aV====r!   r  rg  rh  s     r   _triangular_indices_tests_n_mz-TestNPFunctions._triangular_indices_tests_n_m  s>    ++==U2YY===	
 	
 	
 	
 	
r!   c                     |                      |d t          d          D                         t          d          |          } |d           d S )Nc                 v    g | ]6}t          | d z
  |dz             D ]}t          d|z            D ]}|||g7S rl  rm  )r  rD   r   r   s       r   r  zCTestNPFunctions._triangular_indices_tests_n_k_m.<locals>.<listcomp>  su     $ $ $1QBFAE**$ $AEll$ $ AY $ $ $ $ $r!   r  Tr  r   )rd  r+  r   )r  r  r  s      r   _triangular_indices_tests_n_k_mz/TestNPFunctions._triangular_indices_tests_n_k_m  sk    ++$ $b		 $ $ $	
 	
 	
 #T"""6**ar!   c                 V    t          d          |          }t          t          t          fD ]}t	          j        t          d          t          d                    D ]\  }}t          j        ||f|          } ||          } ||          }| 	                    t          |          t          |                     | 	                    t          |          t          |                     t          ||          D ]%\  }	}
t          j                            |	|
           &Ɍd S )NTr  r  r   rd  r  boolr  r   r+  r   r  rh  ra  r  r  rD  rE  )r  r  r  r!  rD   r   r7   r  r  rb  rc  s              r   "_triangular_indices_from_tests_arrz2TestNPFunctions._triangular_indices_from_tests_arr  s   "T"""6**5$' 	8 	8E (rE"II>> 8 8!gq!fe,,!6#;;eCjj  hc;;;  XC999#.. 8 8DAqJ11!Q777788	8 	8r!   c           	          t          d          |          }t          t          t          fD ]}t	          j        t          d          t          d                    D ]\  }}t          j        ||f|          }t          dd          D ]} ||          } ||          }	| 	                    t          |          t          |	                     | 	                    t          |          t          |	                     t          ||	          D ]%\  }
}t          j                            |
|           &ܐd S )NTr  r  r3  rv  )r  r  r  r!  rD   r   r7   r   r  r  rb  rc  s               r   $_triangular_indices_from_tests_arr_kz4TestNPFunctions._triangular_indices_from_tests_arr_k  s9   "T"""6**5$' 		< 		<E (rE"II>> < <!gq!fe,,sB < <A%vc{{H%**C$$T(^^T#YY???$$S]]CHH=== #Hc 2 2 < <1
55a;;;;<<<		< 		<r!   c                     t          d          |          }t          |          j        }|                                 5 } |d           d d d            n# 1 swxY w Y   |                     dt          |j                             d|v ra|                                 5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j                             d	|v rc|                                 5 } |dd
           d d d            n# 1 swxY w Y   |                     dt          |j                             d S d S )NTr  r  zn must be an integerr   r   r>  r?  r   r   zm must be an integer)r   r   
parametersrT  r  r  r  )r  r  r  r|  r  s        r   _triangular_indices_exceptionsz.TestNPFunctions._triangular_indices_exceptions  s   "T"""6** ((3
##%% 	E#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,c&2B.C.CDDD*''))  Va3                             MM0#f6F2G2GHHH*''))  Va3                             MM0#f6F2G2GHHHHH s6   AA!A%B??CC
D$$D(+D(Tc                 &    t          d          |          }dD ]y}t          j        dg|z            }|                                 5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             z|ryt          j        ddg          }|                                 5 } ||d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S d S )	NTr  )r   r   r#  r  zinput array must be 2-dr  r>  r?  )r   r   r  rT  r  r  r  )r  r  test_kr  ndimsr-   r  s          r   #_triangular_indices_from_exceptionsz3TestNPFunctions._triangular_indices_from_exceptions  s   "T"""6** 	L 	LEe$$A'')) Va              MM3S9I5J5JKKKK 	IAA''))  Va3                             MM0#f6F2G2GHHHHH		I 	Is$   
A""A&	)A&	CC #C c                 n    |                      t                     |                     t                     d S r   )rI  r   rL  r   r  s    r   test_tril_basiczTestNPFunctions.test_tril_basic  0    ''///))(33333r!   c                 :    |                      t                     d S r   )r_  r   r  s    r   test_tril_exceptionsz$TestNPFunctions.test_tril_exceptions       **844444r!   c                    |                      t                     |                     t                     |                     t
                     |                     t                     |                     t                     |                     t                     |                     t
                     |                     t                     d S r   )	ri  r   rn  r   rq  r   rt  r   r}  r  s    r   test_tril_indicesz!TestNPFunctions.test_tril_indices      ((888**+;<<<**+;<<<,,-?@@@++N;;;++,<===++,<===++,>?????r!   c                     |                      t                     |                     t                     |                     t          d           |                     t          d           d S NFT)rx  r   rz  r   r  r  s    r   test_tril_indices_fromz&TestNPFunctions.test_tril_indices_from  `    //0EFFF112IJJJ001FNNN001H$OOOOOr!   c                 n    |                      t                     |                     t                     d S r   )rI  r   rL  r   r  s    r   test_triu_basiczTestNPFunctions.test_triu_basic  r  r!   c                 :    |                      t                     d S r   )r_  r   r  s    r   test_triu_exceptionsz$TestNPFunctions.test_triu_exceptions  r  r!   c                    |                      t                     |                     t                     |                     t
                     |                     t                     |                     t                     |                     t                     |                     t
                     |                     t                     d S r   )	ri  r   rn  r   rq  r   rt  r   r}  r  s    r   test_triu_indicesz!TestNPFunctions.test_triu_indices  r  r!   c                     |                      t                     |                     t                     |                     t          d           |                     t          d           d S r  )rx  r   rz  r   r  r  s    r   test_triu_indices_fromz&TestNPFunctions.test_triu_indices_from$  r  r!   c                 ^    |||          } |||          }|                      t          j        |d |                   t          j        |d |                              |                      t          j        ||d                    t          j        ||d                               d S r   r  r   uniquer  r  r  r-   r  r  r  s          r   partition_sanity_checkz&TestNPFunctions.partition_sanity_check*  s     6!S>>eAsmm 		(4C4. 9 929S#Y;O;OPPP 		(344. 9 929SY;O;OPPPPPr!   c           	          |||          } |||          }|                      t          j        ||d |                            t          j        ||d |                                       |                      t          j        |||d                             t          j        |||d                                        d S r   r  r  s          r   argpartition_sanity_checkz)TestNPFunctions.argpartition_sanity_check7  s     6!S>>eAsmm 		!HTcTN*; < < "	!CI, 7 7	9 	9 	9 		!HSTTN*; < < "	!CI, 7 7	9 	9 	9 	9 	9r!   c           
      D   t           } t          d          |          }t          dd          D ]m}t          d|dz
            D ]U}t          j        |          }| j                            |           || j                            dd          z  }| j                            |j                  }d|||dz   | | g}t          j	        |          |         }| 
                     |||          |         |           | 
                     ||                                |          |         |           | 
                     |t          |                                          |          |         |           |D ]}	|                     ||||	           Wod S NTr  r  r   r   r  r   )r  r   r+  r   r  r  r  r  r  r  r  tolisttupler  
r  r  r  jididxr  tgtr   s
             r   test_partition_fuzzz#TestNPFunctions.test_partition_fuzzF  s    "T"""6**r2 	E 	EA1a!e__ E EIaLL  ###((B///h&&qv..#q!a%#r2gajjo''ac(:(+- - -''ahhjj#(>(>s(C(+- - -''eAHHJJ.?.?(E(Ec(J(+- - -  E EA//q!DDDDEE	E 	Er!   c                    t           } t          d          |          }t          dd          D ]}t          d|dz
            D ]y}t          j        |          }| j                            |           || j                            dd          z  }| j                            |j                  }d|||dz   | | g}t          j	        |          |         }| 
                    | |||          |                  ||                    | 
                    | ||                                |          |                  ||                    | 
                    | |t          |                                          |          |                  ||                    |D ]}	|                     ||||	           {d S r  )r  r   r+  r   r  r  r  r  r  argsortr  r  r  r  r  s
             r   test_argpartition_fuzzz&TestNPFunctions.test_argpartition_fuzz^  s    "T"""6**r2 	H 	HA1a!e__ H HIaLL  ###((B///h&&qv..#q!a%#r2jmmC(''%%3--*<(=()#0 0 0''%%

C*@*@*E(F()#0 0 0''%%ahhjj0A0A3*G*G*L(M()#0 0 0  H HA2265!QGGGGHH	H 	Hr!   c                      t           } t          d          |                                            t          j        d          } fd} ||d            ||d            ||d           d S )NTr  r  c                                          t                    5 } | |           d d d            n# 1 swxY w Y   t          |j                  dk    sJ d S Nzkth out of boundsr  r\  r  r  r-   r  rb  r  r  s      r   r
  zETestNPFunctions.test_partition_exception_out_of_range.<locals>._check      "":.. !a              q{##':::::::   599r#  r   )r  r   r  r   r  r  r  r-   r
  r  s   `   @r   %test_partition_exception_out_of_rangez5TestNPFunctions.test_partition_exception_out_of_rangev  s     "T"""6** 	!!! IbMM	; 	; 	; 	; 	; 	;
 	q"q#q'r!   c                      t           } t          d          |                                            t          j        d          } fd} ||d            ||d            ||d           d S )NTr  r  c                                          t                    5 } | |           d d d            n# 1 swxY w Y   t          |j                  dk    sJ d S r  r  r  s      r   r
  zHTestNPFunctions.test_argpartition_exception_out_of_range.<locals>._check  r  r  r  r  )r  r   r  r   r  r  s   `   @r   (test_argpartition_exception_out_of_rangez8TestNPFunctions.test_argpartition_exception_out_of_range  s     "T"""6** 	!!! IbMM	; 	; 	; 	; 	; 	;
 	q"q#q'r!   c                 ,    t           } t          d          |                                             fd}t          j        d          } ||d            ||d            ||t          j        ddt          j        f                     d S )	NTr  c                                                      5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S NzPartition index must be integerr  r-   r  r  r  r  s      r   r
  zHTestNPFunctions.test_partition_exception_non_integer_kth.<locals>._check      '')) Va              MM;f.//1 1 1 1 1   /33r        "@ffffff
@r  r   r  )r  r   r  r   r  r  r  r  r  r
  r-   r  s   `   @r   (test_partition_exception_non_integer_kthz8TestNPFunctions.test_partition_exception_non_integer_kth  s     "T"""6** 	!!!	1 	1 	1 	1 	1 	1 IbMMq#q*q"(Aq"&>**+++++r!   c                 ,    t           } t          d          |                                             fd}t          j        d          } ||d            ||d            ||t          j        ddt          j        f                     d S )	NTr  c                                                      5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S r  r  r  s      r   r
  zKTestNPFunctions.test_argpartition_exception_non_integer_kth.<locals>._check  r  r  r  r  r  r   r  )r  r   r  r   r  r  r  r  s   `   @r   +test_argpartition_exception_non_integer_kthz;TestNPFunctions.test_argpartition_exception_non_integer_kth  s     "T"""6** 	!!!	1 	1 	1 	1 	1 	1 IbMMq#q*q"(Aq"&>**+++++r!   c                      t           } t          d          |                                             fd} |dd            |dd           d S )NTr  c                                                      5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S Nz(The first argument must be an array-liker  r  s      r   r
  zITestNPFunctions.test_partition_exception_a_not_array_like.<locals>._check      '')) Va              MMDf.//1 1 1 1 1r  r,  r   Sausages)r  r   r  rH  s   `  @r   )test_partition_exception_a_not_array_likez9TestNPFunctions.test_partition_exception_a_not_array_like  s~    "T"""6** 	!!!	1 	1 	1 	1 	1 	1 	q!z1r!   c                      t           } t          d          |                                             fd} |dd            |dd           d S )NTr  c                                                      5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S r  r  r  s      r   r
  zLTestNPFunctions.test_argpartition_exception_a_not_array_like.<locals>._check  r  r  r,  r   r  )r  r   r  rH  s   `  @r   ,test_argpartition_exception_a_not_array_likez<TestNPFunctions.test_argpartition_exception_a_not_array_like  s~    "T"""6** 	!!!	1 	1 	1 	1 	1 	1 	q!z1r!   c                      t           } t          d          |                                             fd} |t          j        d          d           d S )NTr  c                                                      5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S Nz3The first argument must be at least 1-D (found 0-D)r  r  s      r   r
  zCTestNPFunctions.test_partition_exception_a_zero_dim.<locals>._check      '')) Va              MMOf.//1 1 1 1 1r  r   r   )r  r   r  r   r  rH  s   `  @r   #test_partition_exception_a_zero_dimz3TestNPFunctions.test_partition_exception_a_zero_dim  sw    "T"""6** 	!!!	1 	1 	1 	1 	1 	1 	rx{{Ar!   c                      t           } t          d          |                                             fd} |t          j        d          d           d S )NTr  c                                                      5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S r  r  r  s      r   r
  zFTestNPFunctions.test_argpartition_exception_a_zero_dim.<locals>._check  r  r  r   r   )r  r   r  r   r  rH  s   `  @r   &test_argpartition_exception_a_zero_dimz6TestNPFunctions.test_argpartition_exception_a_zero_dim  sw    "T"""6** 	!!!	1 	1 	1 	1 	1 	1 	rx{{Ar!   c                     t           } t          d          |                                             fd} |t          j        d          t          j        d                              dd                     d S )	NTr  c                                          t                    5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S Nzkth must be scalar or 1-Dr  r\  r  r  r  r  s      r   r
  zNTestNPFunctions.test_partition_exception_kth_multi_dimensional.<locals>._check      "":.. &a              MM5s6;K7L7LMMMMMr  r  r  r#  r  r  )r  r   r  r   r  r&  rH  s   `  @r   .test_partition_exception_kth_multi_dimensionalz>TestNPFunctions.test_partition_exception_kth_multi_dimensional  s    "T"""6** 	!!!	N 	N 	N 	N 	N 	N
 	ry}}")A,,"6"6q!"<"<======r!   c                     t           } t          d          |                                             fd} |t          j        d          t          j        d                              dd                     d S )	NTr  c                                          t                    5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S r  r  r  s      r   r
  zQTestNPFunctions.test_argpartition_exception_kth_multi_dimensional.<locals>._check  r  r  r  r  r#  r  r  )r  r   r  r   r  r&  rH  s   `  @r   1test_argpartition_exception_kth_multi_dimensionalzATestNPFunctions.test_argpartition_exception_kth_multi_dimensional  s    "T"""6** 	!!!	N 	N 	N 	N 	N 	N
 	ry}}")A,,"6"6q!"<"<======r!   c                      t            t          d                    d fd	}t          j        g           }d|_        |dt          j        g           fD ]} ||           d S )NTr  r   c                 d     | |          } | |          }                     ||           d S r   r  r-   r  r  r  r  r  r  s       r   r  z9TestNPFunctions.test_partition_empty_array.<locals>.check(  =    va~~H%3--C##Hc22222r!   r#  r  r   r   rz  r  )r  r   r   r  rX  r  r  r-   r7   r  r  s   `   @@r   test_partition_empty_arrayz*TestNPFunctions.test_partition_empty_array"  s     "T"""6**	3 	3 	3 	3 	3 	3 	3 	3 HRLL b"(2,,& 	 	CE#JJJJ	 	r!   c                      t            t          d                    d fd	}t          j        g           }d|_        |dt          j        g           fD ]} ||           d S )NTr  r   c                 d     | |          } | |          }                     ||           d S r   r  r  s       r   r  z<TestNPFunctions.test_argpartition_empty_array.<locals>.check;  r  r!   r  rz  r  )r  r   r   r  rX  r  s   `   @@r   test_argpartition_empty_arrayz-TestNPFunctions.test_argpartition_empty_array5  s     "T"""6**	3 	3 	3 	3 	3 	3 	3 	3 HRLL b"(2,,& 	 	CE#JJJJ	 	r!   c           	         t           } t          d          |          }t          j        g           } ||d          }|                     ||           t          j        d          } ||d          }|                     ||           t          j        g d          }|                                } |t          j        d          |           |                     ||           ddgddgddgfD ]s}t          j        |          }t          j        |          }dD ]F}	|                      |||	          |	         ||	                    | 	                    ||||	           Gtg d	g d
g dg dg dg dg dg dfD ]s}t          j        |          }t          j        |          }dD ]F}	|                      |||	          |	         ||	                    | 	                    ||||	           Gtt          j        d          }|                      ||d          |           t          j        d          }dD ]@}	| 
                     |||	          |	         |	           | 	                    ||||	           At          j        d          d d d         }||                                t          |                                          fD ]}
| 
                     ||
d          d         d           | 
                     ||
d          d         d           |                      ||
d           ||
d                     |                      ||
d           ||
d                     | 	                    |||d           t          j        d          }t          j        ||j        dz            }|j        dz  dz   }| 
                     |||          |         |           t          j        d          }t          j        ||j        dz  dz             }|j        dz  dz   }| 
                     |||          |         |           t          j        d          }d |d<   | 
                     ||d!          d         d            | 
                     ||d!          d         d           t          j        |d<   t          j         ||d!          d                   sJ t          j        d          d"z  }t          j        t          j        d          d"z            }| j                            |           t'          |j                  D ]F}| 
                     |||          |         ||                    | 	                    ||||           Gt          j        g d#          }g d$}| 
                    t           |||          |                   d%           d& t          j        t          j        fD             }|D ]/\  }}t          j        ||'          }| j                            |           t          j        t          j        ||'          d(          }t/          | j        j        |           t'          |j                  D ]} |||          }| 
                    ||         |           t          j                            |d |         ||                    t          j                            ||         ||dz   d                     | 	                    ||||           1d S ))NTr  r   r   r   r  r  (   r  r   r   r#  r  r   r"  r  r   r#  r  r#  r   r   r   r   r0  r  r  r   r   r  r   r   r   r  r   1   r  r  /   rW  r  rT  )      @B AB r  r,  r  rW  r;  r   r   r  r#  r,  r  r;  r;  r;  r;  r;  r;  r;  r;  r;  r;  r;  r;  r;  r;  r;  r;  r=  r   r#     r  r   r#  r;  r;  c                      g | ]}d D ]}||fS )r=  rT  rz  r  dtss      r   r  z8TestNPFunctions.test_partition_basic.<locals>.<listcomp>  )    HHH"HH1r1gHHHHr!   r   r,  r   )r  r   r   r  r  r  r  r  r  r  rh  r  r  r  r  r  isnanr  r  r+  r  r  tilemaprD  assert_array_less)r  r  r  r  r  r  okthr  r  r   r-   r   midr  tdr	  r
  d1ps                      r   test_partition_basicz$TestNPFunctions.test_partition_basicH  sW    "T"""6**HRLLeAqkk3'''GAJJeAqkk3''' h{{{##xxzzbimmS!!!T***a&1a&1a&) 	A 	AAA'!**C A A''aAA???++FE1a@@@@A ))YYY			999))YYY			999> 	A 	AAA'!**C A A''aAA???++FE1a@@@@A GBKKaQ/// IbMM 	= 	=AUU1a[[^Q///''q!<<<< IbMM$$B$AHHJJahhjj 1 11 	? 	?AUU1a[[^Q///UU1b\\"-r222##EE!RLL%%2,,???##EE!SMM55B<<@@@''q#>>>> IgGAqv{##fkAoq#s+S111IgGAqv{Q''fkAoq#s+S111 GBKK!q'**2.222q'**1-q111v!xa))"-..... IbMMAgbimma'((qv 	= 	=AUU1a[[^SV444''q!<<<<H ( ( ( ) )nnuuQ}}S122LAAAHH2: 6HHH 	A 	AEB	!2&&&AHQ1B///88B "%%%16]] A AE!QKK  1q)))
,,QrrUAaD999
,,QqT1QUVV9===++FE1a@@@@A	A 	Ar!   c           	         t           } t          d          |          }t          j        g t          j                  } ||d          } ||d          }|                     ||           t          j        dt          j                  } ||d          } ||d          }|                     ||           t          j        g d          }|                                } |t          j        d          |           |                     ||           ddgddgddgfD ]}t          j        |          }t          j	        |          }	d	D ]R}
|                     | |||
          |
                  ||	|
                             | 
                    ||||
           Sg d
g dg dg dg dg dg dg dfD ]}t          j        |          }t          j	        |          }	dD ]R}
|                     | |||
          |
                  ||	|
                             | 
                    ||||
           St          j        d          }|                     | ||d                   |           t          j        d          }dD ]@}
|                      |||
          |
         |
           |                     ||||
           At          j        d          d d d         }||                                t          |                                          fD ]}|                      ||d          d         d           |                      ||d          d         d           |                      ||d           ||d                     |                      ||d           ||d                     | 
                    |||d           t          j        d          }t          j        ||j        dz            }|j        dz  dz   }|                     | |||          |                  |           t          j        d           }t          j        ||j        dz  dz             }|j        dz  dz   }|                     | |||          |                  |           t          j        d!          }d"|d<   |                     | ||d#          d                  d"           |                     | ||d#          d                  d           t          j        |d<   t          j        | ||d#          d                            sJ t          j        d          d$z  }t          j        t          j        d          d$z            }	| j                            |           t-          |j                  D ]L}|                     | |||          |                  |	|                    | 
                    ||||           Mt          j        g d%          }g d&}|                     t          | |||          |                            d'           d( t          j        t          j        fD             }|D ]5\  }}t          j        ||          }| j                            |           t          j        t          j        ||          d)          }t5          | j        j        |           t-          |j                  D ]}| |||                   }|                     ||         |           t          j                            |d |         ||                    t          j                            ||         ||dz   d                     | 
                    ||||           7d S )*NTr  r   r   r   r  r  r  r  r  r"  r  r  r  r0  r  r  r  r   r  r  r  rW  r  rT  r   r  r  r  r  r  r   r  r,  r  r;  r  r  r  c                      g | ]}d D ]}||fS r  rz  r  s      r   r  z;TestNPFunctions.test_argpartition_basic.<locals>.<listcomp>	  r  r!   r  )r  r   r   r  r  r  r  r  r  r  r  rh  r  r  r  r  r  r  r  r  r  r  r+  r  r  r  r  rD  r  )r  r  r  r  r  r  r  r  r  r  r   r-   r   r  r  r  r	  r
  r  r  s                       r   test_argpartition_basicz'TestNPFunctions.test_argpartition_basic  s    "T"""6**HRrx(((6!Q<<eAqkk#...GARX&&&6!Q<<eAqkk#... h{{{##xxzzbimmS!!!T***a&1a&1a&) 	D 	DAA*Q--C D D''%%1++a.(91SV9EEE..vuaCCCCD ))YYY			999))YYY			999> 	D 	DAA*Q--C D D''%%1++a.(91SV9EEE..vuaCCCCD GBKK%%1++222 IbMM 	= 	=AUU1a[[^Q///''q!<<<< IbMM$$B$AHHJJahhjj 1 11 	B 	BAUU1a[[^R000UU1b\\"-r222##EE!RLL%%2,,???##EE!SMM55B<<@@@**65!SAAAA IgGAqv{##fkAo55C==-.444IgGAqv{Q''fkAo55C==-.444 GBKK!55G,,R01155555G,,Q/0!444v!x%%7++B/011111 IbMMAgbimma'((qv 	@ 	@AQuuQ{{1~.A777**65!Q????H ( ( ( ) )nnqq#s!3455|DDDHH2: 6HHH 	D 	DEB	!2&&&AHQ1B///88B "%%%16]] D DeeAqkkN  1q)))
,,QrrUAaD999
,,QqT1QUVV9===..vuaCCCCD	D 	Dr!   c           	      v   d}t          j        |          D ]}t           j                            |||         ||         d|z             |                     ||d          ||         k                                    d|||d          ||         fz             |dz   }|                     ||||           d S Nr   zkth %d)err_msgzkth %d, %r not greater equal %d)r  r   )r   r  rD  r  r  allr  r  r  r  r  r  prevr   s          r   assert_partitionedz"TestNPFunctions.assert_partitioned	  s     	= 	=AJ((46AaD19A ) ? ? ?OOQqrrUad]//11"&)*AabbE1Q4(8"9  ; ; ; q5D''q!<<<<	= 	=r!   c           	      v   d}t          j        |          D ]}t           j                            |||         ||         d|z             |                     ||d          ||         k                                    d|||d          ||         fz             |dz   }|                     ||||           d S r  )r   r  rD  r  r  r  r  r  s          r   assert_argpartitionedz%TestNPFunctions.assert_argpartitioned	  s     	@ 	@AJ((46AaD19A ) ? ? ?OOQqrrUad]//11"&)*AabbE1Q4(8"9  ; ; ; q5D**65!Q????	@ 	@r!   c                 v   t           } t          d          |          }t          | j        ||          }t	          j        g d          } ||d          } ||d            ||t	          j        |d                   d           |                     | ||d                     t	          j        d          }| j	        
                    |           |                     t	          j        d           ||t          t          |j                                                 t	          j        d          }| j	        
                    |           t	          j        g d          }| j	        
                    |            |||          } |||           | j	        
                    |           |                      |||          |           t	          j        d          d d d	         } | ||d
gdz            d
g            | ||d
gdz  ddgz             d
gdz  ddgz              d S NTr  )r#  r,  r  r   )r   r#  )rD  rW  r  )r   r#  r<  r[  r  rW  r  r,  r  r  )r  r   r   r   r   r  r  r  r  r  r  r  r+  r  )r  r  r  r   r  r  keyss          r   test_partition_iterativez(TestNPFunctions.test_partition_iterative*	  s<    "T"""6**$T%<feLLH\\\""E!V1f%%%1R_Q778&AAA55H#5#5666IbMM	"uuQU16]]8K8K/L/LMMM IbMMx&&E!TNN1d###a222 IbMM$$B$55QC!G,,qc22255QC!Gq"g$566a1b'8IJJJJJr!   c                    t           } t          d          |          }t          | j        ||          }t	          j        g d          }| ||d                   } ||d            ||t	          j         |d                   d           |                     || ||d                              t	          j        d          }| j        	                    |           |                     t	          j        d          | ||t          t          |j                                                          t	          j        d          }| j        	                    |           t	          j        g d          }| j        	                    |           | |||                   } |||           | j        	                    |           |                     | |||                   |           t	          j        d          d d d	         } || ||d
gdz                     d
g            || ||d
gdz  ddgz                      d
gdz  ddgz              d S r$  )r  r   r   r"  r   r  r  r  r  r  r  r+  r  )r  r  r  r"  r  r  r%  s          r   test_argpartition_iterativez+TestNPFunctions.test_argpartition_iterativeL	  sg    "T"""6** '(B(.(-!/ !/ H\\\""eeAva(((a6 : :;VDDD1UU1h%7%7#8999IbMM	"qq$uQV}}:M:M1N1N/OPPP IbMMx&&eeAtnna&&&%%4.. 11555 IbMM$$B$aa!q 1 12QC888aa!qAr7): ; ;<qcAgB>OPPPPPr!   c                 p    t            t          d                     fd}d }t          j        ddd          }t          j        |dd	<   t          j         |d
<   t          j        |d<   |                    d          } ||          D ]!}t          dd          D ]} |||           "d S )NTr  c           	      8    | |          } | |          }                     |d d d d |f         |d d d d |f                    t          j        |j        d d                   D ]}                     t          j        ||         d |                   t          j        ||         d |                                                   t          j        ||         |d                    t          j        ||         |d                               d S NrW  )r  r   ndindexrX  r  )r-   r  r  r  r
  r  r  r  s        r   r  z7TestNPFunctions.test_partition_multi_dim.<locals>.checkt	  s.   va~~H%3--C##HQQQ3Y$7QQQ3YHHHZss 344 A A''	(1+dsd2C(D(D(*	#a&#,(?(?A A A''	(1+cdd2C(D(D(*	#a&,(?(?A A A AA Ar!   c              3     K   | V  | j         V  t          j        |           V  t          j        | t          j                  V  t          j        | t          j                  V  ddt          j         dfffV  d S N
fill_valuer  r  r#  rP  r   r\  	full_liker  r  rA   s    r   a_variationsz>TestNPFunctions.test_partition_multi_dim.<locals>.a_variations	        GGG#III#A&&&&&,qRV444444,qRV444444%"&!,.000000r!   r   r  0   r,  r;  r<  r=  r,  r#  r,  rD  r#  )r  r   r   r  r  r  r&  r+  r  r  r3  r-   r7   r   r  r  s   `     @@r   test_partition_multi_dimz(TestNPFunctions.test_partition_multi_dimp	  s    "T"""6**		A 		A 		A 		A 		A 		A 		A	1 	1 	1 K2r""!A#w!v!IIi  <?? 	 	C2q\\  c1	 	r!   c                 p    t            t          d                     fd}d }t          j        ddd          }t          j        |dd	<   t          j         |d
<   t          j        |d<   |                    d          } ||          D ]!}t          dd          D ]} |||           "d S )NTr  c           
      8    | |          } | |          }t          j        |           } t          j        | j        d d                   }|D ]H}                    | |         ||         |                  | |         ||         |                             It          j        |j        d d                   D ]}                    t          j        | |         ||         d |                            t          j        | |         ||         d |                                                           t          j        | |         ||         |d                             t          j        | |         ||         |d                                        d S r+  )r   r  r,  rX  r  r  )	r-   r  r  r  r  r
  r  r  r  s	         r   r  z:TestNPFunctions.test_argpartition_multi_dim.<locals>.check	  s   va~~H%3--C
1A*QWSbS\**C ; ;''!Xa[-=(>()!SVC[(9; ; ; ; Zss 344 G G''	!A$x{4C47H2I(J(J(*	!A$s1vdsd|2D(E(EG G G''	!A$x{3447H2I(J(J(*	!A$s1vcdd|2D(E(EG G G GG Gr!   c              3     K   | V  | j         V  t          j        |           V  t          j        | t          j                  V  t          j        | t          j                  V  ddt          j         dfffV  d S r.  r1  rA   s    r   r3  zATestNPFunctions.test_argpartition_multi_dim.<locals>.a_variations	  r4  r!   r   r  r5  r,  r;  r<  r=  r6  rD  r#  )r  r   r   r  r  r  r&  r+  r7  s   `     @@r   test_argpartition_multi_dimz+TestNPFunctions.test_argpartition_multi_dim	  s    "T"""6**	G 	G 	G 	G 	G 	G 	G	1 	1 	1 K2r""!A#w!v!IIi  <?? 	 	C2q\\  c1	 	r!   c                     t           } t          d          |          }t          j        ddd          t          j        d          fD ]}dD ]}|                     ||||            d S NTr  r   r  r  TFT)TFrW  r   r   )r  r   r   r  r  r  r  r  r  r  r  s        r   test_partition_boolean_inputsz-TestNPFunctions.test_partition_boolean_inputs	  s    "T"""6**QB''2E)F)FF 	C 	CA, C C++FE1cBBBBC	C 	Cr!   c                     t           } t          d          |          }t          j        ddd          t          j        d          fD ]}dD ]}|                     ||||            d S r>  )r  r   r   r  r  r  r@  s        r    test_argpartition_boolean_inputsz0TestNPFunctions.test_argpartition_boolean_inputs	  s    "T"""6**QB''2E)F)FF 	F 	FA, F F..vuaEEEEF	F 	Fr!   c                    t           } t          d          |          }|                                  t          j        ddgddgddgg          j        }t          j        d          dfD ]c}|                                 5 } |||           d d d            n# 1 swxY w Y   |                     d	t          |j
                             dt          j        t          j        fD ]i}|                     t                    5 } |||           d d d            n# 1 swxY w Y   |                     d
t          |j
                             jdD ]i}|                     t                    5 } |||           d d d            n# 1 swxY w Y   |                     dt          |j
                             jd S )NTr  r   r  r   r,                @)r  z)ddof must be a real numerical scalar typez)Cannot convert non-finite ddof to integer)r  gffffffzddof must be integral value)r
  r   r  r   r  rP  r  rT  r  r  r  r  r  r  r\  )r  r  r  r   r  r  s         r   test_cov_invalid_ddofz%TestNPFunctions.test_cov_invalid_ddof	  s   "T"""6** 	!!!Hq!fq!fq!f-..0IaLL"$ 	1 	1D'')) $Vad####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $MMEf.//1 1 1 1 FBFN 	1 	1D"":.. $&ad####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $MMEf.//1 1 1 1  	P 	PD"":.. $&ad####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $MM7V=M9N9NOOOO	P 	Ps6   BB!	$B!	DD#	&D#	1FF	F	c                       t          d          |          }t           j        ||d          } fd} |            D ]} |||i           d S )NTr  +=r  c               3     K   t          j        ddgddgddgg          j        V   j                            d                              dd          V  t          j        t          j        ddgddgddgg          j                  V   j                            d                              dd          d d d d df         V  t          j        g d          V  t          j        dd	
          V  t          j        t           j        dt           j	         ddg          V  t          j
        ddd                              dd          V  dV  dV  dV  dV  g dV  dV  ddgV  dV  dV  t          j        g           V  t          j        g                               dd          V  t          j        g                               dd          V  dV  d S )Nr   r  r   r  r  r  )g&S:?o_?g#~j?甇ZӼ?Q|?r  Tr/  rJ  rK  rL  rD  r#  !   )皙?皙?g)\(?gRQ?)g
ףp=
?gzG?)rN  rQ  )y        
ףp=
?y        zG?g rW  g333333@r"  r9  )rO  rP  r  rS  )r   r#  r  r  ))r  皙@r@  rz  )r   r  rP  r  randnr&  r\  fullr  r  r  r  s   r   input_variationsz=TestNPFunctions.corr_corrcoef_basic.<locals>.input_variations	  s3     (QFQFQF3446666(..%%--a44444#BHq!fq!fq!f-E$F$F$HIIIII(..%%--a44QQQ!V<<<<(CCCDDDDD'&T222222(BFFRVGVVDEEEEE+b!R((00Q77777 ;:::<<<<!!!!OOO))OOO4444i((((KKK$$$$ (2,,(2,,&&q!,,,,,(2,,&&q!,,,,,HHHHHr!   )r   r   r  )r  r  first_arg_namer  r
  rW  	input_arrs   `      r   corr_corrcoef_basicz#TestNPFunctions.corr_corrcoef_basic	  s    "T"""6**+VUEJJJ	 	 	 	 	: *)++ 	0 	0IFNI.////	0 	0r!   c                 B    t           }|                     |d           d S )Nr   rX  )r  rZ  rh  s     r   test_corrcoef_basicz#TestNPFunctions.test_corrcoef_basic
  s&       <<<<<r!   c                 B    t           }|                     |d           d S )Nr   r\  )r
  rZ  rh  s     r   test_cov_basiczTestNPFunctions.test_cov_basic
  s&       <<<<<r!   c                 `   t           } t          d          |          }t          | j        ||d          }| j                            d                              dd          }d |d d d         f}d	}d	}d
}t          j        ||||          }	|	D ]\  }
}}}||
|||d} ||           d S )NTr  rH  r  i   r  r;  rW  FT)NrW  r   r   r  T)r   r  r  r  r  )	r
  r   r   r  r  rU  r&  r  r   )r  r  r  r
  r   	y_choicesrowvar_choicesbias_choicesddof_choiceproductsr  r  r  r  r  s                  r   test_cov_explicit_argumentsz+TestNPFunctions.test_cov_explicit_arguments
  s    "T"""6**+VUEJJJHNN3''A..!DDbD'M	$"/$Y%1;@ @%- 	 	!AvtT1d"f6 6FF6NNNN	 	r!   c                 H   t           } t          d          |          }t          | j        ||d          }| j                            d                              dd          }d |d d d         f}d	}t          j        ||          D ]\  }}|||d
}	 ||	           d S )NTr  rH  r  ra  r  r;  rW  rb  r  )	r  r   r   r  r  rU  r&  r  r   )
r  r  r  r
  r   rc  rd  r  r  r  s
             r    test_corrcoef_explicit_argumentsz0TestNPFunctions.test_corrcoef_explicit_arguments$
  s    "T"""6**+VUEJJJHNN3''A..!DDbD'M	$"*9nEE 	 	IAv177FF6NNNN	 	r!   c                     t          d          |          }t          | j        ||d          }t          j        g d          }t          j        g d          }||d|i} ||           t          j        g d          }t          j        g d	g          }||d|i} ||           t          j        g d          }d	}||d|i} ||           ||d|i} ||           t          j        g d          }d
}||d|i} ||           ||d|i} ||           t          j        g           }t          j        g           }||d|i} ||           d}d}||d|i} ||           | j                            dd          }t          j        g d                              dd          dz  }||d|i} ||           t          j        g d          }t          j        g dg dg          }||d|i} ||           dD ][}t          j        g d          }t          j        g dg dg dg          }||d|d|i} ||           ||d|d|i} ||           \d S )NTr  rH  r  rR  )r#  r  Q?r  r"  r  r}  r`  )r  r}  r#  r  rT  r  r#  r   rb  )r,  r  rl  r  )r   r   r  r   r  r  rU  r&  )	r  r  rX  r  r
  r   r  r  r  s	            r   cov_corrcoef_edge_casesz'TestNPFunctions.cov_corrcoef_edge_cases2
  s   "T"""6**+VUEJJJ H___%%H^^^$$ !S!,vHYYYHlll^$$ !S!,vHYYY !S!,v !S!,vHYYY !S!,v !S!,vHRLLHRLL !S!,v !S!,vHNN2q!!H___%%--a33b8 !S!,vH___%%Hnnnnnn566 !S!,v! 	 	F))A.........IJJA$aa6BFF6NNN$aa6BFF6NNNN	 	r!   c                     t           }|                     |d            t          d          |          }t          | j        ||d          }t
          j        t
          j         ddfD ]}d|i} ||           d S )	Nr   r\  Tr  rH  r  r  r   )r  rn  r   r   r  r   r  r  r  r  r  r
  r   r  s         r   test_corrcoef_edge_casesz(TestNPFunctions.test_corrcoef_edge_caseso
  s    $$VC$@@@"T"""6**+VUEJJJ&26'5!, 	 	A1XFF6NNNN	 	r!   c                     t           } t          d          |          }t          | j        ||d          }d}d|i} ||           d S )NTr  rH  r  ))r  }Ô%IT)rs  r  r   )r  r   r   r  rp  s         r   &test_corrcoef_edge_case_extreme_valuesz6TestNPFunctions.test_corrcoef_edge_case_extreme_values{
  s[    "T"""6**+VUEJJJ /qvr!   c                    t           }|                     |d            t          d          |          }t          | j        ||d          }t          j        ddgd	d	gddgg          j        }|d
d} ||           d S )Nr   r\  Tr  rH  r  r   r  r   r  )r   r  )r
  rn  r   r   r  r   r  rP  )r  r  r  r
  r   r  s         r   test_cov_edge_casesz#TestNPFunctions.test_cov_edge_cases
  s    $$VC$@@@"T"""6**+VUEJJJ Hq!fq!fq!f-..0!$$vr!   c                     t           } t          d          |                                             fd}t          j        d          } ||           d} ||           g dgg} ||            fd}t          j        d          }t          j        d          } |||           t          j        d          }d	} |||           t          j        d
          }t          j        d          }                     t                    5 } ||           d d d            n# 1 swxY w Y    	                    dt          |j                             t          j        g d                              dd
          }                     t                    5 } |           d d d            n# 1 swxY w Y    	                    dt          |j                             d S )NTr  c                                                      5 } |            d d d            n# 1 swxY w Y                       dt          |j                             d S )Nzm has more than 2 dimensionsr  )r   r  r  r  s     r   _check_mz5TestNPFunctions.test_cov_exceptions.<locals>._check_m
  s    '')) Va              MM8#f>N:O:OPPPPPs   .22r  r  r;  )))r"  r  c                                                      5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S )Nr0  zy has more than 2 dimensionsr  )r   r  r  r  r  s      r   _check_yz5TestNPFunctions.test_cov_exceptions.<locals>._check_y
  s    '')) Va1              MM8#f>N:O:OPPPPPr  r^  )r  rT  r  )))r  rT  gffffff@r#  r,  r0  z$m and y have incompatible dimensionsrR  r   z/2D array containing a single row is unsupported)r
  r   r  r   r  r  r  r  r\  r  r  r  r&  RuntimeError)r  r  ry  r   r|  r  r  r  s   `      @r   test_cov_exceptionsz#TestNPFunctions.test_cov_exceptions
  s   "T"""6** 	!!!	Q 	Q 	Q 	Q 	Q 	Q
 GI(ii[M	Q 	Q 	Q 	Q 	Q 	Q
 GFOOGIAH_%%!AIaLLIaLLz** 	fE!qMMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<&*++	- 	- 	-
 H___%%--a33|,, 	E!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	G&*++	- 	- 	- 	- 	-s$   D22D69D6)GGGc                 z   t           } t          d          |          }t          | j        ||          }d }d } |t	          j        ddd                    D ]^}d|i} ||            ||          D ]A}||d	} ||           ||d
} ||            ||          D ]}	|||	d} ||           B_d S )NTr  c              3   \   K   d V  | V  |                      t          j                  V  d S r   )r  r   re  rA   s    r   to_variationsz9TestNPFunctions.test_ediff1d_basic.<locals>.to_variations
  s8      JJJGGG((28$$$$$$$r!   c              3      K   | V  |                      ddd          V  |                     t          j                  V  d S )Nr#  r  )r&  r  r   r  rA   s    r   ary_variationsz:TestNPFunctions.test_ediff1d_basic.<locals>.ary_variations
  sK      GGG))Aq!$$$$$((28$$$$$$$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.   s
             r   test_ediff1d_basicz"TestNPFunctions.test_ediff1d_basic
  s*   "T"""6**+VU;;	% 	% 	%
	% 	% 	%
 ">"+b!R"8"899 	# 	#CS\FF6NNN"]3'' 	# 	#!$!44v!$22v&s++ # #A%(a1EEFF6NNNN#	#		# 	#r!   c                 4   t           } t          d          |          }|                                  |                                 5 } |t	          j        d                     d d d            n# 1 swxY w Y   d}|t          |j                  v sJ d S )NTr  )TTFz+Boolean dtype is unsupported (as per NumPy))r  r   r  rT  r   r  r  r  )r  r  r  rb  r  s        r   test_ediff1d_exceptionsz'TestNPFunctions.test_ediff1d_exceptions
  s    "T"""6** 	!!!##%% 	1E"(.//000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 <c!+&&&&&&&&s   	A33A7:A7c                    t           } t          d          |          }d } |            D ].} ||          } ||          }|                     ||           /|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt          j        z  t          |j	                             d S )NTr  c               3      K   t          j        d                              dd          V  t          j        d                              ddd          V  dV  ddgddgfV  d S )	Nr  r  r  r  rl  r   r#  r,  rO  rz  r!   r   r3  z7TestNPFunctions.test_fliplr_basic.<locals>.a_variations
  sx      )B--''1-----)B--''1a00000OOOq6Aq6######r!   abczCannot np.fliplr on %s type)
r   r   r  r  r   r  r
   unicode_typer  r  r  r  r  r3  r-   r  r  r  s           r   test_fliplr_basicz!TestNPFunctions.test_fliplr_basic
  s(   "T"""6**	$ 	$ 	$  	3 	3AvayyH%((C##Hc2222{++ 	vE%LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	3e6HH&*++	- 	- 	- 	- 	-   7BBBc                    t           } t          d          |          }|                                  |                     t                    5 } |t          j        d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     dt          |j	                             d S )NTr  r#  cannot index arrayzwith 2 indices)
r   r   r  r  r   r   r  r  r  r  r  s       r   test_fliplr_exceptionz%TestNPFunctions.test_fliplr_exception  s    "T"""6** 	!!!{++ 	 vE")A,,	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	*C0@,A,ABBB&F,<(=(=>>>>>s   A99A= A=c                    t           } t          d          |          }d } |            D ].} ||          } ||          }|                     ||           /|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt          j        z  t          |j	                             d S )NTr  c               3     K   dgV  t          j        d          V  t          j        d                              dd          V  t          j        d                              ddd          V  dV  ddgddgfV  d S )	Nr   r  r  r  r  r  r#  r,  rO  rz  r!   r   r3  z7TestNPFunctions.test_flipud_basic.<locals>.a_variations  s      #III)B--)B--''1-----)B--''1a00000OOOq6Aq6######r!   r  zCannot np.flipud on %s type)
r   r   r  r  r   r  r
   r  r  r  r  s           r   test_flipud_basicz!TestNPFunctions.test_flipud_basic  s(   "T"""6**	$ 	$ 	$  	3 	3AvayyH%((C##Hc2222{++ 	vE%LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	3e6HH&*++	- 	- 	- 	- 	-r  c                    t           } t          d          |          }|                                  |                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     dt          |j                             d S )NTr  r   r  zwith 1 indices)r   r   r  r  r   r  r  r  r  s       r   test_flipud_exceptionz%TestNPFunctions.test_flipud_exception)  s    "T"""6** 	!!!{++ 	vE!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*C0@,A,ABBB&F,<(=(=>>>>>s   A''A+.A+c                    t           } t          d          |          }d } |            D ].} ||          } ||          }|                     ||           /|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NTr  c               3     K   t          j        d          V  t          j        d          V  t          j        d                              dd          V  t          j        d                              ddd          V  d S )Nr   r  r  r  r  r%  rz  r!   r   r3  z5TestNPFunctions.test_flip_basic.<locals>.a_variations:  s~      (1++)B--)B--''1-----)B--''1a0000000r!   r"  zCannot np.flip on UniTuple)r   r   r  r  r   r  r  r  r  s           r   test_flip_basiczTestNPFunctions.test_flip_basic6  s   "T"""6**	1 	1 	1  	3 	3AvayyH%((C##Hc2222{++ 	vE)	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2C8H4I4IJJJJJr  c                     d }t           } t          d          |          } |            D ]9\  }}t          j                             |||           |||                     :d S )Nc               3     K   dV  dV  dV  dV  dV  dV  dV  dV  d	t           j        fV  d	t           j        fV  t          j        d
          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  d S N)r   r4  )rW  r4  )rW  )rW  r  )r4  rW  )r        N@)      Nr  )r  r  r  r   r  r}  rE        ?       @      @      @      ?             @                   @r   rb  pir  rz  r!   r   r  z4TestNPFunctions.test_logspace2_basic.<locals>.inputsL  S     KKKLLLMMMMMMLLLOOOrt)OOOru*,q//2<??2222,r""BL$4$44444,q//2<#3#33333,v&&V(<(<<<<<,v&&V(<(<<<<<,w''f)=)=======r!   Tr  )r   r   r   rD  assert_allcloser  r  r  r  r   r   s         r   test_logspace2_basicz$TestNPFunctions.test_logspace2_basicJ      	> 	> 	>& "T"""6**!688 	P 	PKE4J&&vveT':':EE%<N<NOOOO	P 	Pr!   c                     t          d          t                    }|                                  |                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NTr  r  r  +The first argument "start" must be a number+The second argument "stop" must be a number)r   r   r  r  r   r  r  r  r  r  r  s      r   test_logspace2_exceptionz(TestNPFunctions.test_logspace2_exceptione  sr   "T"""9--!!!{++ 	vE%OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	C&*++	- 	- 	- {++ 	vE!UOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	C&*++	- 	- 	- 	- 	-s$   A&&A*-A*3CCCc                     d }t           } t          d          |          } |            D ]9\  }}t          j                             |||           |||                     :d S )Nc               3     K   dV  dV  dV  dV  dV  dV  dV  dV  d	t           j        fV  d	t           j        fV  t          j        d
          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  t          j        d          t          j        d          fV  d S r  r  rz  r!   r   r  z4TestNPFunctions.test_logspace3_basic.<locals>.inputsv  r  r!   Tr  r   r   r   rD  r  r  s         r   test_logspace3_basicz$TestNPFunctions.test_logspace3_basict  r  r!   c           	          d }t           } t          d          |          } |            D ]<\  }}}t          j                             ||||           ||||                     =d S )Nc               3     K   dV  dV  dV  dV  dV  dV  dV  dV  d	t           j        d
fV  d	t           j        dfV  t          j        d          t          j        d          dfV  t          j        d          t          j        d          dfV  t          j        d          t          j        d          dfV  t          j        d          t          j        d          dfV  t          j        d          t          j        d          dfV  t          j        d          t          j        d          dfV  d S )N)r   r4  r  )rW  r4  r   )r  rW  r  )rW  r  r   )r4  rW  r4  )r  r  F   )r  r  P   )r  r  Z   r  r  r   r   r  r  r}  rE  r   r4  r  r  r  r  r  r  r  r  r  rz  r!   r   r  z=TestNPFunctions.test_logspace3_with_num_basic.<locals>.inputs  su     OOO!!!!    rtR-rub.   ,q//2<??B6666,r""BL$4$4b8888,q//2<#3#3R7777,v&&V(<(<b@@@@,v&&V(<(<b@@@@,w''f)=)=rAAAAAAr!   Tr  r  )r  r  r  r  r   r   r   s          r   test_logspace3_with_num_basicz-TestNPFunctions.test_logspace3_with_num_basic  s    	B 	B 	B& "T"""6** & 	@ 	@E4J&&vveT3'?'?',uUD#'>'>@ @ @ @	@ 	@r!   c                     t          d          t                    }|                                  |                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |ddd           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )	NTr  r  r  r  r  r   z+The third argument "num" must be an integer)r   r   r  r  r   r  r  r  r  s      r   test_logspace3_exceptionz(TestNPFunctions.test_logspace3_exception  s   "T"""9--!!!{++ 	vE%OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	C&*++	- 	- 	- {++ 	vE!UOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	C&*++	- 	- 	- {++ 	vE!Q	 	 	 	 	 	 	 	 	 	 	 	 	 	 	C&*++	- 	- 	- 	- 	-s6   A&&A*-A*3CCCD33D7:D7c                     t           } t          d          |          }d } |            D ].} ||          } ||          }|                     ||           /d S )NTr  c               3     K   t          j        d                              dd          V  t          j        d                              ddd          V  t          j        d                              dddddd          V  d S Nr  r  r  r  rX  rO  rz  r!   r   r3  z6TestNPFunctions.test_rot90_basic.<locals>.a_variations        )B--''1-----)B--''1a00000)B--''1aAq9999999r!   )r   r   r  )r  r  r  r3  r-   r  r  s          r   test_rot90_basicz TestNPFunctions.test_rot90_basic  s    "T"""6**	: 	: 	:
  	3 	3AvayyH%((C##Hc2222	3 	3r!   c                     t           } t          d          |          }d } |            D ]C}t          dd          D ]0} |||          } |||          }|                     ||           1Dd S )NTr  c               3     K   t          j        d                              dd          V  t          j        d                              ddd          V  t          j        d                              dddddd          V  d S r  rO  rz  r!   r   r3  z=TestNPFunctions.test_rot90_with_k_basic.<locals>.a_variations  r  r!   r  r  )r   r   r+  r  )r  r  r  r3  r-   r   r  r  s           r   test_rot90_with_k_basicz'TestNPFunctions.test_rot90_with_k_basic  s    "T"""6**	: 	: 	:
  	7 	7A2q\\ 7 7!6!Q<<eAqkk''#66667	7 	7r!   c                 @   t           } t          d          |          }|                                  |                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        d          
                    dd          d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        d	                     d d d            n# 1 swxY w Y   |                     d
t          |j                             d S )NTr  r  )The first argument "arr" must be an arrayr,  r  r>  z*The second argument "k" must be an integerr#  zInput must be >= 2-d.)r   r   r  r  r   r  r  r  r   r  r&  r  s       r   test_rot90_exceptionz$TestNPFunctions.test_rot90_exception  s7   "T"""6** 	!!!{++ 	vE%LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A&*++	- 	- 	- {++ 	7vE")A,,&&q!,,6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	B&*++	- 	- 	- {++ 	 vE")A,,	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	-s63C/D/DEEEEEs6   A''A+.A+44C44C8;C8E++E/2E/c                     |} t          d          |          }d } |            D ]9} || } || }t          j                            |t	          |                     :d S )NTr  c               3   0  K   t          j        d          } | dfV  | ddfV  | g dfV  t          |           g dfV  t          |           g dfV  | g ddfV  t          |           g ddfV  t          |           g ddfV  t          j        d                              ddd          } | dfV  | ddfV  | ddfV  | g dfV  | g ddfV  | g ddfV  | dd	gfV  | dd	gdfV  | dd	gdfV  | dgd
fV  | dgdfV  | dgdfV  | t          j        g t           j                  dfV  t          j        d                              dd
          } | dfV  | ddfV  | dgdfV  | ddfV  | t          j        ddd          dfV  | dfV  | t          j        d          dffV  t          j        g           } | dfV  | dfV  | ddfV  | ddfV  t          j        g g          } | dfV  | ddfV  | ddfV  | ddfV  d S )Nr  r  r   )r   r,  H   rX  r,  r   )r  r   r  r#  rW  r[  rD  r   r   r  r   r  )r   r  r  r  r&  r  r  r  rA   s    r   args_variationsz5TestNPFunctions._check_split.<locals>.args_variations  s.     	#AQ$JJJQ'MMMZZZ-q'':::%%%%((JJJ&&&&ZZZ""""q'':::q((((((JJJ))))	"%%aA..AQ$JJJQ'MMMQ'MMMYYY,YYY/!!!YYY/!!!aV)OOOaVQ,aVQ,aS"*aS"*aS"*RXb11114444	#&&q"--AQ$JJJQ'MMMaS!)OOOR(NNNRYr2r**A----T'MMMbhqkk2&&&&&AQ$JJJQ$JJJVQ,Q'MMM"AQ$JJJVQ,Q'MMMQ'MMMMMr!   r   r   rD  assert_equalr  r  funcr  r  r  re   r  r  s           r   _check_splitzTestNPFunctions._check_split  s    "T"""6**-	 -	 -	^ $O%% 	9 	9Dvt}H%,CJ##Hd3ii8888		9 	9r!   c                     |} t          d          |          }d } |            D ]9} || } || }t          j                            |t	          |                     :d S )NTr  c               3   &  K   t          j        d          dfV  t          t          j        d                    dfV  t          t          j        d                    dfV  t          j        d                              dd          dfV  d S )Nr<  r#  rN  r+  r  r  )r   r  r  r  r&  rz  r!   r   r  z;TestNPFunctions._check_array_split.<locals>.args_variations3  s      )A,,/!!!ry||$$a''''	!%%q(((()B--''A..111111r!   r  r  s           r   _check_array_splitz"TestNPFunctions._check_array_split.  s    "T"""6**	2 	2 	2 $O%% 	9 	9Dvt}H%,CJ##Hd3ii8888		9 	9r!   c                 n    |                      t                     |                     t                     d S r   )r  r   r  r  s    r   test_array_split_basicz&TestNPFunctions.test_array_split_basic?  s0    +&&&,,,,,r!   c                    |                      t                     |                                  |                     t                    5 } t          t                    t          j        d          d           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 } t          t                    t          j        d          dgd           d d d            n# 1 swxY w Y   |                     dt          |j
                             d S )Nr  r  z0array split does not result in an equal divisionr#  rD  r4   z%np.split: Argument axis out of bounds)r  r   r  r  r\  r   r   r  r  r  r  )r  r  s     r   test_split_basicz TestNPFunctions.test_split_basicC  s   %   !!!z** 	'fDKK

A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'> !!	
 	
 	

 z** 	2fDKK

QCb1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2=&*++	- 	- 	- 	- 	-s$   	1BB
B
4DDDc                     t           } t          d          |          }d }d } |            D ]=} |            D ]0} |||          } |||          }|                     ||           1>d S )NTr  c               3   p  K   t          j        d          V  t          j        d                              ddd          V  g dV  dV  dV  dV  d	V  t          j        t          j        d
t           j        gt           j        dgg                    V  t          j        g           V  dV  d S )Nr;  r4  r#  r,  r  )r  rT  r  r?  F)r=  r  g333333@rz  )r   r  r&  r\  r  r  r  rz  r!   r   r3  z5TestNPFunctions.test_roll_basic.<locals>.a_variationsW  s      )A,,)I&&..q!Q77777!//!!!%%%%KKKGGGJJJ#BHsBFmbfc]-K$L$LMMMMM(2,,HHHHHr!   c                  `    t           j                            dt          dd          f          S )Nr$  r3  r  r(  rz  r!   r   shift_variationsz9TestNPFunctions.test_roll_basic.<locals>.shift_variationsc  s2    ?00-27R..2B C C Cr!   )r  r   r  )	r  r  r  r3  r  r-   r  r  r  s	            r   test_roll_basiczTestNPFunctions.test_roll_basicS  s    "T"""6**
	 
	 
		C 	C 	C  	7 	7A))++ 7 7!6!U++eAuoo''#66667	7 	7r!   c                 @   t           } t          d          |          }|                                  dD ]f}|                                 5 } |t	          j        d          |           d d d            n# 1 swxY w Y   d}|t          |j                  v sJ gd S )NTr  )r  rl  r  zshift must be an integer)r  r   r  rT  r   r  r  r  )r  r  r  r  rb  r  s         r   test_roll_exceptionsz$TestNPFunctions.test_roll_exceptionsm  s    "T"""6** 	!!!  	+ 	+E'')) ,QbimmU+++, , , , , , , , , , , , , , , -C#ak*******	+ 	+s   A88A<	?A<	c           	         t           } t          d          |          }t          | j        ||          }t	          j        d          }| j                            |           t          dd          D ]}||k    } |||d           t	          j        d          	                    dd	d
          }|dk    } |||d           d}t	          j
        d
                                          } |||d           g d}g d} |||d           t	          j        ddd          }ddt          j        ddddddf	}t          j        |d          D ]D} |||d            |t	          j        |          	                    dd          |d           Et	          j        g d          }t	          j        g           } |||d           t	          j        g d          }t	          j        g d          } |||d           t	          j        g dg dg          }g d} |||d           t	          j        g dg dg          }t	          j        g d          	                    ddd          } |||d           t	          j        t	          j        d          	                    d
dd	                    }t	          j        dd          } |||d            |||d d d         d           t	          j        d          }dD ]} |||d           d}d} |||d           t	          j        d          }t	          j        ddg          } |||d           t	          j        d          }t	          j        g d           	                    dd
          d!z  } |||d           d S )"NTr  r  rD  r  r+  r4  r,  r  r#  gffffff&@)r"  r#  r,  r  r9  )r  rT  r  r  )r   r   r   r   r[  r  FrW  r  g333333r   r  y              ?r  r"  )r   r   r   r   r9  )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&  eyeflattenr  r  r  combinations_with_replacementr  r\  rJ  )r  r  r  r
  r-   	thresholdro  element_pools           r   test_extract_basicz"TestNPFunctions.test_extract_basic{  s8   "T"""6**+VU;;IbMMr2 	2 	2Iy=DFa001111IbMM!!!Q**4xT!,,----vayy  ""T!,,---   ||T!,,---KB""eRVRtQTJ;L!LL 	J 	JDFa00111F$!7!71!=!=aHHIIIIHYYYx||T!,,---HYYYx%%T!,,---Hiii+,,!!!T!,,---Hiii+,,x0001199!QBBT!,,---bimm33Aq!<<==y$$T!,,---T!DDbD'22333HQKK 	2 	2DFa001111T!,,---HQKKxu&&T!,,---IaLLx***++33Aq99B>T!,,-----r!   c                 ~    t           } t          d          |                                            t          j        g           }t          j        g d          }                     t                    5 } ||           d d d            n# 1 swxY w Y                        dt          |j	                              fd}t          j        g dg dg          }g d} |||           t          j        g d          }t          j        g d          } |||           t          j        d          }d	} |||           t          j
        d
          }t          j        g d          } |||           t          j
        d
          }t          j        g d          } |||           d S )NTr  r"  z"Cannot extract from an empty arrayc                     d}                     t                    5 } | |           d d d            n# 1 swxY w Y                       |t          |j                             d S )Nz+condition shape inconsistent with arr shaper  )ro  r-   r  rb  r  r  s       r   r
  z7TestNPFunctions.test_extract_exceptions.<locals>._check  s    ?C"":.. !dA              MM#s1;//00000s   7;;)r   r   r   r   r   r   r   )r   r   r   r   r   r4  r  r,  )TFFFT)TFTFFTF)r*  r   r  r   r  r  r\  r  r  r  r  )r  r  r-   ro  rb  r
  r  s   `     @r   test_extract_exceptionsz'TestNPFunctions.test_extract_exceptions  s   "T"""6** 	!!!HRLLx			""z** 	aE$NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	:C<L<LMMM	1 	1 	1 	1 	1 	1 Hiii+,,$$$tQHYYYx((tQHRLLtQIaLLx999::tQIaLLxFFFGGtQs   ;BBBc                    t           } t          d          |          }t          | j        ||          }g d} |d|i           d} |d|i           t	          j        d                              dd          } |d|i           t	          j        d	d
d                              ddd          } |d|id           | j        	                    |            |d|id           t	          j
        g           } |d|i           t	          j
        dt          j        t          j        t          j         dg          } |d|i           t	          j        d          t	          j        dd
d          dz  z   } |d|i           t	          j
        g t          j                  } |d|i           d} |d|i           d S )NTr  r"  r  )r#  r   r  r  r  r  r#  r  r3  r  r4  r,  vIh%<=r  r  r  r   r  r   r?  )r1  r   r   r  r   r  r&  r  r  r  r  r  r  r  r  r  r  r
  r  s        r   test_np_trapz_basicz#TestNPFunctions.test_np_trapz_basic  s   "T"""6**+VU;;IIQxQxIbMM!!!Q''QxKR$$,,Q155Qx''''Qx''''HRLLQxHeRVRVbfWa899QxIbMMBK2r22R77QxHRr}---QxQxr!   c                    t           } t          d          |          }t          | j        ||          }g d}g d} |||d           g d}d} |||d           d}g d} |||d           t	          j        g d          }d	d	g} |||d           t	          j        g           }t	          j        d
dg          } |||d           d}d } |||d           t	          j        d                              dd	          }t	          j        d	dg          } |||d           t	          j        d                              dd	          }t	          j        g d          } |||d           t	          j        d                              dd	d          }t	          j        d	dg          } |||d           t	          j        d                              dd	d          }t	          j        g d          } |||d           t	          j        d                              dd	d          }| j        	                    |           |dz   }| j        	                    |            |||d           t	          j        d          }|t	          j
        ddd          dz  z   } |||d           t	          j        g d          }t	          j        ddg          } |||d           d S )NTr  r"  r,  r  r<  r3  rC  )r,  r  r,  r  r  r;  r<  r,  r  r#  r  r  r  r4  )r,  r  r;  r  r   r  r  r{  r  )r4  r   r   r  r   r  r  r&  r  r  r  )r  r  r  r
  r  r   s         r   test_np_trapz_x_basicz%TestNPFunctions.test_np_trapz_x_basic  sP   "T"""6**+VU;;IIIIQQ   OOQQ   OOQQ   H___%%FQQ   HRLLHaVQQ   QQ   IbMM!!!Q''HaVQQ   IbMM!!!Q''H\\\""QQ   IbMM!!!Q**HaVQQ   IbMM!!!Q**HYYYQQ   IbMM!!!Q**GQQ   IbMMAr2&&++QQ   HYYYHff%&&QQ     r!   zNumPy behaviour questionablec                 .   t           } t          d          |          }t          | j        ||          }t	          j        g d                              t                    } |d|i           t	          j        g d          } |d|i           d S )NTr  )TFTTr  )r1  r   r   r  r   r  r  rd  r  s        r   test_trapz_numpy_questionablez-TestNPFunctions.test_trapz_numpy_questionableC  s     "T"""6**+VU;; H...//66s;;Qx H...//Qxr!   c                    t           } t          d          |          }t          | j        ||          }g d}d} |||d           g d}g d} |||d           g d}g d} |||d           t	          j        dd	d
          }t          j        } |||d           t	          j        dd	d
          }t          j        } |||d           t	          j        dd	d
          }t	          j        dd	d          } |||dd           t	          j        d          	                    dd	d          dz  }t	          j        d          	                    dd	d          } |||d           t	          j        dd
d          } |t	          j
        d|dz  z            t	          j        dt          j        z            z  d          }t          j                            |dd           t	          j        d          }d} |||d           t	          j        d          }t	          j        d	g          } |||d           d S )NTr  r"  r  r8  rC  )r   r,  r  r  r[  r  r  r=  r  r  r4  r,  r#  r  r  r3  rO  r  r6  r   r;  r  )r9  r   r   r  r   r  r  r  r  r&  expr  r  rD  assert_almost_equalr  )r  r  r  r
  r  r7  r   r  s           r   test_np_trapz_dx_basicz&TestNPFunctions.test_np_trapz_dx_basicR  s}   "T"""6**+VU;;IIQb!!"""OO\\Qb!!"""OO\\Qb!!"""KAr""VQb!!"""KAr""VQb!!"""KAr""[Q""Qb!!51111IbMM!!!Q**R/Yr]]""1a++Qb!!"""Ic2r""E"&qAv&&RU););;DDD

&&q!Q///IbMMQb!!"""IbMMXqc]]Qb!!"""""r!   c                     t           } t          d          |          }t          | j        ||          }d dt	          j        g d          fD ]}g d}g d} ||||d           g d}dd	g} ||||d           g d}g d
} ||||d           t	          j        d                              ddd          }| j        	                    |           |dz  }t          j
        |d<    ||||d           d S )NTr  r  rC  r"  r  r;  r,  r  r  r4  r  r#  r  r  )r<  r   r   r  r   r  r  r&  r  r  r  )r  r  r  r
  r7  r  r   s          r   test_np_trapz_x_dx_basicz(TestNPFunctions.test_np_trapz_x_dx_basic  sO   "T"""6**+VU;; BH___556 	/ 	/B		A		AF"--...AAAF"--...AAF"--...	"%%aA..AHQCAAgJF"--....#	/ 	/r!   c                     t           } t          d          |                                             fd}g d}g dg dfD ]} |||df           t          j        d                              d	d
d          }t          j        d                              d	d
d	          } |||df           t          j        d                              d	d
d          }t          j        g d          } |||df           g d}t          j        ddg          } ||d |f           t          j        d                              d	d
d          }t          j        d                              d	d
d          } ||d |f                                            5 }t          j        d
          } ||d df           d d d            n# 1 swxY w Y                        dt          |j
                             ddt          j        fD ]c}                                 5 } |d d           d d d            n# 1 swxY w Y                        dt          |j
                             dd S )NTr  c                                          t                    5 } |   d d d            n# 1 swxY w Y                       dt          |j                             d S )Nzunable to broadcastr  )r  rb  r  r  s     r   check_not_okzCTestNPFunctions.test_np_trapz_x_dx_exceptions.<locals>.check_not_ok  s    "":.. !v               MM/Q[1A1ABBBBBs   .22rC  )r,  r  r  r;  r<  r=  r9  r  r4  r#  r,  r  $   r  r  zy cannot be 0DFzy cannot be a scalar)r<  r   r  r   r  r&  r  rT  r  r  r  r  )r  r  r  r  r   r7  rb  r  s   `      @r   test_np_trapz_x_dx_exceptionsz-TestNPFunctions.test_np_trapz_x_dx_exceptions  s)   "T"""6** 	!!!	C 	C 	C 	C 	C 	C OO###YYY. 	& 	&AL!Q%%%%IbMM!!!Q**IbMM!!!Q**aC[!!!IbMM!!!Q**H\\\""aC[!!!OOXsCj!!ar]###IbMM!!!Q**Yr]]""1a++ar]#####%% 	)AL!T3(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	&AK(8(8999E26! 	D 	DA'')) $Qas###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ MM0#ak2B2BCCCC		D 	Ds$   ##GGG*II	I	c                 h    d}t           j                            |          dz  }t           j                            |          dz  }t          j        |          }t           j                            |          dk    }t           j                            |          dk    }t           j                            d|          }t           j                            d|          }d}	d}
d}t           j                            |	|
|          dz  }t           j                            |	|
|          dz  }t          } t          d          |                                |||	           ||	          d
                                 |||	           ||	          d
                                 |||	           ||	          d
                                 |||	           ||	          d
                                 |||	           ||	          d
                                 |||	           ||	          d
                                 ||           |          d
                                 ||           |          d
            fd} |||	            fd} fd}t          j	        d          
                    d          }t          j        ddg          } |||	            ||d|           d S )Nr  r  e   r  r   r  Tr  rM   r  )placesc                                          t                    5 } | |           d d d            n# 1 swxY w Y   |j        }                    t	          |          d           d S )NrM   z)Weights sum to zero, can't be normalized.)r  ZeroDivisionErrorr  rh  r  datarN   rb  errr  r  s       r   test_weights_zero_sumz;TestNPFunctions.test_average.<locals>.test_weights_zero_sum  s    ""#455 -dG,,,,- - - - - - - - - - - - - - -+CSXXHJ J J J J   6::c                                          t                    5 } | |           d d d            n# 1 swxY w Y   |j        }                    t	          |          d           d S )NrM   zCNumba does not support average when shapes of a and weights differ.r  	TypeErrorr  rh  r  r  s       r   test_1D_weightsz5TestNPFunctions.test_average.<locals>.test_1D_weights  s    ""9-- -dG,,,,- - - - - - - - - - - - - - -+CSXX56 6 6 6 6r	  c                                          t                    5 } | ||           d d d            n# 1 swxY w Y   |j        }                    t	          |          d           d S )NrA  z)Numba does not support average with axis.r  )r  r5   rN   rb  r  r  r  s        r   test_1D_weights_axisz:TestNPFunctions.test_average.<locals>.test_1D_weights_axis
  s    ""9-- 7dg66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7+CSXXHJ J J J Js   7;;r  r  g      ?g      ?r   rA  )r   r  ranfr5  r  r  rC  r   assertAlmostEqualr  r&  r  )r  r   r-   rO   w0a_boolw_boola_intw_intd0r  d2a_3dw_3dr  r  r  r  r  r  s   `                  @r   test_averagezTestNPFunctions.test_average  s    INN1#INN1#Xa[[ ""S(""S( 	!!#A!..	!!#A!.. y~~bB''#-y~~bB''#-"T"""6** 	q 3 3 3 %a 2 2 22 	 	? 	? 	?tD 9 9 9 %d4 8 8 8 	 	E 	E 	E
 	uU ; ; ; %eE : : :2 	 	G 	G 	G 	q 8 8 8 %a 7 7 7 	 	D 	D 	Dva 8 8 8 %fQ 7 7 7 	 	D 	D 	Dvv > > > %ff = = =b 	 	J 	J 	J 	vvayy%%((2>>>vvd||UU4[[DDD	J 	J 	J 	J 	J 	J 	a,,,,	6 	6 	6 	6 	6 	6	J 	J 	J 	J 	J 	J y||##G,,J'(( 	a(((( 	T1555555r!   c           
         t           } t          d          |          }t          j        t          j                  j        }t          j        |gt          j                  }t          j        ddg          t          j        ddg          ft          j        ddg          t          j        ddg          ft          j        ddg          t          j        d	dg          ft          j        dg          t          j        d	dg          fd
t          j        t          j        dg          t          j        dt          j        g          f||fg}|D ]3\  }} |||          } |||          }| 	                    ||           4t          j        dt          j
        g          }t          j        dt          j
        g          }|                      |||                     |                      |||d           |||d                     t          j        t          j
        dg          }|                      |||           |||                     g d}	t          j        d          }
t          j                            d          }|	D ]G}|	D ]@}|	D ]9} ||
|||          } ||
|||          }| 	                    ||            |||
||          } |||
||          }| 	                    ||            |t          j        |g          |
||          } |t          j        |g          |
||          }| 	                    ||            ||||z   ||          } ||||z   ||          }| 	                    ||            |||z   |||          } |||z   |||          }| 	                    ||           ;BId S )NTr  r   r  r  r  r   r  r  )r  r  r   r   r  r   )r  rO  g{Gz?gMbP?-C6?r   gư>r  )r  r,  )r   r   )r?  r   r   r   int_minr  r  r  rh  r  assertFalser  r5  r  r  )r  r  r  min_intr-   simple_datar.   	py_resultc_resultnoise_levels
zero_arraynoiser   r   s                 r   test_allclosezTestNPFunctions.test_allclose  sO   "T"""6**(27##'HgYbg... Zt%%rz:t2D'E'EFZt%%rz:t2D'E'EFZt%%rz9d2C'D'DEZY,=!>!>?Xrvqk""BHa[$9$9:F
   	2 	2DAqq!IuQ{{HY1111JRV}%%JRV}%%q!%%%&&A666%1555	7 	7 	7 J}%%&&A,,a444EEEXg&&
INN7##! 	: 	:E$ : :( : :D &z5,0t!= != !=I$uZ*.T ;  ;  ;H$$Y999 &uj,0t!= != !=I$uUJ*.T ;  ;  ;H$$Y999 &rz5'':':J,0t!= != !=I$uRZ%8%8**.T ;  ;  ;H$$Y999 &q!e)$T J J JI$uQE	4HHHH$$Y999 &q5y!$T J J JI$uQY4HHHH$$Y99993::	: 	:r!   c                 6   t           } t          d          |          }t          j        ddg          }t          j        d                              t          j                                      d          }d}d	}t          j        d
dg          t          j        d
dg          ft          j        |g          t          j        dg          ft          j        dg          t          j        d
|z   |z   g          f||||z  z   f||||z  z   |dz  z   f||||z  z   ft          j	        t          j	        ft          j	        t          j        t          j	        g          fg}|D ]/\  }}	| 
                     |||	           |||	                     0d S )NTr  g      Y@g     @@}   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  r7   r  r   r   
numpy_datar   r  s
             r   test_ip_allclose_numpyz&TestNPFunctions.test_ip_allclose_numpy[  s   "T"""6**hv''y~~$$2:$66>>yII ZAQF!3!34ZSE!2!23Z
AHtO+< = =>#d
"##d
"TAX-.4$+%&VRVVRZ))*	

 ! 	9 	9FQffQllEE!QKK8888	9 	9r!   c                    t           } t          d          |          }t          j        d                              t          j                                      d          }d}d}t          j        t          j        dg          t          j        d	t          j        g          ft          j        t          j        dg          t          j        d	dg          ft          j        t          j        t          j        g          t          j        d	t          j        g          ft          j        t          j        t          j        g          t          j        d	d
g          ft          j        t          j         d
g          t          j        t          j        d
g          ft          j        t          j	        d
g          t          j        t          j	        d
g          ft          j        |dz  g          t          j        d
g          ft          j        d	g          t          j        d|z   |dz  z   g          f||||z  z   |dz  z   ft          j
        t          j        d	g          t          j
        d
t          j        g          fg
}|D ]/\  }}|                      |||           |||                     0d S )NTr  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  s	            r   test_ip_not_allclose_numpyz*TestNPFunctions.test_ip_not_allclose_numpyt  s8    "T"""6**y~~$$2:$66>>yII Z$$bj#rv&?&?@Z$$bj#q&:&:;Z())2:sBFm+D+DEZ())2:sCj+A+ABZ"&#''RVSM)B)BCZ&&
BFC=(A(ABZ
##RZ%6%67Z
AHtax,?+@ A AB4$+%q01Xrvsm$$bhRV}&=&=>

 ! 	9 	9FQffQllEE!QKK8888	9 	9r!   c                     t           } t          d          |          } G d dt          j                  } |dg          }|                     t           |||                    t          u            d S )NTr  c                       e Zd Zd ZdS )?TestNPFunctions.test_return_class_is_ndarray_numpy.<locals>.Fooc                 J    t          j        |i |                    |           S r   )r   r  r  )clsre   r  s      r   __new__zGTestNPFunctions.test_return_class_is_ndarray_numpy.<locals>.Foo.__new__  s%    x00055c:::r!   N)__name__
__module____qualname__r6  rz  r!   r   Foor3    s#        ; ; ; ; ;r!   r:  r   )r?  r   r   ndarrayr  ra  rw  )r  r  r  r:  r-   s        r   "test_return_class_is_ndarray_numpyz2TestNPFunctions.test_return_class_is_ndarray_numpy  s     "T"""6**	; 	; 	; 	; 	;"* 	; 	; 	; CHHUU1a[[))T122222r!   c                     t           } t          d          |          }t          j        dt          j        g          }|                      |||d           |||d                     d S )NTr  r  r  )r?  r   r   r  r  r  )r  r  r  r   s       r   test_equalnan_numpyz#TestNPFunctions.test_equalnan_numpy  s    "T"""6**Hc26]##&&A666%1555	7 	7 	7 	7 	7r!   c                    t           } t          d          |          }t          j        t          j        dg          }t          j        dt          j        g          } |||           t          j                            |t          j        t          j        dg                     t          j                            |t          j        dt          j        g                     d S )NTr  r   r   )r?  r   r   r  r  rD  rE  )r  r  r  r   r  s        r   $test_no_parameter_modification_numpyz4TestNPFunctions.test_no_parameter_modification_numpy  s     "T"""6**Hbfa[!!Ha[!!a

%%a261+)>)>???

%%a1bf+)>)>?????r!   c                 "   t           } t          d          |          }t          j        t          j                  j        }t          j        |gt          j                  }|                      |||           |||                     d S )NTr  r   )r?  r   r   r   r  r   r  r  )r  r  r  r"  r-   s        r   test_min_int_numpyz"TestNPFunctions.test_min_int_numpy  s     "T"""6**(27##'HgYbg...&&A,,a44444r!   c                    |                                   t          } t          d          |          }t          j        ddt          j        g          }t          j        ddg          }|                     t                    5 } |||           d d d            n# 1 swxY w Y   |                     dt          |j
                             d S )NTr  r  r  r  z=shape mismatch: objects cannot be broadcast to a single shape)r  r?  r   r   r  r  r  r\  r  r  r  )r  r  r  r-   r.   rb  s         r   test_allclose_exceptionz'TestNPFunctions.test_allclose_exception  s   !!!"T"""6**JdBF+,,J	4())z** 	aE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 (*-ak*:*:	< 	< 	< 	< 	<s   BB#&B#c                    t           } t          d          |          }t          | j        ||d          }t	          j        ddd          }t	          j        dd	          }|d
z   } ||||d           | j                            |            ||||d           | j                            |            ||||d           t          j	        |d d<   t          j
        |dd <   | j                            |            ||||d           t          j	        |d d<   t          j
         |dd <   | j                            |            ||||d           t	          j        dd	          }|dz   }|dz   } ||||d           d}d}d} ||||d           d}t	          j        ddd          }t	          j        dd          } ||||d           t	          j        dt          j	        t          j
        t          j
         ddg          }|                    ddd          }t	          j        ddd          }t	          j        dd          } ||||d           t          dd          D ]}g d}d} ||||d           t	          j        g           }g d}d} ||||d           t	          j        ddd                              ddd          }t	          j        d           }|dz
  } ||||d           t          j	        }t	          j        d          }t	          j        dt          j	                  } ||||d           t          j	        }dg}dg} ||||d           t	          j        dd	          }|}|} ||||d           dd!g}t	          j        dd	          }|} ||||d           t          j
         d"dd#t          j
        g}t	          j        dd	          }|d$z  } ||||d           t	          j        d%dd          }t	          j        t          j
         d"dd#t          j
        g          }|d$z  } ||||d           | j                            d&          }t	          j        d'dd&          }t	          j        d&d()          } ||||d           d*D ]3}t	          j        g d          |z  }ddg}ddg} ||||d           4d}dg}dg} ||||d           t	          j        ddd          }t	          j        ddd          }t	          j        ddd+          }	 ||	||          }
t          j                            |
|	           t	          j        g d,          }t	          j        g d,          }t	          j        g d-          } ||||d           dg}t          j
        g} |d||d           t	          j        g d.          }t	          j        g d,          }t	          j        ddt          j	        dg          } ||||d           t	          j        g d/          }t	          j        g d0          }t	          j        t          j	        dt          j	        dt          j	        g          } ||||d           t	          j        g d.          }t	          j        g d,          }t	          j        ddt          j
        dg          } ||||d           t	          j        dd
t          j	        d1t          j
         dd2dt          j
        dd3g          }t	          j        g d4          }t	          j        ddt          j	        ddt          j
        g          } ||||d           t	          j        g d5          }t	          j        ddd6          }t	          j        |d7z            } ||||d           | j                            ddt          j        z  d8          }t	          j        ddt          j        z  d9          }t	          j        |          }t	          j        |          } ||||          }t          j                            ||d:;           | j                            d          }t	          j        d%dd9          }t	          j        |          } ||||d           | j                            d9          }t	          j        d%dd          }t	          j        |          } ||||d           d S )<NTr  r  r  r  r  r  r  r<  r@  rF  )r  r   r  rT  r  g      r  r#  r,  rz  )rF  )r  ?      @r,  r  gffffff?r  g333333"r#  rY  rZ  r[  r  r  r   r4  r  Fr  r  rT  r3  r  rD  r  r/  )r   rW  r   rF  )r   r  gGz@r,  )r   r        @r#  r,  )	r   r@  r  rJ  r#  r,  r|  r  g      @rC  rJ  r|  r;  )r   r  r#  r,  r  r  )g~@g<ԛ@g3@i!N  r  )r  r  r   )r   )rE  r   r   r  r   r  r  r  r  r  r  r  r&  r+  rV  rU  rD  r  sinuniformr  cosr  	ones_like)r  r  r  r
  r   rG  rH  factorr  x0r{   exactr  s                r   test_interp_basicz!TestNPFunctions.test_interp_basic  s
   "T"""6**+VUEJJJKAr""Yr1#XARr223333ARr223333ARr223333"1""##ARr2233332A26'233ARr223333Ib!UUARr223333ARr223333/[Q##Yr1ARr223333Hc2626BF7C>??IIa#I&&[Q##Yr1ARr223333r1 	8 	8ABBF26677777HRLLYYARr223333K2r""**1a33Yr]]"WARr223333FYq\\WQARr223333FSSARr223333Ib!ARr2233335MYr1ARr223333fWdCbf-Yr1#XARr223333KR$$Xwc3788#XARr223333HNN3[Q$$WSU+++ARr223333 	8 	8F##f,AQBQBF26677777SVARr223333K1a  K1a  [Ar""eB1oo

&&sB///H\\\""Xlll##Xooo&&ARr223333SfXARr223333H&&&''Xlll##Xq!RVQ'((Qb++,,,H88899Xooo&&Xrvq"&!RV455Qb++,,,H&&&''Xlll##Xq!RVQ'((Qb++,,,HabfcBF7AsArvq!LMMX((())Xq!RVQ26233Qb++,,,H88899[B	**VBHQb++,,,HQBE	622[AIt,,VBZZq		eAr2

""5#D"999 HNN2[b$''\"Qb++,,, HNN4  [b"%%\"Qb++,,,,,r!   c                    |j         dz  }t          j        || j                            t          |j                   |d          t          j                   t          j        || j                            t          |j                   |d          t          j                    t          j        || j                            t          |j                   |d          t          j                   d S )Nr  F)replace)r  r   putr  choicer+  r  r  )r  r-   r  s      r   _make_some_values_non_finitez,TestNPFunctions._make_some_values_non_finiteq  s    FcM
q$(//%--E/BBBFKKK
q$(//%--E/BBRVGLLL
q$(//%--E/BBBFKKKKKr!   c           	   #   v  K   t          j        ddd|dz  z             V  t          j        ddd|z             V  t          j        ddd|dz  z             V  t          j        ddd|dz  z             V  t          j        d	d
d|dz  z             V  t          j        ddd|z             dz  V  t          j        ddd|dz  z             dz  V  t          j        ddd|z             dz  V  t          j        ddd|dz  z             dz  V  t          j        ddd|dz  z             dt          j        t          j        d|dz  z             t           j        z  d|dz  z   z            z  z   V  t          j        ddd|z             | j                            d|z   d|z            z   V  t          j        ddd|z             | j                            d|z   d|z            z   V  t          j        ddd|z             | j                            d|z   d|z            z   V  t          j        ddd|z             | j                            d|z   d|z            z   V  t          j        ddd|z             | j                            d|z   d|z            z   V  t          j        ddd|z             | j                            d|z   d|z            z   V  | j                            d|z             dz  dz   V  | j                            d|dz  z             dz  dz   V  d S )Nr        @r   r  r  g333333@r  g      @r  r  g@g333333@gq=
ףp?g @gQ?r  r  )r  scale      @g      4@g      I@g      i@r  g333333?rI  rH  )r   r  rK  r  r  r  normalr  )r  ndatas     r   r'  zTestNPFunctions.arraysw  s     k#sA	M22222k#sAI.....k#sA
N33333k#sA
N33333k#sA
N33333k#sAI..5555k#sA
N33d::::k#sAI..5555k#sA
N33d::::k#sA
N33cBFIa%!)m$$ru,EAI>=@ =@ 7@ @ 	@ 	@ 	@ k#sAI..U#+ 2A 2/ 2/ / 	/ 	/ 	/ k#sAI..U#+ 2A 2/ 2/ / 	/ 	/ 	/ k#sAI..U#+ 2A 2/ 2/ / 	/ 	/ 	/ k#sAI..U$, 2A 20 20 0 	0 	0 	0 k#sAI..U$, 2A 20 20 0 	0 	0 	0 k#sAI..U%%- 2A 21 21 1 	1 	1 	1 hmmAI&&,s2222hmmA	M**S03666666r!   c                    t           } t          d          |          }d}t          j        ddd|z             }t          j        |dz            }|                     |          D ]}d} ||||          } ||||          }	|                     ||	|	           | j                            |            ||||          } ||||          }	|                     ||	|	           | j                            |            ||||          } ||||          }	|                     ||	|	           | j                            |            ||||          } ||||          }	|                     ||	|	           | 	                    |            ||||          } ||||          }	|                     ||	|	           | 	                    |            ||||          } ||||          }	|                     ||	|	           | 	                    |            ||||          } ||||          }	|                     ||	|	           d S )
NTr  i N  r   r  r   r  rH  r  )
rE  r   r   r  rK  r'  r  r  r  rW  )
r  r  r  r]  rG  rH  r   r   r  r  s
             r   test_interp_stress_testsz(TestNPFunctions.test_interp_stress_tests  s   "T"""6**[BE	**VBHU## '	A '	AADvaR((H%2r""C##Hc4#@@@
 HQvaR((H%2r""C##Hc4#@@@HR   vaR((H%2r""C##Hc4#@@@HR   vaR((H%2r""C##Hc4#@@@ --a000vaR((H%2r""C##Hc4#@@@--b111vaR((H%2r""C##Hc4#@@@--b111vaR((H%2r""C##Hc4#@@@@O'	A '	Ar!   c                    t           } t          d          |          }d}t          j        ddd|z             }t          j        |dz            }| j                            t          j        t          j         t          j        gd          |d d<   | j        	                    |           t          j
        |dz            }| j                            t          j        t          j         t          j        gd          |d d<   | j        	                    |           |d	|z  z   }|                     |          D ]} ||||          }	 ||||          }
t          j                            |	|
d
           | j        	                    |           | j        	                    |           | j        	                    |           t          j                            |	|
d
           d S )NTr  i  r   r  r   r     r  r  )rE  r   r   r  rK  r  rV  r  r  r  rM  r'  rD  r  )r  r  r  r]  rG  realimagrH  r   r  r  s              r    test_interp_complex_stress_testsz0TestNPFunctions.test_interp_complex_stress_tests  s   "T"""6**[BE	**vb3hX__bfrvgrv%>DDTcT
vb3hX__bfrvgrv%>DDTcT
BIU## 	F 	FAvaR((H%2r""CJ&&x&EEEHQHR   HR   J&&x&EEEE	F 	Fr!   c                    t           } t          d          |          }|                                  t          j        g d          }t          j        g           }t          j        g           }|                     t                    5 } ||||           d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d}t          j        g d          }t          j        ddg          }|                     t                    5 } ||||           d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d}t          j
        d                              d	d          }t          j
        d          }|                                 5 } ||||           d d d            n# 1 swxY w Y   d
}|                     |t          |j	                             d}t          j
        d          }t          j
        d                              d	d          }|                                 5 } ||||           d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d}t          j
        d          }t          j
        d          }|                                 5 } ||||           d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d}t          j
        d          dz                       t          j                  }t          j
        d          }|                                 5 } ||||           d d d            n# 1 swxY w Y   |                     |t          |j	                             d S )NTr  r"  zarray of sample points is emptyr   r  z#fp and xp are not of the same size.r  r#  zxp must be 1Dzfp must be 1Dr{  z:Cannot cast array data from complex dtype to float64 dtyper  )rE  r   r  r   r  r  r\  r  r  r  r  r&  rT  r  r  )	r  r  r  r   rG  rH  rb  r  complex_dtype_msgs	            r   test_interp_exceptionsz&TestNPFunctions.test_interp_exceptions  s   "T"""6** 	!!!HYYYXb\\Xb\\z** 	aE!R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 0c3q{++,,,Xiii  Xq!fz** 	aE!R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 4c3q{++,,,Yq\\!!!Q''Yq\\##%% 	E!R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 c3q{++,,,Yq\\Yq\\!!!Q''##%% 	E!R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 c3q{++,,,Yq\\Yq\\##%% 	E!R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'Q[)9)9:::illR''55Yq\\##%% 	E!R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'Q[)9)9:::::sl   B''B+.B+$D>>EEGG#&G#&J  JJ3LLL N::N>N>c                    t           } t          d          |          }t          | j        ||          }t	          j        g d          }t	          j        t          j         ddt          j        g          }t	          j        ddg          }|||d} ||           t	          j        t          j         d	d
t          j        g          }t	          j        g d          }t	          j        ddg          }|||d} ||           d S )NTr  )r   r   r=  r  rO  ?rP  r  rF  r   r=  )r   rO  ri  r   )rE  r   r   r  r   r  r  )r  r  r  r
  rG  rH  r   r  s           r   "test_interp_non_finite_calibrationz2TestNPFunctions.test_interp_non_finite_calibration5  s     "T"""6**+VU;;Xmmm$$XwS"&122Hc3Z  "--vXw1bf-..X&&&''Hc3Z  "--vr!   c                 ^   t           } t          d          |          }t          dd          D ]}t          j        |t          j                  }t          j        |t          j                  }t          j        dd|dz
  |gt          j                  }|d d d         } ||||          } ||||          }	t          j        g dt                    }
|
d d d         }t          j	        
                    ||
           t          j	        
                    |	|           t          j        ddd	          }t          j        ddd	          }d}t          j	        
                     ||||          |           d
}t          j	        
                     ||||          |           t          j        d
          }t          j	        
                     ||||          |           t          j        d
          }t          j	        
                     ||||          |           t          j        }t          j	        
                     ||||          |           t          j        ddd	          }t          j        ddd	          }t          j        d
          }t          j	        
                     ||||          |           t          j        ddd          }t          j        |          }t          j	        
                     |t          j        ||          d           d S )NTr  r   r  r   rW  r   r   r   r   r   r  r  r  r  )rE  r   r+  r   r  r  r  r  r  rD  r  r  r  r  r  rK  r  )r  r  r  r  rG  ypincptsdecptsincresdecresinctgtdectgtr   r  rP  rH  s                   r   test_interp_supplemental_testsz.TestNPFunctions.test_interp_supplemental_testsH  s    "T"""6**!RLL 	; 	;D4ry111BRY///BXr1dQh5RYGGGFDDbD\FU62r**FU62r**FXlll%888FDDbD\FJ**66:::J**66::::K1a  K1a  

&&uuRA;;;

&&uuRA;;;Z__

&&uuRA;;;Z__

&&uuRA;;;V

&&uuRA;;;K1a  K1a  Xc]]

&&uuRA;;;Yq"f%%VBZZ

&&uuRUB';';SAAAAAr!   c                 H   t           } t          d          |          }t          j        ddd          }t          j        ddd          dt          j        ddd          z   dz  z   }d}|d|z   dz  z   }t          j                             ||||          |           d S )NTr  r   r   r  r  r  )rE  r   r   r  rD  r  )r  r  r  r   r  rP  y0s          r   &test_interp_supplemental_complex_testsz6TestNPFunctions.test_interp_supplemental_complex_testsq  s     "T"""6**K1a  K1a  AAq!(<(<$<#DD1r6T/!

&&uuRA;;;;;r!   c                    t           } t          d          |          }t          j        t          j        t          j        t          j        g}t          j        |d          D ]~}|\  }}}t          j	        d|          }|dz  
                    |          }	t          j        ddd|          }
 ||
||	          } ||
||	          }|                     ||           d S )NTr  r#  r  r   r  )rE  r   r   r  r  r  r  r  r  r  r  r  r  )r  r  r  dtypescomboxp_dtypefp_dtypex_dtyperG  rH  r   r  r  s                r   -test_interp_float_precision_handled_per_numpyz=TestNPFunctions.test_interp_float_precision_handled_per_numpy}  s    "T"""6***bj"(BH=<VQGG 	3 	3E*/'Hh2X...B'!!(++BAq"G444AvaR((H%2r""C##Hc2222	3 	3r!   c                 &   d }t           } t          d          |          } |            D ]b} ||          } ||          }t          |t          j                  r|                     |||f           K|                     |||           cd S )Nc               3     K   t          j        d          V  t          j        d          V  t          j        dd          V  t          j        dd          V  t          j        d          V  t          j        dd          V  t          j        dd          V  dD ]<} t          j        g dd	| z  
          V  t          j        g dd| z  
          V  =d S )Nz
2016-01-01NaTmsnsz2038-01-19T03:14:07"   )rb  r   WDhr   r
  r  usr  psfsas){   ir  z<datetime64[%s]r   z<timedelta64[%s])r   rg  rf  r  )units    r   r8   z*TestNPFunctions.test_isnat.<locals>.values  s>     -------&&&&&-t,,,,,-t,,,,,- 566666.-----.T*****1 @ @ h111%6%=? ? ? ? ? ?h111%7$%>@ @ @ @ @ @ @@ @r!   Tr  )r   r   r  r   r;  r  rh  ri  s          r   
test_isnatzTestNPFunctions.test_isnat  s    	@ 	@ 	@$ "T"""6** 	3 	3AvayyH%((C!RZ(( 3''#t<<<<  32222	3 	3r!   c                 0    d } fd}t           t          fD ]} t          d          |          }t           j        ||          } |            D ]}d|i}d|j        v r"d t          j        fD ]}||d<    ||           n ||           t          j        dt          j	        	          }d|i}d|j        v rKd |d<    ||d|           t          j        |d<    ||d
|           t          j	        |d<    ||d|            ||d|           d S )Nc               3     K   dV  dV  dV  dV  g dV  ddgV  dV  dV  g dg dfV  t          j        g           V  t          j        d          V  t          j        d                              d	d          V  t          j        d                              d	d          j        V  d
 }  | d          V   | d          V   | d          V   | d          V  dS )a}  
            To quote from: https://docs.scipy.org/doc/numpy/reference/generated/numpy.asarray.html    # noqa: E501
            Input data, in any form that can be converted to an array.
            This includes:
            * lists
            * lists of tuples
            * tuples
            * tuples of tuples
            * tuples of lists
            * ndarrays
            r  r  Fr   r"  r!  r,  r+  r#  c                 V    t                      }| D ]}|                    |           |S r   r   r6   )r8   r-   r  s      r   	make_listzITestNPFunctions.test_asarray.<locals>.input_variations.<locals>.make_list  s0    FF    AHHQKKKKr!   )r  r  r  rm  r?  N)r   r  r  r&  rP  )r  s    r   rW  z6TestNPFunctions.test_asarray.<locals>.input_variations  s[      HHHIIIKKKGGG))OOOi((((OOO((((99iii(((((2,,)A,,)B--''1-----)B--''1--////  
 )I&&&&&)O,,,,,)L))))))/0000000r!   c                 (    | di |}|r                     ||d         u            d S                      ||d         u           t          j                            ||d                                         |j        |d         k               d S )Nr-   r!  rz  )r  r   rD  r  r!  )jittedexpect_samer  returnedr  s       r   check_pass_throughz8TestNPFunctions.test_asarray.<locals>.check_pass_through  s    v''''H CF3K 788888s ;<<<
**8VC[AAA&/ ABBBBBr!   Tr  r-   kwsr!  r  r   F)
r  r#  r   r   r  r7  r   r  r  r  )	r  rW  r  r  r  r
  r   r  r	  s	   `        r   test_asarrayzTestNPFunctions.test_asarray  s   #	1 #	1 #	1P	C 	C 	C 	C 	C , 	< 	<F&C&&&v..ET/??F%%'' < <qFO++#R]3 ' '*,wv' F6NNN Ib
333qFO++&*F7O&&udF;;;&(mF7O&&ueV<<<&(jF7O&&udF;;;;&&udF;;;;)<		< 	<r!   c                     d }d }d }d }||||g}|D ]E} t          d          |          } |            } |            }	|                     ||	           Fd S )Nc                  *    t          j        d          S Nrm  r  rz  r!   r   case1z3TestNPFunctions.test_asarray_literal.<locals>.case1  s    :m,,,r!   c                  .    d} t          j        |           S r  r  r
  s    r   case2z3TestNPFunctions.test_asarray_literal.<locals>.case2  s    A:a== r!   c                  .    d} t          j        |           S )Nu+   大处 着眼，小处着手。大大大处r  r  s    r   case3z3TestNPFunctions.test_asarray_literal.<locals>.case3  s    =A:a== r!   c                  .    d} t          j        |           S )N r  r  s    r   case4z3TestNPFunctions.test_asarray_literal.<locals>.case4  s    A:a== r!   Tr  )r   r  )
r  r  r  r  r  funcsr  r  r  r  s
             r   test_asarray_literalz$TestNPFunctions.test_asarray_literal  s    	- 	- 	-	! 	! 	!	! 	! 	!	! 	! 	! ue, 	3 	3F&C&&&v..EvxxH%''C##Hc2222		3 	3r!   c                 *                                        t          d          t                     fd}d }d }d }d } | |                        | |                        | |                        | |                       d S )NTr  c                                          t                    5 } |            d d d            n# 1 swxY w Y                       dt          |j                             d S )Nz?asarray support for List is limited to Boolean and Number types)r  r   r  r  r  )alistrb  r  r  s     r   test_rejectzQTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.test_reject  s    "";// 1e              MM.AK  " " " " "r  c                  L    t                      } |                     d            | S r   r  )ls    r   make_none_typed_listzZTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_none_typed_list  s    AHHTNNNHr!   c                      t                      } t                      }|                    d           |                     |           | S )Nr   r  )r  r   s     r   make_nested_listzVTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_nested_list#  s7    AAHHQKKKHHQKKKHr!   c                  r    t                      } t                      }d|d<   |                     |           | S )Nr-   r   )r   r   r6   )r  r  s     r   make_nested_list_with_dictz`TestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_nested_list_with_dict*  s1    AAAaDHHQKKKHr!   c                  V    t                      } dD ]}|                     |           | S )N)r-   bcdefr  )r  r  s     r   make_unicode_listzWTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_unicode_list1  s0    A'  Hr!   )r  r   r  )r  r  r  r  r  r  r  s   `     @r   ,test_asarray_rejects_List_with_illegal_dtypez<TestNPFunctions.test_asarray_rejects_List_with_illegal_dtype  s    !!!"T"""7++	" 	" 	" 	" 	" 	"	 	 	
	 	 		 	 		 	 	 	((**+++$$&&'''..00111%%''(((((r!   c                    d }t           } t          d          |          } |            D ]\  }}| ||          } ||          }n |||          } |||          }|                     ||           |                     t	          j        |j        t          j                  |j                   t          } t          d          |          }t	          j	        g d          } ||          } ||          }|                     ||           |                     t	          j        |j        t          j                  |j                   d S )Nc               3     K   t          j        g d          d fV  t          j        ddgt           j                  t           j        fV  t          j        ddgt           j                  t           j        fV  t          j        ddgt           j                  t           j        fV  t          j        ddgt           j                  t           j        fV  d S )Nr"  r  r#  r   )r   r  r  r  r  r  rz  r!   r   r  z-TestNPFunctions.test_asfarray.<locals>.inputs=  s      (999%%t++++(Aq6444bj@@@@(Aq611127::::(Aq61112<????(Aq61112=@@@@@@r!   Tr  r   r"  )
r&  r   r  r  r   r  r!  inexactr(  r  )r  r  r  r  r7   r	  r  r  s           r   test_asfarrayzTestNPFunctions.test_asfarray<  sh   	A 	A 	A "T"""6**vxx 		M 		MGCz!6#;;eCjj!6#R000eCr***##Hc222OOBM#)RZ@@#)LLLL ("T"""6**hyyy!!6#;;eCjj#...ci<<ciHHHHHr!   c           	      "    t           }t          |          }t          }t          |          }||f||ffD ]U\   fd}t          j        d          t          j        d          t          j        ddgddgg          t          j        g           t          j        g g g          g}t          j        t          j        t          j	        t          j
        t          j        t          j        t          j        t          j        g}d t          j        ||          D             }ddd	d
g ddg}	t          j        ||	          D ]C}
 ||
d            ||
d            ||
d            ||
d            ||
d           Dt          j        d          }dgdgdgfD ].}
 |||
            ||t          j        |
                     /t          j        d          }ddgddgddgddgddgddgddgfD ].}
 |||
            ||t          j        |
                     / ||t          j        ddgt          j                              |t          j        d          t          j        d                     Wd S )Nc                 \                          | |           | |                     d S r   r  )r-   rL  nbfuncr  r  s     r   r  z*TestNPFunctions.test_repeat.<locals>.checkg  s7    ''q'(:(:FF1g<N<NOOOOOr!   r   r  r   r  r#  c              3   H   K   | ]\  }}t          j        ||           V  dS )r   Nr  )r  r-   ts      r   	<genexpr>z.TestNPFunctions.test_repeat.<locals>.<genexpr>~  sM       #J #J31Q28AA#6#6#6 #J #J #J #J #J #Jr!   r  Tr  r  )rL  r  r   r  )rM  r   rO  r   r  r  r  uint32r  uint64r  r  r  r  r  r  r   r)  )r  	np_pyfunc	np_nbfuncarray_pyfuncarray_nbfuncr  target_numpy_valuestarget_numpy_typestarget_numpy_inputstarget_non_numpy_inputsr  onetwor  r  s   `            @@r   test_repeatzTestNPFunctions.test_repeat[  s    	OO	 $L)) )95 ,l;= :	8 :	8NFFP P P P P P P
 

	$1a&1a&)**"b""# 		

	"#J #J#,#45H5G$I $I#J #J #J
 		'# _%8%<> > & &a####a####a####a####a%%%%% )A,,CcA3_ 0 0c1%%%%c28A;;/////)A,,C!fq!fq!fq!fq!fq!fq!fM 0 0c1%%%%c28A;;/////E#rxAbh???@@@@E")B--277777u:	8 :	8r!   c           	      l   t           }t          |          }t          }t          |          }|                                  ||f||ffD ]i\  }}|                     t
                    5 } |t          j        d          d           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 } |t          j        d          d           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t
                    5 } |t          j        d          t          j        ddg                     d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t
                    5 } |t          j        d          t          j        g d                     d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t
                    5 } |t          j        d	          t          j        g d
                     d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 } |t          j        d          ddg           d d d            n# 1 swxY w Y   |                     dt          |j
                             dD ]R}|                     t                    5   |t          j        d          |           d d d            n# 1 swxY w Y   Skd S )Nr   rW  z#negative dimensions are not allowedr  zIThe repeats argument must be an integer or an array-like of integer dtyper  r  z(operands could not be broadcast togetherr  rl  )Tr-   1)rM  r   rO  r  r  r\  r   r  r  r  r  r   r  )	r  r  r  r  r  r  r  rb  reps	            r   test_repeat_exceptionz%TestNPFunctions.test_repeat_exception  s$   	OO	 $L))!!! )95 ,l;= -	, -	,NFF "":.. '!rwqzz2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'MM?ak**, , , "";// (1rwqzz3'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (MM4AK  " " " "":.. 6!rwqzz28QG#4#45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6MM?ak**, , , "":.. 8!rwqzz28III#6#67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8MMDak**, , , "":.. ;!rwqzz28LLL#9#9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;MMDak**, , , "";// /1rwqzzC:.../ / / / / / / / / / / / / / /MM4AK  " " "
 ( , ,&&{33 , ,F271::s+++, , , , , , , , , , , , , , ,,W-	, -	,s~   )BB	B	!DD	D	3FF	F	%3H$$H(	+H(	13J00J4	7J4	=!L**L.	1L.	;N&&N*-N*c                 H   t           }t          t                     }t          j        g d          t          j        g d          t          j        g d          gt          j        g d          t          j        g d          t          j        g d          gdft          j        dg          t          j        d	g          gt          j        d
g          t          j        dg          gdft          j        d	g          gdz  t          j        d
g          gdz  dft          j        t          j        d
ddt          j        ddg                    gdz  t          j        d
ddt          j        ddg          gdz  dft          j        t          j        d
ddt          j        ddgg                    gdz  t          j        d
ddt          j        ddgg          gdz  dft          j        t          j        d
ddt          j        ddg                    gdz  t          j        d
ddt          j        ddg          gdz  dfg}t          j        d          t          j        d                              d          fD ]}|                    |dk     |dk    g||dz  gdf           |                    |dk     |dk    f||dz  fdf           |                    |dk     |dk    g||dz  fdf           |                    |dk     |dk    f||dz  gdf           |D ]2\  }}}| 	                     ||||           ||||                     3t          }t          t                    }	| 	                     |||           |	||                     d S )N)FFFFTF)FFTr"  r9  r:  g.@TFr   r  r   r  r#  r  r;  y      @       @r  )r  r  )rV  r   r   r  r  r  r  r&  r6   r  rX  )
r  r  r  
test_casesr   rT  rU  rQ  np_pyfunc_defaultsnp_nbfunc_defaultss
             r   test_selectzTestNPFunctions.test_select  s   	OO	 h,,,--h+++,,h+++,,. hyyy!!hyyy!!hyyy!!#$(* hvhw!#%8QC=="(A3--"@!E hw 3&1##(=qAhrxAq"&!Q 78899:Q>h1aA.//014a9 hrx!Q261a!8 9::;;<q@hAq"&!Q/0112Q6; hrxAvrvq! <==>>?!Ch1fbfa344591>/

6 )B--2!6!6v!>!>? 	@ 	@AAq1u~16{A>???Aq1u~16{A>???Aq1u~16{A>???Aq1u~16{A>????.8 	N 	N*Hz7##IIh
G$L$L$-Ih
G$L$LN N N N 0!"455 2 28Z H H 2 28Z H H	J 	J 	J 	J 	Jr!   c                    t          t                    }t          j        d          }|                                  t          j        d          t          j        g d          gt          j        d          t          j        d                              dd          gdt          d	ft          j        d          t          j        d
          gt          j        dg          t          j        dg          gdt          dft          j        dg          t          j        d
g          gt          j        dgg          t          j        dgg          gdt          dft          j        d          t          j        d
          gt          j        d          t          j        d          gdt          d	ft          j        t          j        dddt          j	        ddg                    t          j        dddt          j	        ddg          dt          dfdgdgdgt          df|dk     
                    t                    |dk    
                    t                    g||dz  gdt          df|dk    |dk    |dk    |dk    g||dz  |gdt          dfdgdz  t          j        dg          gdz  dt          dft          j        d
g          gdz  dgdz  dt          dff
D ]j\  }}}}}|                     |          5 } ||||           d d d            n# 1 swxY w Y   |                     |t          |j                             kd S )Nr  Tr  r   r+  r,  r#  r   z/condlist arrays must be of at least dimension 1Fr  zHcondlist and choicelist elements must have the same number of dimensionsr  r;  z"condlist must be a List or a Tuplezdefault must be a scalarz%condlist arrays must contain booleansr=  r<  r  z7list of cases must be same length as list of conditionsr  r  z items of condlist must be arraysr  z"items of choicelist must be arrays)r   rV  r   r  r  r  r&  r   r  r  r  rd  r\  r  r  r  r  )	r  r  r   rT  rU  rQ  expected_errorexpected_textrb  s	            r   test_select_exceptionz%TestNPFunctions.test_select_exception  sY   OO	IbMM!!! htnnbh';';';<<=hqkk29R==00A667KM htnnbhuoo.1#!0N 9: hv% 1 12huoorx!/K)*
 htnnbhuoo.!bhqkk0JAKM Xbh1aA67788Xq!Q1-..;13 VaS1#{') 1unnS!!AE>>##6#67!Q!VaAC !eQUAE1q5)Aq!tQ<JFH Z#!4a/1 hw 3&a13Y.M
 1	; 1	;HHj'>=^ "">22 9a	(J8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9MM-Q[)9)9::::c1	; 1	;s    LL	!L	c                 T     fd} |t                       |t                      |t                      |t                     t          }t          t                    }dD ]m}dD ]h} |||          } |||          }t          st          j                    dv r 	                    ||dd           P 	                    ||d	           ind
D ]h} 
                    t                    5 } ||d           d d d            n# 1 swxY w Y                        dt          |j                             idD ]h} 
                    t                    5 } |d|           d d d            n# 1 swxY w Y                        dt          |j                             id S )Nc                 d   | }t          |           }dD ]0} ||          } ||          }                    ||d           1dD ]g}                    t                    5 } |d           d d d            n# 1 swxY w Y                       dt          |j                             hd S )Nr   r   r  r+  r  r  r-   r  r  r  M must be an integer)r   r  r  r   r  r  r  )r  r  r  r   r  r  r  r  s          r   check_windowz4TestNPFunctions.test_windowing.<locals>.check_windowE  s   IT

I" F F$9Q<<ill''#H'EEEE# M M&&{33 #vIcNNN# # # # # # # # # # # # # # #4c&:J6K6KLLLLM Ms   $A<<B 	B 	r  )r  r[  g      ,@)ppc64leaarch64r  r  r  rQ  r  r  r  r  )r-   r  r  z beta must be an integer or float)r\  r_  rb  re  ri  r   r   platformmachiner  r  r   r  r  r  )	r  r  r  r  r   rh  r  r  r  s	   `        r   test_windowingzTestNPFunctions.test_windowingD  s   	M 	M 	M 	M 	M 	[!!![!!!Z   Z    	OO	 		I 		IA( I I$9Q--i4(( I 0 2 26L L L++H,/hQ , H H H H ++Hc+HHHHI   	I 	IA"";// "6	!S!!!" " " " " " " " " " " " " " "MM0#f6F2G2GHHHH 	1 	1D"";// #6	!T"""# # # # # # # # # # # # # # #MM<f.//1 1 1 1	1 	1s$   0D		D	D	E44E8	;E8	c                    t           } t          d          |          }t          j        g dg dg          t          j        g dg dg          ft          j        g dg dg          dft          j        g dt          j                  t          j        g dt          j                  fdt          j        dd	g          t          j        g d          ft          j        g d          t          j        g dg dg          ft          j        g dg dg          t          j        g d          ft          j        d
                              dd	d          t          j        d                              d	d	          fg}|D ]3\  }} |||          } |||          }|                     ||           4d S )NTr  r"  r9  r  rl  r   )r"  r9  r   r  r  r  r#  r,  )	rl  r   r   r  r  r  r  r&  r  r  r  r  pairsr   r  r  r  s           r   
test_crosszTestNPFunctions.test_crossr  s   "T"""6** )))YYY/00)))YYY/00 )))YYY/00  "(333"*555
 !Q  ## ##)))YYY/00 )))YYY/00## 	"%%aA..	!$$Q**K)
V  	3 	3DAqva||H%1++C##Hc2222	3 	3r!   c                    t           } t          d          |          }|                                  |                     t                    5 } |t          j        d          t          j        d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j
        d          t          j
        d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     d	t          |j	                             |                     t                    5 } |t          j        d
                              d          t          j        d          d d d                             d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j        d
                              d          t          j        d
          d d d                             d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          g d          t          g d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )NTr  r,  r#  z)Incompatible dimensions for cross productrl  rM  z Dimensions for both inputs is 2.z+`cross2d(a, b)` from `numba.np.extensions`.r<  r  r,  r  rW  r  )r,  r  zDimensions for both inputs is 2r"  r9  Inputs must be array-like.)rl  r   r  r  r\  r   r  r  r  r  r  r&  r   setr  s       r   test_cross_exceptionsz%TestNPFunctions.test_cross_exceptions  sc   "T"""6**!!! z** 	fE	!	!  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	7 !!	
 	
 	
 z** 	fE      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	. !!	
 	
 	

 	9 !!	
 	
 	
 z** 	fE	!$$V,,	!TTrT"**622  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	7 !!	
 	
 	
 z** 	fE	!$$V,,	!TTrT"**622  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	- !!	
 	
 	
 {++ 	vEIIIIII  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	( !!	
 	
 	
 	
 	
s\   1BBB1DDDA G77G;>G;A J00J47J4=+L44L8;L8c                 ,   t           }t          t                    }t          j        ddgddgg          t          j        ddgddgg          ft          j        ddgddgg          dft          j        ddgt          j                  t          j        ddgt          j                  fdt          j        ddg          t          j        ddgddgg          ft          j        ddgddgg          t          j        ddg          ft          j        d                              d	d
d          t          j        d	                              d
d          fg}|D ]3\  }} |||          } |||          }| 	                    ||           4d S )Nr   r  r,  r  r  r   )rl  r  r  r  r#  )
rl  r   rn  r   r  r  r  r  r&  r  r  s           r   test_cross2dzTestNPFunctions.test_cross2d  s   Z   1a&1a&)**1a&1a&)** 1a&1a&)**  !Qrx000!Qrz222
 !Q  1a&1a&)** 1a&1a&)**!Q   	"%%aA..	!$$Q**A$
L  	3 	3DAqva||H%1++C##Hc2222	3 	3r!   c                    t          t                    }|                                  |                     t                    5 } |t          j        d          t          j        d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j
        d                              d          t          j
        d          d d d                             d                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          ddg          t          d	d
g                     d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nr"  r9  z,Incompatible dimensions for 2D cross productr  r  rW  r   r  r,  r  r  )r   rn  r  r  r\  r   r  r  r  r  r  r&  r   r  r  s      r   test_cross2d_exceptionsz'TestNPFunctions.test_cross2d_exceptions  s   Z  !!! z** 	fE####  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	: !!	
 	
 	
 z** 	fE	!$$V,,	!TTrT"**622  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	: !!	
 	
 	
 {++ 	vEQFQF  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	( !!	
 	
 	
 	
 	
s7   1B  BBA D99D= D=+F==GGc           	         t           } t          d          |          }t          j        g d          t          j        g d          ft          j        g dg dg          t          j        g d          ft          j        dd                              ddd	          t          j        g d
          ft          j        dd                              dd	          t          j        dd                              dd	d          ft          j        g d          t          j        g d          fg}|D ]3\  }} |||          } |||          }|                     ||           4d S )NTr  r"  rG  )r  r  r  r   r  r  r  )r   r     r  )FTr;  )ru  r   r   r  r  r&  r  )r  r  r  r'  r-   r.   r  r  s           r   test_union1dzTestNPFunctions.test_union1d9  s   "T"""6** #### )))YYY/00## 	!R  ((1Q//%% 	!R  ((1--	!R  ((1Q// )))**##-
8  	3 	3DAqva{{H%!**C##Hc2222	3 	3r!   c                     t          d          t                    }|                                  |                     t                    5 } |dt          j        ddg                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j        ddg          d           d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j        dd	g          t          j        d
dg                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j        ddg          t          j        ddg                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j        ddg          t          j        ddg                     d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |t          j        ddg          t          j        ddg                     d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )NTr  Hellor   r  z.The arguments to np.union1d must be array-likeWorldr  r  r-   r.   z/For Unicode arrays, arrays must have same dtyperQ  r  foobarr  rJ  )
r   ru  r  r  r   r   r  r  r  r  r  s      r   test_union1d_exceptionsz'TestNPFunctions.test_union1d_exceptions]  sH   "T""":..!!! {++ 	,vE'28QqE??+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,< !!	
 	
 	
 {++ 	,vE"(Aa5//7+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,< !!	
 	
 	
 {++ 	$vE'7###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$< !!	
 	
 	
 {++ 	FvE"(GW-..#s0D0DEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F= !!	
 	
 	
 {++ 	BvE"(C:&&%(@(@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B= !!	
 	
 	
 {++ 	:vE"(C:&&!Q(8(8999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:= !!	
 	
 	
 {++ 	>vE"(C:&&#s(<(<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>= !!	
 	
 	
 	
 	
s~   !A::A>A>!C44C8;C8EE!E'5G((G,/G,55I66I:=I:5LLL5NNNc                 ,   t           } t          d          |          }|                                  t          j        g d          t          j        ft          j        g d          fg dft          j        ddgddgg          t          j        fd	t          j        ft          j        ddgt          j        
          ft          j        d                              ddd          fg}|D ]"} || } || }| 	                    ||           #d S )NTr  r"  rF  r   r  r#  r,  )rl  rM  r   r  r  )
rx  r   r  r   r  r  r  r  r&  r  )r  r  r  r  pairr  r  s          r   test_asarray_chkfinitez&TestNPFunctions.test_asarray_chkfinite  s@   %"T"""6**!!!
 ##
 ##
 
 1a&1a&)**
 ! !Qrx000
 	"%%aA..; 
D  	3 	3Dvt}H%,C##Hc2222	3 	3r!   c           	      @    t          d          t                    }|                                  |                     t                    5 } |d           d d d            n# 1 swxY w Y   d}|                     |t          |j                             |                     t                    5 } |t          j
        ddt          j        dg                     d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j
        ddt          j        dg                     d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j
        g d	          d
           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NTr  r  z7The argument to np.asarray_chkfinite must be array-liker,  r  z#array must not contain infs or NaNsr   rF  r  z!dtype must be a valid Numpy dtype)r   rx  r  r  r   r  r  r  r\  r   r  r  r  )r  r  rb  r  s       r   !test_asarray_chkfinite_exceptionsz1TestNPFunctions.test_asarray_chkfinite_exceptions  s   "T"""#788!!! {++ 	qE!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Gc3q{++,,, z** 	/aE"(Aq"&!,--...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/;S=M=MNNN z** 	/aE"(Aq"&!,--...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/;S=M=MNNN {++ 	5qE"(<<<(()444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	593q{;K;KLLLLLsH   A%%A),A)4,C,,C03C09,E11E58E5>!G++G/2G/c                 >   t           } t          d          |          }d } |            D ]n}t          |j         |j                  D ]P}t          |j         |j                  D ]2} ||||          } ||||          }|                     ||           3Qod S )NTr  c               3      K   t          j        d          V  t          j        d                              dd          V  t          j        d                              ddd          V  d S )Nr  r  r  r4  r,  r#  rO  rz  r!   r   r3  z9TestNPFunctions.test_swapaxes_basic.<locals>.a_variations  sj      )B--)B--''1-----)B--''1a0000000r!   )r~  r   r+  ndimr  )	r  r  r  r3  r-   r  r  r  r  s	            r   test_swapaxes_basicz#TestNPFunctions.test_swapaxes_basic  s    "T"""6**	1 	1 	1
  	; 	;AQVGQV,, ; ;00 ; ;B%vaR00H%2r**C++Hc::::;;	; 	;r!   c                 ,   t           } t          d          |          }|                                  |                     t                    5 } |ddd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        d          dd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        d          dd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        d          d	d           d d d            n# 1 swxY w Y   |                     d
t          |j                             |                     t                    5 } |t          j	        d                              dd          dd           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NTr  r  r   r  r,  z.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerr   z)np.swapaxes: Argument axis1 out of boundsr<  r  rD  z)np.swapaxes: Argument axis2 out of bounds)r~  r   r  r  r   r  r  r  r   r  r\  r&  r  s       r   test_swapaxes_exceptionz'TestNPFunctions.test_swapaxes_exception  s   "T"""6** 	!!!{++ 	vE%A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A&*++	- 	- 	- {++ 	*vE")A,,q)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	F&*++	- 	- 	- {++ 	*vE")A,,5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	E&*++	- 	- 	- z** 	&fE")A,,1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	A&*++	- 	- 	- z** 	5fE")A,,&&q!,,a444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	A&*++	- 	- 	- 	- 	-sZ   A))A-0A-6 C""C&)C&/ EE"E( GGG!4I!!I%(I%c                     t          j        d                              d          }t          d             }t          j        ddgt           j                  }|                      |||          |                    ||                     d }t          d|j	                  D ]W} ||          }t          j
        ||	          }|                      |||          |                    ||                     Xd S )
NrN  )r#  r   r,  r  c                 0    t          j        | |d           S r3   r   take_along_axis)r-   r  s     r   	axis_nonez7TestNPFunctions.test_take_along_axis.<locals>.axis_none  s    %a6666r!   r   r  r   c                 ,     t            fd            }|S )Nc                 0    t          j        | |          S r   r  r-   r  r5   s     r   implz?TestNPFunctions.test_take_along_axis.<locals>.gen.<locals>.impl      )!Q555r!   r   r5   r  s   ` r   genz1TestNPFunctions.test_take_along_axis.<locals>.gen  +    6 6 6 6 T6Kr!   rW  r4   )r   r  r&  r   r  r  r  rq  r+  r  r  )r  r-   r  r   r  r  jfuncais           r   test_take_along_axisz$TestNPFunctions.test_take_along_axis	  s   IbMM!!,// 
	7 	7 
	7 (Aq6333		!W 5 5 ) 1 1!W = =	? 	? 	?	 	 	 r16"" 	H 	HACFFEAA&&&B##EE!RLL%--22F2FGGGG	H 	Hr!   c                 :   t          j        d          }t          j        dt           j                  }d }dD ]`} ||          }|                    ||          } |||          }|                     ||           |                     |j        d           ad S )N)r#  r,  r   )r   r  r  r   c                 ,     t            fd            }|S )Nc                 0    t          j        | |          S r   r  r  s     r   r  zLTestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen.<locals>.impl)  r  r!   r  r  s   ` r   r  z>TestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen(  r  r!   )r   r[  )r#  r  r  )r   r  intprq  r  rh  rX  )r  r7   r  r  r  r  r  actuals           r   !test_take_along_axis_broadcastingz1TestNPFunctions.test_take_along_axis_broadcasting   s    
 gi  WYbg...	 	 	  	6 	6ACFFE}}S"--HU3^^F##Hf555V\95555	6 	6r!   c                 h
   t          j        d                              dd          }t          j        ddgt           j                  }t          j        dt           j                  }d }|                     t                    5 }  |d	          ||           d d d            n# 1 swxY w Y   |                     d
t          |j
                             |                     t                    5 }  |d          ||           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }  |d          ||           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }  |d           d|           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }  |d           |d           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }  |d           |t          j        ddg                     d d d            n# 1 swxY w Y   |                     dt          |j
                             t          d             }|                     t                    5 } |||d           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }  |d          |t          j        ddgt           j                             d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }  |d           ||           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }  |d          |t          j        dt           j                             d d d            n# 1 swxY w Y   |                     dt          |j
                             |                                  d S )Nr<  r  r,  r   r   r   r  c                 ,     t            fd            }|S )Nc                 0    t          j        | |          S r   r  r  s     r   r  zJTestNPFunctions.test_take_along_axis_exceptions.<locals>.gen.<locals>.impl?  r  r!   r  r  s   ` r   r  z<TestNPFunctions.test_take_along_axis_exceptions.<locals>.gen>  r  r!   r-   zaxis must be an integerrD  zaxis is out of boundsr+  z"arr" must be an arrayr  z"indices" must be an arrayr  r  z#indices array must contain integersc                 .    t          j        | ||          S r   r  r  s      r   not_literal_axiszITestNPFunctions.test_take_along_axis_exceptions.<locals>.not_literal_axis_  s    %aD111r!   zaxis must be a literal valuez'must have the same number of dimensionsr  zdimensions don't match)r   r  r&  r  r  r  r  r   r  r  r  r   r\  r  )r  arr2dindices_noner   r  r  r'  s          r   test_take_along_axis_exceptionsz/TestNPFunctions.test_take_along_axis_exceptions6  s   	!$$Q**xAbi888'&	222	 	 	 {++ 	%vCCHHUG$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%/V5E1F1FGGG{++ 	$vCCGGE7###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$-s63C/D/DEEE{++ 	#vCCFF5'"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#-s63C/D/DEEE{++ 	(vCCIIb,'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(.F4D0E0EFFF{++ 	 vCCIIeQ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 2C8H4I4IJJJ{++ 	3vCCIIeRXsCj11222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	31 !!	
 	
 	

 
	2 	2 
	2 {++ 	0vUGQ///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	04c&:J6K6KLLL{++ 	=vCCFF5"(Aq6;;;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=?&*++	- 	- 	- {++ 	$vCCIIeU###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$?&*++	- 	- 	- z** 	<fCCFF5"'&	:::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<.F4D0E0EFFF!!!!!s   B**B.1B.7DD D&FFFG77G;>G;I&&I*-I*3*K))K-0K-M  M$'M$-6O//O36O3<QQ"%Q"+4S++S/2S/c                    t           j        dddt          t           j         t           j                  t          t           j        t           j                  t          j        dgt
                    t          j        t          t           j         t           j                  t          dt           j                  t          t           j        d          t          t           j        t           j                   g          t          j        g d          t          j        g d          t          j        g dg dg          t          j        dt           j        d	g          t          j        dt           j        d	gt           j        d
dgg          t          j        t           j         t           j        t           j        g          t          j        t           j         t           j        t           j        gt           j                  g}ddg}t          }t          t                    }t          ||          D ]5\  }} |||          } |||          }| 
                    ||           6d S )Nr   r  r{  r   )rO  r  皙?r"  )r,  r  rI  rO  r,  r  rI  r  r  )r  )r   r  complexr  r  rd  r  r  r   r   r  )	r  r8   nansr  r  valuer  r  r  s	            r   test_nan_to_numzTestNPFunctions.test_nan_to_numx  s    FRVGRV$$BFBF##HaS$$$Hgrvgrv..260B0Bbfa(('"&26'*B*BD E EH___%%HYYYHooo788Hc263'((HsBFC(263*<=>>Hrvgrvrv.//Hrvgrvrv.bjAAA!
$ RyZ  !&$// 	3 	3JE3ve---H%3'''C##Hc2222	3 	3r!   c                    t          t                    }t          j        ddt          j        g          }d} ||d|           |                     |d         |           t          j        ddt          t          j        t          j                  g          } ||d|           |                     |d         d           d S )NrO  r,  r  Fr  rW  r{  )r   r  r   r  r  r  r-  )r  r  r   r  	x_complexs        r   test_nan_to_num_copy_falsez*TestNPFunctions.test_nan_to_num_copy_false  s    Z  Hc3'((ae****"x000Hc3(?(?@AA	ie2222	"x88888r!   c                     t          t                    }|                                 5 } |d           d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )Ninvalid_inputz4The first argument must be a scalar or an array-like)r   r  rT  r  r  r  r  s      r    test_nan_to_num_invalid_argumentz0TestNPFunctions.test_nan_to_num_invalid_argument  s    Z  ##%% 	#E/"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#L&*++	- 	- 	- 	- 	-s   AAAr   r  )r7  r8  r9  __doc__r  no_pyobj_flagsr  r  r  r  r  r  r  r)  r-  r1  r6  r>  r@  rH  rK  rR  rU  rY  r]  rj  rx  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;  rA  rI  rL  staticmethodrG  r_  rd  ri  rn  rq  rt  rx  rz  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(  r8  r<  rA  rC  r   rF  rZ  r]  r_  rh  rj  rn  rq  rt  rv  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  unittestskipr  r  r  r  r  r)  r.  r0  r<  r>  r@  rB  rD  rR  rW  r'  r_  rd  rg  rj  rt  rw  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r"  r*  r0  r3  r6  __classcell__)r  s   @r   r  r    sc        - - - - -
 :H#'&+T.C .C .C .C`7) 7) 7)r	" 	" 	"68 68 68p  . %! %! %! %!N- - - 	" 	" 	"3 3 34	
 	
 	
3 3 3.3 3 3$3 3 3$" " "B3 3 3<!" !" !"F	 	 	  7 7 7" " "*/ / /.7 7 7@7 7 7&7 7 7(D? D? D?L1 1 1  3 3 3" " "	7 	7 	7- - -&
7 
7 
7- - -&U U Un%# %# %#N! ! !F6 6 6:1 1 1L L L < < <0 0 0; ; ;@ @ @ @
3! 3! 3!j! ! !F    .  ,%# %# %#N  
I 
I 
II I I" ' ' \'>	I 	I 	I	4 	4 	4
 
 

 
 

 
 

 
 
8 8 8< < <I I I$I I I I4 4 45 5 5@ @ @P P P4 4 45 5 5@ @ @P P PQ Q Q9 9 9E E E0H H H0  *  *, , ,(, , ,(          > > >> > >  &  &cA cA cAJeD eD eDN	= 	= 	=	@ 	@ 	@ K  K  KD"Q "Q "QH     D$ $ $LC C CF F F P P ZP4"0 "0 "0H = = Z= = = Z=   Z$   Z; ; ;z 	 	 Z	   Z 
 
 Z
 /- /- Z/-b# # #<' ' '- - -*? ? ?- - -.? ? ?K K K(P P P6- - -P P P6@ @ @8- - -(3 3 37 7 7F F F089 89 89t9 9 9"- - -- - - 7 7 74+ + +@. @. @.D& & &P! ! !F9! 9! 9!v X]122  32,# ,# ,#\/ / /2+D +D +DZS6 S6 S6j>: >: >:@9 9 929 9 963 3 37 7 7@ @ @	5 	5 	5< < <b- b- b-HL L L+7 +7 +7Z/A /A /AbF F F6C; C; C;J  &'B 'B 'BR
< 
< 
<3 3 3 3 3 3<L< L< L<\3 3 32() () ()TI I I>C8 C8 C8J8, 8, 8,t1J 1J 1Jf5; 5; 5;n,1 ,1 ,1\13 13 13f?
 ?
 ?
B,3 ,3 ,3\#
 #
 #
J"3 "3 "3H0
 0
 0
d*3 *3 *3XM M M2; ; ; #- #- #-JH H H.6 6 6,@" @" @"D3 3 3>9 9 9- - - - - - -r!   r  c                       e Zd ZdZd Zd Z ej        edk    d          d             Z	d Z
d Z ej        d	ecxk    odk     nc d
          ej        d                         ZdS )TestNPMachineParametersz0
def foo():
    ty = np.%s
    return np.%s(ty)
c                     |} t          d          |          } || } || }|D ]4}|                     t          ||          t          ||                     5d S r  )r   r  getattr)	r  r  attrsre   r  r  r  r  attrs	            r   r  zTestNPMachineParameters.check  s    "T"""6**64=eTl  	8 	8D##GHd$;$;$+C$6$68 8 8 8	8 	8r!   c                     |j         }|j         }| j        ||fz  }t          t          |dd                     t	                      d         S )Nz<string>execr  )r7  templateevalr  locals)r  basefunctytystrbasestrfuncstrs         r   create_harcoded_variantz/TestNPMachineParameters.create_harcoded_variant  sL     #-5'"22WWj&11222xxr!   )r   rN  zNumPy < 1.24 requiredc                 @    d}|                      t          |           d S )N)ibetaitmachepr  negepepsnegiexpminexpxminmaxexpxmaxirndngrdepsilontinyhuge	precision
resolution)r  rj   )r  rA  s     r   test_MachArz#TestNPMachineParameters.test_MachAr  s&    H 	

65!!!!!r!   c                     t           j        t           j        t           j        t           j        g}d}|D ]]}|                     t          | |d                     |                     t           j        |          }|                     ||           ^|                     t                    5 } t          d          t                    } |d           d d d            n# 1 swxY w Y   d}|                     |t          |j                             |                                 5   t          d          t                    } |t          j        d                     d d d            d S # 1 swxY w Y   d S )N)r  rS  rT  rQ  r  rW  rR  nexpnmantr^  r_  r\  bitsr   Tr  rY  z(Unknown attribute 'machar' of type finfor;  )r   r  r  r  r  r  r   rM  r  r   r   r   r  r  r  rT  r  )r  r
   rA  rI  hc_funcr  r  r  s           r   
test_finfoz"TestNPMachineParameters.test_finfo  s   RZr}EN 	' 	'BJJueRRUU+++2228R@@GJJw&&&& {++ 	v&C&&&|44EE"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 9c3v/00111 ##%% 	 	&C&&&u--EE"(1++	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   +*C!!C%(C%*<E33E7:E7c                 N   t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        g}d}|D ]]}| 	                    t          | |d                     |                     t           j
        |          }| 	                    ||           ^|                                 5   t          d          t                    } |t          j        d                     d d d            d S # 1 swxY w Y   d S )N)r   r  rd  r   Tr  r;  )r   r  re  r  r  r  uint16r  r  r  r   rM  rT  r   r  )r  r
   rA  rI  re  r  s         r   
test_iinfoz"TestNPMachineParameters.test_iinfo  s5   "(BHbh")BI'' 	' 	'BJJueRRUU+++2228R@@GJJw&&&& ##%% 	! 	!&C&&&u--EE"*Q--   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   <DD!D)r      zNeeds NumPy >= 1.22, < 1.24c                 h   d}t          j        d          5 }t          j        d|t                     t	          d           } |             d d d            n# 1 swxY w Y   |                     t          |          d           |                     dt          |d	                              d S )
Nz(`np.MachAr` is deprecated \(NumPy 1.22\)T)recordalways)messagecategoryc                  2    t          j                    j        S r   )r   ri   r  rz  r!   r   <lambda>zJTestNPMachineParameters.test_np_MachAr_deprecation_np122.<locals>.<lambda>  s    bikko r!   r   z`np.MachAr` is deprecatedr   )	warningscatch_warningsfilterwarningsr   r   rh  r  r  r  )r  r  rO   fs       r    test_np_MachAr_deprecation_np122z8TestNPMachineParameters.test_np_MachAr_deprecation_np122  s     :$D111 	Q#Hc-DG G G G--..AACCC		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Q###13qt99=====s   7AA"AN)r7  r8  r9  rE  r  rM  r:  skipIfr   r`  rf  ri  
skipUnlessr   run_test_in_subprocessrv  rz  r!   r   r>  r>    s        H
8 
8 
8   X_]g-/FGG" " HG"  *! ! ! XM;;;;G;;;;68 8$> > %$8 8> > >r!   r>  c                       e Zd Zd ZdS )TestRegistryImportsc                     t          d          }t          |          \  }}|                     d|                                           |                     d|                                           d S )Nz
            import numba
            import numpy as np
            @numba.njit
            def foo():
                np.array([1 for _ in range(1)])
            foo()
            print("OK")
        s   OKr!   )r   r   r  strip)r  coderesulterrors       r   test_unsafe_import_in_registryz2TestRegistryImports.test_unsafe_import_in_registry  sm         *$//%000#u{{}}-----r!   N)r7  r8  r9  r  rz  r!   r   r{  r{    s#        . . . . .r!   r{  __main__)Nr   r   )r   r   F)r   r  r  )r   N)NF)NTFN)NT)NN)Tr  )r  r  r  	functoolsr   r   rr  textwrapr   numpyr   numba.core.compilerr   ra  r   r   r	   
numba.corer
   numba.typedr   r   numba.np.numpy_supportr   numba.core.errorsr   r   numba.core.configr   numba.core.utilsr   numba.np.extensionsr   numba.tests.supportr   r   r   r   r   r:  r8  nrtr   r%   r)   r+   r1   r6   r:   r<   rB   rE   rJ   rP   rS   rV   r^   ra   rc   rg   rj   rl   ro   rr   rt   rw   ry   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&  r(  r*  r1  r4  r9  r<  r?  rC  rE  rM  rO  rV  rX  r\  r_  rb  re  ri  rl  rn  rp  rr  ru  rx  r|  r~  r  r  r>  r{  r7  mainrz  r!   r   <module>r     s                                % % % % % % # # # # # # # # # #       " " " " " " " " 0 0 0 0 0 0 B B B B B B B B ' ' ' ' ' ' ( ( ( ( ( ( ' ' ' ' ' '@ @ @ @ @ @ @ @ @ @ @ @ @ @                   - - -, , ,        % % %( ( ( (! ! !. . ./ / /                      3 3 3 3      " " "      $ $ $- - - -     1 1 1 1+ + + +                      ! ! ! !# # # #$ $ $ $% % %( ( ( (       ! ! ! !# # # #$ $ $ $% % %( ( ( (' ' ' '     # # #, , , ,% % % %- - - -    & & & j ' ' ' '  & & &        4 4 4 45 5 5 5     ! ! !) ) )< < < <+ + +                    * * * *  " " "0 0 0 0K- K- K- K- K-ox K- K- K-DX[> [> [> [> [>h [> [> [>|. . . . .( . . .( zHMOOOOO r!   