
    Ph2                       d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	m
c mZ d dlmc mZ d dlm
c mZ d dlm
c mZ d dlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z& ej                  jN                  jP                  jS                         D  cg c]  }  e*| ejV                        r|  c} Z,e,D cg c]  }d|jZ                  v s| c}Z. G d d      Z/ G d	 d
      Z0d Z1 G d d      Z2ejf                  ji                  d e5e      D cg c]%  } e* e6e|      ejV                        r	 e6e|      ' c}      d        Z7ejf                  ji                  d e5e      D cg c]%  } e* e6e|      ejV                        r	 e6e|      ' c}       ejp                         d               Z9ejf                  ji                  dejt                  ejv                  g      d        Z<ejf                  j{                  e d      d        Z>ejf                  ji                  dd  e?ej                  dz        g      d        ZAejf                  j{                  e!d      ejf                  ji                  dd  e?ej                  dz        g      d               ZBd ZCejf                  j{                  e d      ejf                  ji                  dd ej                  dz   e?dej                  z        g      d               ZDd ZEejf                  j{                  e!d      ejf                  ji                  dej                  j                  ej                  j                   ej                  d  d!"       ej                  d# d$"      g      d%               ZId& ZJejf                  ji                  d'ej                  d(         d)        ZLejf                  ji                  d'ej                  d(         ejf                  ji                  d*d+d,g      d-               ZM G d. d/      ZNyc c} w c c}w c c}w c c}w )0    N)param)assert_assert_equalassert_raisesassert_array_equalassert_almost_equalassert_array_almost_equalassert_no_warningsassert_allcloseHAS_REFCOUNTsuppress_warningsIS_WASMIS_PYPY)requires_memory)picklezO->Oc                   $    e Zd Zd Zd Zd Zd Zy)TestUfuncKwargsc                 0   t        t        t        j                  ddd       t        t        t        j                  ddt               t        t        t        j                  dddg       t        t        t        j                  ddd        t        t        t        j                  ddd	
       t        t        t        j                  ddd	       t        t        t        j                  ddd       t        t        t        j                  dddg       y )N      safe)castingx)dtypex   )extobjx)outxii->i)sigx)
signaturexF)subokxT)wherexr   	TypeErrornpaddintselfs    fC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\numpy/core/tests/test_ufunc.pytest_kwarg_exactz TestUfuncKwargs.test_kwarg_exact   s    iA?iAc:iAv>iAD9iAG<iA'BiAe<iAtf=    c                 J    t        t        t        j                  dddd       y )Nr   r   r   )sig	signaturer   r#   r$   r%   r'   s    r)   test_sig_signaturez"TestUfuncKwargs.test_sig_signature'   s    iA7 '	)r+   c                     t        t        t        j                  dddt               t        t        t        j                  dddt               y )Nr   r   r   )r-   dtype)r.   r2   r"   r'   s    r)   test_sig_dtypezTestUfuncKwargs.test_sig_dtype+   s4    iA7	!iA	!r+   c                 L    t        t        t        j                  dddgd       y )Nr   r   r   T)extobjparrotr/   r'   s    r)   test_extobj_refcountz$TestUfuncKwargs.test_extobj_refcount1   s    iAtfTJr+   N)__name__
__module____qualname__r*   r0   r3   r7    r+   r)   r   r      s    >)!Kr+   r   c            	          e Zd ZdZej
                  ej
                  fej
                  ej                  fej                  ej                  fej                  ej                  fej                  ej                  fej                  ej                  fej                  ej                  fej                  ej                  fgZej                  j                  de      ej                  ddfd       Zd Zej                  j                  de      eddfd       Z G d d	      Zd
 ZefdZd ZefdZefdZd Zej                  j                  de      d        Zy)TestUfuncGenericLoopsab  Test generic loops.

    The loops to be tested are:

        PyUFunc_ff_f_As_dd_d
        PyUFunc_ff_f
        PyUFunc_dd_d
        PyUFunc_gg_g
        PyUFunc_FF_F_As_DD_D
        PyUFunc_DD_D
        PyUFunc_FF_F
        PyUFunc_GG_G
        PyUFunc_OO_O
        PyUFunc_OO_O_method
        PyUFunc_f_f_As_d_d
        PyUFunc_d_d
        PyUFunc_f_f
        PyUFunc_g_g
        PyUFunc_F_F_As_D_D
        PyUFunc_F_F
        PyUFunc_D_D
        PyUFunc_G_G
        PyUFunc_O_O
        PyUFunc_O_O_method
        PyUFunc_On_Om

    Where:

        f -- float
        d -- double
        g -- long double
        F -- complex float
        D -- complex double
        G -- complex long double
        O -- python object

    It is difficult to assure that each of these loops is entered from the
    Python level as the special cased loops are a moving target and the
    corresponding types are architecture dependent. We probably need to
    define C level testing ufuncs to get at them. For the time being, I've
    just looked at the signatures registered in the build directory to find
    relevant functions.

    zinput_dtype,output_dtyper   r   c                     t        j                  d ||      |      } ||      d d d   }t        ||       t        |j                  |       y N
   r2   r   r$   fullr   r   r2   r(   input_dtypeoutput_dtypefxyxsyss           r)   test_unary_PyUFuncz(TestUfuncGenericLoops.test_unary_PyUFunci   sA    WWRQ|<rU3Q3ZARXX|,r+   c                     | |z  S Nr;   )rH   rI   s     r)   f2zTestUfuncGenericLoops.f2p   s    !tr+   c                     t        j                  d ||      |      } |||      d d d   }t        ||       t        |j                  |       y r?   rB   rD   s           r)   test_binary_PyUFuncz)TestUfuncGenericLoops.test_binary_PyUFuncs   sC    WWRQ|<r2Yss^ARXX|,r+   c                       e Zd Zd Zd Zy)TestUfuncGenericLoops.fooc                 ,    t        j                  d      S Nr   r$   bool_r'   s    r)   	conjugatez#TestUfuncGenericLoops.foo.conjugate|       88A;r+   c                 ,    t        j                  d      S rU   rV   r(   objs     r)   logical_xorz%TestUfuncGenericLoops.foo.logical_xor   rY   r+   N)r8   r9   r:   rX   r]   r;   r+   r)   foorS   {   s    		r+   r^   c                     t        j                  dt              }t        t        j                  t        j
                  |      dk(               y )Nr@   rA   r   )r$   onesobjectr   allabsr(   rH   s     r)   test_unary_PyUFunc_O_Oz,TestUfuncGenericLoops.test_unary_PyUFunc_O_O   s/    GGBf%rvvayA~&'r+   c                     t        j                  d |       t              }t        t        j                  t        j
                  |      dk(               y )Nr@   rA   T)r$   rC   ra   r   rb   rX   r(   r^   rH   s      r)   $test_unary_PyUFunc_O_O_method_simplez:TestUfuncGenericLoops.test_unary_PyUFunc_O_O_method_simple   s4    GGBV,r||A$./0r+   c                     t        j                  dt              }t        t        j                  t        j
                  ||      dk(               y r?   )r$   r`   ra   r   rb   r%   rd   s     r)   test_binary_PyUFunc_OO_Oz.TestUfuncGenericLoops.test_binary_PyUFunc_OO_O   s2    GGBf%rvva|q()*r+   c                     t        j                  d |       t              }t        t        j                  t        j
                  ||                   y )Nr@   rA   r$   rC   ra   r   rb   r]   rg   s      r)   test_binary_PyUFunc_OO_O_methodz5TestUfuncGenericLoops.test_binary_PyUFunc_OO_O_method   s2    GGBV,r~~a+,-r+   c                     t        j                  d |       t              }t        t        j                  t        j
                  ||                   y )N)r@   r      rA   rl   rg   s      r)    test_binary_PyUFunc_On_Om_methodz6TestUfuncGenericLoops.test_binary_PyUFunc_On_Om_method   s2    GGJV4r~~a+,-r+   c                    t        j                  ddgd      }t        |d   t              sJ t        j                  |      }|j
                  t        j
                  d      k(  sJ t        |t        j                  ddgd             y )Ny      ?       @y      @      OrA   r   y      ?       y      @      @)r$   array
isinstancecomplexrX   r2   r   r(   arrress      r)   test_python_complex_conjugatez3TestUfuncGenericLoops.test_python_complex_conjugate   sk    hhd|3/#a&'***ll3yyBHHSM)))3$S ABr+   ufuncc                 J   t        j                  t         j                  dz         G fddt         j                        }t        j                  t         j                        }t        j                   |      d      }t        j                  d      5  	  ||      } ||      }t        |j                  d      |       ddd       y# t        $ r<}t        t        |            5   ||       ddd       n# 1 sw Y   nxY wY d}~Id}~ww xY w# 1 sw Y   yxY w)	z9Compare the result of the object loop with non-object one   c                   "     e Zd Z fdZ xZS )ITestUfuncGenericLoops.test_unary_PyUFunc_O_O_method_full.<locals>.MyFloatc                 P    	 t         |         S # t        $ r	 fdcY S w xY w)Nc                  X     t        t        j                  j                               S rN   )getattrr$   coreumath)attrvals   r)   <lambda>zgTestUfuncGenericLoops.test_unary_PyUFunc_O_O_method_full.<locals>.MyFloat.__getattr__.<locals>.<lambda>   s    #?7277==$#?#Dr+   )super__getattr__AttributeError)r(   r   	__class__r   s    `r)   r   zUTestUfuncGenericLoops.test_unary_PyUFunc_O_O_method_full.<locals>.MyFloat.__getattr__   s0    E 7.t44% EDDEs    %%)r8   r9   r:   r   __classcell__)r   r   s   @r)   MyFloatr~      s    E Er+   r   rA   rr   raiserb   N)
r$   float64pirs   errstater	   astype	Exceptionr   type)	r(   rz   r   num_arrobj_arrres_numres_objexcr   s	           @r)   "test_unary_PyUFunc_O_O_method_fullz8TestUfuncGenericLoops.test_unary_PyUFunc_O_O_method_full   s     jjq!	Ebjj 	E ((3bjj1((73<s3[[W%H.
  .)'..*=wG &%  #"49-'N .--# &%sN   DC%#D	DD.	D 7	D D	DDDDD"N)r8   r9   r:   __doc__r$   singledoublecsinglecdouble
longdoubleclongdouble	np_dtypespytestmarkparametrizeexprL   rO   rQ   r^   re   rh   rj   rm   rp   ry   UNARY_OBJECT_UFUNCSr   r;   r+   r)   r=   r=   6   sS   +Z 
BIIBII 6	RZZ 2::rzz":	BII >	RZZ 2>>2>>"B	DI [[7C>@ffQ - D- [[7C?AQ! - D- ( 8; 1+ 36 . 47 .C [[W&9:H ;Hr+   r=   c                       y rN   r;   r;   r+   r)   _pickleable_module_globalr      s    r+   c                      e Zd Zd Zd Zej                  j                  ed      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 ej                  jC                  dd d g      d         Z"ej                  jC                  d e#d! d"#       e#d$ d%#      g      d&        Z"ej                  jC                  d'g d(      d)        Z$d* Z%d+ Z&d, Z'd- Z(ej                  jC                  d.e)jT                  e)jV                  g      d/        Z,d0 Z-d1 Z.ej                  j                  e/d2      d3        Z0d4 Z1d5 Z2d6 Z3d7 Z4d8 Z5d9 Z6ej                  jC                  d:d;gdg e)jn                  d<      fd=dg e)jn                  d=      f e)jp                  d>       e)jn                  d?      fgg d@A      dB        Z9dC Z:dD Z;dE Z<dF Z=dG Z>dH Z?dI Z@dJ ZAdK ZBdL ZCdM ZDdN ZEdO ZFdP ZGdQ ZHdR ZIdS ZJdT ZKdU ZLdV ZMdW ZNdX ZOdY ZPdZ ZQd[ ZRd\ ZSd] ZTd^ ZUd_ ZVd` ZWda ZXdb ZY eZdc      dd        Z[de Z\df Z]dg Z^dh Z_di Z`dj Zadk Zbdl Zcej                  jC                  dmdn      ej                  jC                  do e)j                  g dp       e)j                  dqgdrgdqgg       e)j                  g dsg dtg dpg      f      du               Zeej                  jC                  dvdw e)j                  g dx      fd=g dyfdzf      ej                  jC                  d{e)j                   d|f      d}               Zgd~ Zhd Zid Zjd Zkd Zld Zmd Znd Zod Zpd Zqej                  jC                  d e)j                  des       e)j                  detj                        f      d        Zve)jT                  e)j                  e)j                  e)j                  e)j                  e)j                  e)j                  e)j                  gZ~ej                  jC                  de)j                  d   e)j                  d   z         ej                  jC                  d.e~      d               Zej                  jC                  de)j                  d         ej                  jC                  d.e)jT                  e)j                  e)j                  g      d               Zd Zd Zd Zd Zej                  jC                  d e)jp                  d=       e)jp                  d<       e)j                  d      dg      d        Zd Zd Zd Zd Zd Zej                  jC                  d"e)j                  d   e)j                  d   z         ej                  jC                  d.e)jT                  e)j                  e)j                  e)j                  e)j                  g      d               Zd Zd Zd Zd Zd Zd Zd Zd Zej                  jC                  d.e)j.                  e)j0                  g      ej                  jC                  d%ddefeddfdedfg      d               Zej                  jC                  d.e)j.                  e)j0                  e)j6                  g      ej                  jC                  d%edefedefdeefg      d               Zej                  jC                  d.e)j.                  e)j0                  e)j6                  g      d        Zej                  jC                  d.e)j.                  e)j0                  e)j6                  g      d        Zej                  jC                  d.e)j.                  e)j0                  e)j6                  g      d        Zd Zd Zd Zd Zej                  jC                  ddqdrg      d        Zej                  jC                  dg d      ej                  jC                  ddqdrg      ej                  jC                  de)jT                  jL                  e)j                  jL                  g      d                      Zd Zd Zd Zd Zej                  jC                  d e)jX                  d       e)jZ                  d      g      d        Zej                  jC                  d e)jX                  d       e)jZ                  d      g      d        Zej                  jC                  d e)jX                  d       e)jZ                  d      g      d        Zy)	TestUfuncc           	         t        dt        j                  dz         D ]  }t        t        j                  t        j
                  t        j                  |            t        j                  u        t        j                  t        j
                  t        j                  |            }t        |t        j                  u         y )Nr   r   )protocol)
ranger   HIGHEST_PROTOCOLr   loadsdumpsr$   sin_rational_teststest_add)r(   protorx   s      r)   test_picklezTestUfunc.test_pickle   s    1f559:EFLLbff7<"> ?BD&&I J
 ,,v||O,D,D5: < =CC?3334 ;r+   c                 d    d}t        t        j                  |      t        j                  u        y )NsM   cnumpy.core
_ufunc_reconstruct
p0
(S'numpy.core.umath'
p1
S'cos'
p2
tp3
Rp4
.)r   r   r   r$   cos)r(   astrings     r)   test_pickle_withstringz TestUfunc.test_pickle_withstring   s$    HW%/0r+   z 'is' check does not work on PyPyreasonc                     t         j                  t        _        t	        j
                  t	        j                  t        j                              }|t         j                  u sJ y rN   )umt_pickleable_module_global_ufuncr   rz   r   r   r   r[   s     r)   test_pickle_name_is_qualnamez&TestUfunc.test_pickle_name_is_qualname   sE     +.*M*M!'ll6<<(A(G(GHIc99999r+   c                 `   d}t        j                  |      }t        j                  t        t	        t        j                  |dz
        t        j                  |dz
        dz                     j                         }t        t         j                  j                  ||      d d d   g d       y )N   r   )r   ro         )	r$   arangers   listzipravelr   r%   reduceat)r(   LrH   idxs       r)   test_reduceat_shifting_sumz$TestUfunc.test_reduceat_shifting_sum   sx    IIaLhhtC		!a% 0"))AE2BQ2FGHIOOQ266??1c23Q37Fr+   c                      y)aL  Try to check presence and results of all ufuncs.

        The list of ufuncs comes from generate_umath.py and is as follows:

        =====  ====  =============  ===============  ========================
        done   args   function        types                notes
        =====  ====  =============  ===============  ========================
        n      1     conjugate      nums + O
        n      1     absolute       nums + O         complex -> real
        n      1     negative       nums + O
        n      1     sign           nums + O         -> int
        n      1     invert         bool + ints + O  flts raise an error
        n      1     degrees        real + M         cmplx raise an error
        n      1     radians        real + M         cmplx raise an error
        n      1     arccos         flts + M
        n      1     arccosh        flts + M
        n      1     arcsin         flts + M
        n      1     arcsinh        flts + M
        n      1     arctan         flts + M
        n      1     arctanh        flts + M
        n      1     cos            flts + M
        n      1     sin            flts + M
        n      1     tan            flts + M
        n      1     cosh           flts + M
        n      1     sinh           flts + M
        n      1     tanh           flts + M
        n      1     exp            flts + M
        n      1     expm1          flts + M
        n      1     log            flts + M
        n      1     log10          flts + M
        n      1     log1p          flts + M
        n      1     sqrt           flts + M         real x < 0 raises error
        n      1     ceil           real + M
        n      1     trunc          real + M
        n      1     floor          real + M
        n      1     fabs           real + M
        n      1     rint           flts + M
        n      1     isnan          flts             -> bool
        n      1     isinf          flts             -> bool
        n      1     isfinite       flts             -> bool
        n      1     signbit        real             -> bool
        n      1     modf           real             -> (frac, int)
        n      1     logical_not    bool + nums + M  -> bool
        n      2     left_shift     ints + O         flts raise an error
        n      2     right_shift    ints + O         flts raise an error
        n      2     add            bool + nums + O  boolean + is ||
        n      2     subtract       bool + nums + O  boolean - is ^
        n      2     multiply       bool + nums + O  boolean * is &
        n      2     divide         nums + O
        n      2     floor_divide   nums + O
        n      2     true_divide    nums + O         bBhH -> f, iIlLqQ -> d
        n      2     fmod           nums + M
        n      2     power          nums + O
        n      2     greater        bool + nums + O  -> bool
        n      2     greater_equal  bool + nums + O  -> bool
        n      2     less           bool + nums + O  -> bool
        n      2     less_equal     bool + nums + O  -> bool
        n      2     equal          bool + nums + O  -> bool
        n      2     not_equal      bool + nums + O  -> bool
        n      2     logical_and    bool + nums + M  -> bool
        n      2     logical_or     bool + nums + M  -> bool
        n      2     logical_xor    bool + nums + M  -> bool
        n      2     maximum        bool + nums + O
        n      2     minimum        bool + nums + O
        n      2     bitwise_and    bool + ints + O  flts raise an error
        n      2     bitwise_or     bool + ints + O  flts raise an error
        n      2     bitwise_xor    bool + ints + O  flts raise an error
        n      2     arctan2        real + M
        n      2     remainder      ints + real + O
        n      2     hypot          real + M
        =====  ====  =============  ===============  ========================

        Types other than those listed will be accepted, but they are cast to
        the smallest compatible type for which the function is defined. The
        casting rules are:

        bool -> int8 -> float32
        ints -> double

        Nr;   r'   s    r)   test_all_ufunczTestUfunc.test_all_ufunc   s    b 	r+   r   r|   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        || j                  f       t        |d       y )Nr   r   (i),(i)->())r   r   r   r   r   r   test_signaturer   size_inferredr(   enablednum_dimsixsflagssizess         r)   test_signature0zTestUfunc.test_signature04  s_    /2/A/Aq-0!,3uWa X{+S&!UT//12UE"r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        |d       t        |d       y )Nr   r   z	(),()->()r   r   r   r   r;   r   r   r   r   s         r)   test_signature1zTestUfunc.test_signature1>  sV    /2/A/Aq+0,3uWa X{+S"UBUBr+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        || j                  fdz         t        |d       y )Nr   r   z(i1,i2),(J_1)->(_kAB)r   r   r   )r   r   r   ro   r|   r   r   r   r   r   r   s         r)   test_signature2zTestUfunc.test_signature2H  sf    /2/A/Aq)0+,3uWa Xy)S,'UT//1!34U,-r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        || j                  fdz         t        |d       y )Nr   r   z(i1, i12),   (J_1)->(i12, i2)r   r   r   )r   r   r   r   ro   r|   r   r   r   s         r)   test_signature3zTestUfunc.test_signature3R  sf    /2/A/Aq103,3uWa Xy)S/*UT//1!34U,-r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        || j                  fdz         t        |d       y )Nr   r   z(n,k),(k,m)->(n,m)r   r   r   r   r   r   r   r   r   ro   r   r   r   r   r   s         r)   test_signature4zTestUfunc.test_signature4[  sf    /2/A/Aq&0(,3uWa Xy)S,-UT//1!34UL)r+   c                 ,   t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        || j                  | j                  z  | j                  | j                  | j                  z  f       t        |d       y )Nr   r   z(n?,k),(k,m?)->(n?,m?)r   r   r   )r   r   r   r   
can_ignorer   s         r)   test_signature5zTestUfunc.test_signature5e  s    /2/A/Aq*0,,3uWa Xy)S,-UT//$//A!//!//$//AC 	D 	UL)r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        |d       t        |d       y )Nr   z(3)->()r   r   r   ro   r   r   s         r)   test_signature6zTestUfunc.test_signature6q  sV    /2/A/Aq)0,3uWa Xv&S$UD!UD!r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        |d| j                  df       t        |d       y )Nro   r   z(3),(03,3),(n)->(9)r   r   r   r   r   r   r   r   r   r   ro   r   	   r   r   s         r)   test_signature7zTestUfunc.test_signature7z  sd    /2/A/Aq'0),3uWa X|,S/*UQ 2 2A67UJ'r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        || j                  | j                  df       t        |d       y )Nro   r   z(3?),(3?,3?),(n)->(9)r   r   r   r   r   r   r   r   r   r   s         r)   test_signature8zTestUfunc.test_signature8  sh    /2/A/Aq)0+,3uWa X|,S/*UT__d.@.@!DEUJ'r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        |d       t        |d       y )Nr   z(  3)  -> ( )r   r   r   r   r   s         r)   test_signature9zTestUfunc.test_signature9  sV    /2/A/Aq/0#,3uWa Xv&S$UD!UD!r+   c                     t        j                  ddd      \  }}}}}t        |d       t        |d       t        |d       t        || j                  | j                  df       t        |d       y )Nro   r   z ( 3? ) , (3? ,  3?) ,(n )-> ( 9)r   r   r   r   r   r   s         r)   test_signature10zTestUfunc.test_signature10  sh    /2/A/Aq406,3uWa X|,S/*UT__d.@.@!DEUJ'r+   c                 z    t        t              5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nr   r   z((i)),(i)->()r   
ValueErrorr   r   r'   s    r)   (test_signature_failure_extra_parenthesisz2TestUfunc.test_signature_failure_extra_parenthesis  s(    :&q!_5 '&&   1:c                 z    t        t              5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nr   r   z(i),)i(->()r  r'   s    r)   .test_signature_failure_mismatching_parenthesisz8TestUfunc.test_signature_failure_mismatching_parenthesis  (    :&q!]3 '&&r  c                 z    t        t              5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nr   r   z(i),->()r  r'   s    r)   2test_signature_failure_signature_missing_input_argz<TestUfunc.test_signature_failure_signature_missing_input_arg  s(    :&q!Z0 '&&r  c                 z    t        t              5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nr   r   r  r'   s    r)   3test_signature_failure_signature_missing_output_argz=TestUfunc.test_signature_failure_signature_missing_output_arg  r
  r  c                 L    t        t        j                  j                  d       y )Nr   )r   r   inner1dr.   r'   s    r)   test_get_signaturezTestUfunc.test_get_signature  s    S[[**M:r+   c           	         dt        j                  dd      z  }t        t        j                  |d      g d       t	        j
                  t              5  t        t        j                  |ddd      g d	       d d d        t        t        j                  |dd
d      g d	       t	        j
                  t              5  t        t        j                  |ddd      g d	       d d d        t        t        j                  |ddd      g d	       t        j                  dd      }t        j                  |d|       t        |g d       d|d d  t	        j
                  t              5  t        j                  |dd|d       d d d        t        |g d	       d|d d  t        j                  |dd
|d       t        |g d	       d|d d  t	        j
                  t              5  t        j                  |dd|d       d d d        t        |g d	       d|d d  t        j                  |dd|d       t        |g d	       y # 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   xY w# 1 sw Y   kxY w)N      ?ro   f8rA   )r  r         ?iunsafe)r-   castingr   r   r   r   )i4)r  r  r  r   outr   )r-   r  r  )r$   r   r   r%   r   warnsDeprecationWarningzerosr(   abs      r)   test_forced_sigzTestUfunc.test_forced_sig  s   		!4((RVVAs^]3\\,-3CBIN .RVVAsBIN\\,-3GXF"$ . 	RVVAs(:4<>?H	J HHT&
q#1Q&!\\,-FF1cs8< .Q	"!
q#78<Q	"!\\,-FF1cwAx@ .Q	"!
q#-1hGQ	"3 .- .- .- .-s0   &I&I0I%,I1II"%I.1I:c                    t        j                  dgdgd      }t        j                  dgdg      }t        ||       t        j                  dgdgd      }t        j                  dgdg      }t        ||       t	        j
                  t              5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nro   r|   NNNr-   rN   r.   )r$   r%   r   maximumr   raisesr#   )r(   res1res2s      r)   test_signature_all_Nonez!TestUfunc.test_signature_all_None  s     vvqcA3$67vvqcA34&zz1#s(:;zz1#s#4&]]9%FF1a7+ &%%s   B88Cc                     t        t        j                  t        j                              }t        j                  dd||d f       y )Nro   r|   r'  )r   r$   r2   r   r%   )r(   float_dtypes     r)   test_signature_dtype_typez#TestUfunc.test_signature_dtype_type  s2     288BJJ/0
q![$?@r+   	get_kwargc                 "    t        t              S NrA   dictrH   dts    r)   r   zTestUfunc.<lambda>  s    t!}r+   c                 (    t        t        d d f      S Nr'  r3  r5  s    r)   r   zTestUfunc.<lambda>  s    tq$o6r+   c                 b   t        j                  d      }t        j                  t        j                  |            }||usJ t        j
                  di  ||      j                  |k(  sJ t        j                  dd      }t        j
                  ||fi  |d      j                  dk(  sJ y )Nint64r   sm8m8[s]r   r   )r$   r2   r   r   r   r%   	timedelta)r(   r0  r:  int64_2tds        r)   &test_signature_dtype_instances_allowedz0TestUfunc.test_signature_dtype_instances_allowed  s     !,,v||E23G###vv1i01775@@@\\!S!vvb"0	$066'AAAr+   c                     t        |       S r2  r4  rH   s    r)   r   zTestUfunc.<lambda>  s    DqMr+   r2   idc                      t        | d d f      S r8  rD  rE  s    r)   r   zTestUfunc.<lambda>  s    DAtT?;r+   r.   c           
      2   d}t        j                  t        |      5  t        j                  di  |t        j
                  d      j                                d d d        t        j                  t        |      5  t        j                  di  |t        j
                  d             d d d        t        j                  t        |      5  t        j                  di  |d       d d d        y # 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   y xY w)Nz/The `dtype` and `signature` arguments to ufuncsmatchr:  zm8[ns])ro   r   )r   r)  r#   r$   r%   r2   newbyteorder)r(   r0  msgs      r)   rB  z0TestUfunc.test_signature_dtype_instances_allowed  s     @]]9C0FFG9RXXg%6%C%C%EFG 1]]9C0FF99RXXh%789 1]]9C0FF/9X./ 10	 100000s#   =C5>/DD5C>D
Dr  )r  	same_kindr   c                    t        j                  t        j                  d      t        j                  d      d      }|j                  dk(  sJ t        j                  t        j                  d      t        j                  d      d      }|j                  dk(  sJ t        j                  t              5  t        j                  dt        j                  d      d       d d d        t        j                  t              5  t        j                  dt        j                  d      d       d d d        y # 1 sw Y   WxY w# 1 sw Y   y xY w)N      ?r   drA   )NNrQ  r'  ro   )	r$   ldexpfloat32int_r2   r   r)  r#   uint64)r(   r  rx   s      r)   test_partial_signature_mismatchz)TestUfunc.test_partial_signature_mismatch  s     hhrzz"~rwwqz=yyChhrzz"~rwwqz=NOyyC ]]9%HHR1S1 &]]9%HHR11BC &% &%%%s   8,D:,E:EEc                 ,   t        j                  t              5  t        j                  t        j
                  d      t        j                  d      d       d d d        t        j                  t        j
                  d      t        j                  d             t        j                  t              5  t        j                  t        j
                  d      t        j                  d      d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   )erQ  Nr&  )r   r)  r#   r$   r%   float16rU  r   r'   s    r)   *test_partial_signature_mismatch_with_cachez4TestUfunc.test_partial_signature_mismatch_with_cache  s    ]]9%FF2::a="))A,4DE & 	rzz!}bjjm,]]9%FF2::a="))A,4DE &% &%
 &%s   ?C>6?D
>D
Dc                 j   t        j                  ddt         j                  d      }|dk(  sJ t        j                  ddd d t         j                  fd      }|dk(  sJ t        j                  t
              5  t        j                  ddt         j                         d d d        y # 1 sw Y   y xY w)Nr  gffffff@r  r2   r  r   )r.   r  rA   )r$   powerintpr   r)  r#   r(   rx   s     r)   +test_use_output_signature_for_all_argumentsz5TestUfunc.test_use_output_signature_for_all_arguments  s     hhsCrwwAaxxhhsCD$+@')axx]]9%HHS#RWW- &%%s   9'B))B2c                 R   t        j                  t        d      5  t        j                  ddd       d d d        t        j                  t
              5  t        j                  ddd       d d d        t        j                  t
              5  t        j                  ddd       d d d        t        j                  t
              5  t        j                  ddd	       d d d        t        j                  t
              5  t        j                  ddd
       d d d        t        j                  t              5  t        j                  ddd       d d d        y # 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   y xY w)Nz1the signature object to ufunc must be a string orrJ  ro   r|   g     ^@r'  z%^->#s   ii-izii>i)Nr  s   ->i)r   r)  r#   r$   r%   r  UnicodeDecodeErrorr'   s    r)   test_signature_errorszTestUfunc.test_signature_errors$  s   ]]9MOFF1a4(O ]]:&FF1a7+ ' ]]:&FF1a7+ ' ]]:&FF1a6* ' ]]:&FF1a<0 ' ]]-.FF1a>2 /.#O O '& '& '& '& /.sG   E E-E9
FF>F E*-E69FFFF&c                 6   t        j                  g dd      }t        j                  ||d       t         j                  j                  |d       t        j                  dd      }t        j
                  ||d       t        j                  ||d       y )N)z
2010-01-02z
1999-03-14z1833-03z>M8[D]rA   Mr@   r=  m)r$   rs   r(  reducer   r%   )r(   r!  rw   s      r)   test_forced_dtype_timesz!TestUfunc.test_forced_dtype_times9  sl     HH<HM


1as#


!3'ii'*
sCs#


33'r+   rz   c                    fd}t        j                  g dt         j                        }|j                  |j                  j                               } ||      } ||d      }t        ||       t        j                  t              5   ||d       ddd        ||d      }t        ||       t        j                  t              5   ||t         j                  d       ddd        ||t         j                  d	      } ||j                  t         j                              }t        ||       y# 1 sw Y   xY w# 1 sw Y   `xY w)
zBasic test for the safest casts, because ufuncs inner loops can
        indicate a cast-safety as well (which is normally always "no").
        c                 0     | fj                   z  i |S rN   )nin)rw   kwargsrz   s     r)   
call_ufuncz.TestUfunc.test_cast_safety.<locals>.call_ufuncI  s    3&599,777r+   )rP         @      @rA   nor  Nequivr\  r   )r$   rs   rS  r   r2   rL  r   r   r)  r#   r   )r(   rz   rm  rw   arr_bsexpectedrx   s    `     r)   test_cast_safetyzTestUfunc.test_cast_safetyD  s    
	8 hh|2::6CII2245c?d+8S)]]9%vt, & 18S) ]]9%vRZZA & rzz6Bcjj458S) &% &%s   D=E	=E	Ec           
      
   t        j                  d      }t        j                  d      }t        j                  d      }dD ]Y  }t        j                  |      }|j                  |      }|j                  |      }t	        j
                  || g|| g      D ]  \  }}	|dv rt        |      t        |	      z  }nt        |      t        |	      z  }t        j                  ||	      }
t        t        j                  |
      j                  d      }t        |
||       |dv r#t        |
j                  j                  d	k(         n,t        |
j                  j                  |j                  k(         dD ]9  }t        j                  |      }t        t         t         j                  ||	|
       ; dD ]  }t        j                  |      }|dv r#t        t         t         j                  ||	|
       @t        |      t        |	      z  }t        t        j                  |      j                  d      }t#               5 }|j%                  t&               t        j(                  t        j                  |      j*                        s*t        t        j                  |      j*                  d      }nd}d d d        t        j,                  dd      5  t        j                  ||	|
      }
d d d        t        j.                  |
      s|dk(  rZt        |
||       t        |
j                  j                  |j                  k(          dD ]H  }t        j                  |      }t        |      t        |	      z  }t        t        j                  |      j                  d      }t#               5 }|j%                  t&               t        j(                  t        j                  |      j*                        s*t        t        j                  |      j*                  d      }nd}d d d        t        j                  ||	|
      }
t        j.                  |
      st        |
||       t        |
j                  j                  |j                  k(         K  \ t        j0                  dt         j2                  
      }t        j                  ||      }
t        |
dk(         t        |
j                  j                  d	k(         t        j                  | |      }
t        |
dk(         t        |
j                  j                  d	k(         y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   JxY w)Nr@      r  bhilqBHILQefdgFDGFDGgV瞯<)rtol
bhilqBHILQr   rA   efdggwMh ignore)invalidoverrX  )rz  atolr;   rP          )r$   rs   r2   r   	itertoolsproductru   floattrue_dividemaxfinfo
resolutionr   r   namer   r#   r   filterUserWarningisnantinyr   isfiniter`   rW   )r(   r!  r"  tgttcr6  aabbrH   rI   rx   rz  tcoutdtoutsupr  s                   r)   test_true_dividezTestUfunc.test_true_dividec  s   HHRLHHRLhhsm%B"B"B"B "))2s)b2#Y?1 ;!!*WQZ/C(58+CnnQ*288C=33U;St4%CIINNi78CIINNbgg57 *EHHUOE!)R^^QO * $EHHUOEU{%iAUS#AhuQx/"288E?#=#=uE.0CJJ{3#%88BHHUO,@,@#A'*288E?+?+?'H'- 1  [[I"$..AU"CC J!{{3/ESL$'St$G		%** <=- $0 #EHHUOE!!*WQZ/Crxx995AD*,

;/!xx(<(<=#&rxx';';V#DD#)D - ..AU;C;;s+ #C4dCCIINNejj89 #e @ &T GGBbhh'nnQ"s
		)+,nnaR#s
		)+,O 10 JI -,s&   =A4U	U	0A4U,	UU),U6c                 P   t        j                  dt         j                        }t        |dz  j	                         |j
                  dz  z
  dd       t        j                  dt         j                        }t        |dz  j	                         |j
                  dz  z
  dd       y )N  rA         $@r   r|      )r$   r`   rS  r   sumsizer   r(   r!  s     r)   test_sum_stabilityzTestUfunc.test_sum_stability  sp    GGCrzz*QWMMOaffsl:AqAGGCrzz*QWMMOaffsl:ArBr+   fp errors don't work in wasmc                    t         t        j                  t        j                  t        j                  t        j
                  fD ]z  }dD ]
  }t        j                  d      5 }t        j                  dt                |||dz   z  dz        }t        j                  |       }t        t        |      d|z         t        j                  d|dz   |      }t        t        j                  |      |       t        t        |      d|z         t        t        j                  |d d d         |       t        t        |      d	|z         d d d         t        j                   d
|      }t        t        j                  |d d d         d       t        t        j                  |dd d         d       t        t        j                  |d d d	         d       t        t        j                  |dd d	         d       t        t        j                  |d d d         d       t        t        j                  |dd d         d       t        t        j                  |d d d         d       t        t        j                  |dd d         d       t        j                   d|      }||z  }t        |d       } y # 1 sw Y   xY w)Nr   r   r   r      r                     i  Trecordalwaysr   r   rA   r   ro   r  g     @o@g     d@r   rn  )r&   r$   rY  rS  r   r   warningscatch_warningssimplefilterRuntimeWarningr  r   lenr   r   r  r`   )r(   r6  vwr  overflowrQ  s          r)   test_sumzTestUfunc.test_sum  s   

BJJ

BMMJB' ,,D9Q))(NCQ!a%[1_-C#%;;s#33H QX6		!QU"5A'q	37 QX6'q2w= QX6 :9'$ 2&Aq1v5qAw6q1v5qAw6q2w6qRy 148q2w6qRy 148B'AFA2&? K :9s   $C)KKc           
         t         j                  t         j                  t         j                  fD ]5  }dD ]  } |||dz   z  dz         |||dz   z  dz  dz        z
  }t        j                  ||      }t        j
                  d|dz         |_        t        j
                  d|dz          |_        t        t        j                  |      |       t        t        j                  |d d d         |        t        j                  d|      dz   }t        t        j                  |d d d         d       t        t        j                  |dd d         d       t        t        j                  |d d d	         d
       t        t        j                  |dd d	         d
       t        t        j                  |d d d         d       t        t        j                  |dd d         d       t        t        j                  |d d d         d
       t        t        j                  |dd d         d
       t        j                  d|      dz   }||z  }t        |d       8 y )Nr  r   r                 ?rA   r   r  y     @o@     @o@ro   y     d@     d@r  r  r  y       @       @)r$   	complex64
complex128r   emptyr   realimagr   r  r`   )r(   r6  r  r  rQ  s        r)   test_sum_complexzTestUfunc.test_sum_complex  s   <<?B'a!eq)BQUa2/E,FFHHQb)1a!e,))Aq1u--#BFF1Is3#BFF1TrT7OS9' 2&+Aq1v<qAw=q1v<qAw=q2w=qRy 1;?q2w=qRy 1;?B'",AFA7+- @r+   c                    t        t        j                  dgd      d       t        t        j                  dgd      d       t        t        j                  t        j                  dt        j
                  	      d
d      g d       y )Nro   r   initialr   g?皙?333333?)r   ro   r   rA   r   r   axisr  )   r  r  )r   r$   r  r   r`   r:  r'   s    r)   test_sum_initialzTestUfunc.test_sum_initial  s^    RVVQC+Q/ 	BFFC5#6< 	RVVBGGIRXX>VUVW!	#r+   c           	          t        t        j                  ddgddggddg      d       t        t        j                  ddgddggdd	ddg
      dd	g       y )NrP  rn  ro        @TFwherer         @)r  r  r        "@)r   r$   r  r'   s    r)   test_sum_wherezTestUfunc.test_sum_where  s\    RVVb"XBx0uFKRVVb"XBx0q"#'-135r(	<r+   c                 R   t        j                  d      j                  d      }t        t	        j
                  ||      t        j                  ||z  d             t        j                  d      }t        t	        j
                  ||      t        j                  ||z               y )Nr   r   ro   r   r  )r$   r   reshaper   r   r  r  r  s     r)   test_inner1dzTestUfunc.test_inner1d  sl    IIaL  (3;;q!,bffQqSr.BCIIaL3;;q!,bffQqSk:r+   c                 ,   d}t        j                  d      j                  d      }t        j                  d      j                  d      }t        t	        j
                  ||      t        j                  ||z  d      |       d}t        j                  d      j                  d	      }t        t	        j
                  ||      t        j                  ||z  d      |       t        j                  d
      j                  d      }t        j                  d      j                  d      }t        t        t        j
                  ||       t        j                  d
      j                  d      }t        j                  d      }t        t        t        j
                  ||       t        j                  d      j                  d      }t        j                  d      j                  d      }t        t        t        j
                  ||       t        j                  d      }t        j                  d      j                  d	      }t        j                  ||      \  }}t        |j                  d   d       ||z   }t        j                  d      5 }t        j                  d       ||z  }t        t!        |      d       t#        |d   |d   k7         d d d        t        j                  d      j                  dd      }t        j$                  d      }t        j&                  d      }t        t        t        j
                  |||       t        j&                  d      }	t	        j
                  |||	      }
t#        |
|	u        y # 1 sw Y   xY w)N	broadcastr|   r   r   r   r   r   r  err_msgz"extend & broadcast loop dimensionsr   r   r  )r|   r   r|   r   r   r   r   ro   )ro   r   r   r   Tr  r  r   r   r   r;   )r$   r   r  r   r   r  r  r   r  rs   broadcast_arraysr   stridesr  r  r  r  r   r`   r  )r(   rM  r!  r"  ur  rH   r  r  out2cs              r)   test_broadcastzTestUfunc.test_broadcast  s   IIaL  +IIaL  +3;;q!,bffQqSr.BCP2IIaL  (3;;q!,bffQqSr.BCPIIaL  (IIaL  (j#++q!4IIaL  (HHQKj#++q!4IIaL  +IIaL  +j#++q!4 IIaLIIaL  (""1a(1QYYq\1%E$$D1Q!!(+FAQ#AdGqw&'	 2 IIaL  A&GGAJhhrlj#++q!S9xx{KK1d#T	 21s   AN

Nc                 X   t        j                  d      j                  dd      }t        j                  d      }t        j                  |||       |t        j                  d      dz  k(  j                         sJ t        j                  |||       |dk(  j                         sJ y )Nro   r   )r   r|   ro   r  r   r   )r$   r   r  r  r%   rb   r   r  r(   rw   r  s      r)   test_out_broadcastszTestUfunc.test_out_broadcasts?  s    
 iil""1a(hhy!
sCS!ryy|a'',,... 	C#&q~~r+   rw   r  r;   r   r|   ro   r  )z(1,)->()z
(2,)->(1,)z(4, 3)->(4, 1))idsc                 H   t        j                  t        d      5  t        j                  ||       d d d        t        j                  t        d      5  t        j
                  t        j                  d      ||       d d d        y # 1 sw Y   YxY w# 1 sw Y   y xY w)Nznon-broadcastablerJ  r  r;   )r   r)  r  r$   positiver%   r`   r  s      r)   test_out_broadcast_errorsz#TestUfunc.test_out_broadcast_errorsN  sm     ]]:-@AKK% B ]]:-@AFF2772;- BA BA BAs   B,BBB!c                    d}t        j                  dd      j                  d      }t        t	        j
                  ||      t        j                  ||z  d      |       d	}t        j                  d      j                  d      }|d
z   }t        t	        j
                  ||      t        j                  ||z  d      |       y )Nz	type castr   shortrA   r  r   r  r  ztype cast on one argumentr  )r$   r   r  r   r   r  r  r	   )r(   rM  r!  r"  s       r)   test_type_castzTestUfunc.test_type_cast\  s    IIaw'//73;;q!,bffQqSr.B#&	()IIaL  (G!#++a"3RVVAaCb5I*-	/r+   c                 (   d}t        j                  dd      j                  d      }t        t	        j
                  ||      t        j                  ||z  d      |       d	}t        j                  dd
      j                  d      }t        t	        j
                  ||      t        j                  ||z  d      |       t        j                  dd      }t        j                  dd      }t        ||z   j                  t        j                  d             t        ||z   j                  t        j                  d             t        ||z   j                  t        j                  d             t        ||z   j                  t        j                  d             t        t        j                  |      j                  t        j                  d             t        t        j                  |      j                  t        j                  d             t        t        j                  |      j                  t        j                  d             t        t        j                  |      j                  t        j                  d             y )Nz
big endianr   z>i4rA   r  r   r  r  zlittle endianz<i4r   z>f8z<f8r  )r$   r   r  r   r   r  r  r   r2   absolutenegative)r(   rM  r!  BaLas        r)   test_endianzTestUfunc.test_endiang  s   IIau%--f53;;q!,bffQqSr.B#&	(IIau%--f53;;q!,bffQqSr.B#&	( YYq&YYq&be]]BHHTN3be]]BHHTN3be]]BHHTN3be]]BHHTN3R[[_**BHHTN;R[[_**BHHTN;R[[_**BHHTN;R[[_**BHHTN;r+   c                 T   d}t        j                  d      j                  d      }|d d dd d dd d df   }|d d dd d dd d df   }d|d<   d}t        |d	   d|
       t	        t        j                  ||      t        j                  ||z  d      |
       t        j                  d      j                  ddd      }|j                  }|j                  }d|d<   t        |d   d|
       t	        t        j                  ||      t        j                  ||z  d      |
       y )Nz#incontiguous memory layout of array@   )r   r   r   r   r   r   r   r   r   r   z-make sure it references to the original array)r   r   r   r   r   r   r  r     r   ro   r|   )	r$   r   r  r   r   r   r  r  T)r(   rM  rH   r!  r"  msg2s         r)   test_incontiguous_arrayz!TestUfunc.test_incontiguous_array~  s    3IIbM!!"45a1a1na1a1n'
>Q'("d;3;;q!,bffQqSr.BCPIIbM!!!Q*CCCC'
QwZT23;;q!,bffQqSr.BCPr+   c                 H   d}t        j                  d      j                  d      }t        j                  d      j                  d      dz   }t        j                  dd	      }t	        j
                  |||       t        |t        j                  ||z  d
      |       d
|d d  t	        j
                  |||       t        |t        j                  ||z  d
      |       d}t        j                  dd	      }t	        j
                  |||       t        |t        j                  ||z  d
      |       d
|d d  t	        j
                  |||       t        |t        j                  ||z  d
      |       d}t        j                  dd	      }t	        j
                  |||d          t        |d   t        j                  ||z  d
      |       d
|d d  t	        j
                  |||d          t        |d   t        j                  ||z  d
      |       y )Nzoutput argumentr  r   ro   r   r|   r   r   r  r&   rA   r   r  r  r  zoutput argument with type castint16z(output argument with incontiguous layoutr   ro   r|   ).r   )r$   r   r  r  r   r  r   r  )r(   rM  r!  r"  r  s        r)   test_output_argumentzTestUfunc.test_output_argument  s   IIbM!!),IIaL  +a/HHV5)Aq!1bffQqSr2C@!Aqa 1bffQqSr2C@.HHV7+Aq!1bffQqSr2C@!Aqa 1bffQqSr2C@8HHYg.Aq!F)$1V9bffQqSr&:CH!Aqai(1V9bffQqSr&:CHr+   c                    t         j                  }t        j                  d      j	                  d      }t        j                  dd      j	                  d      } |||      }t        |||z  j                  d              |||g d      }t        |||z  j                  d              |||g d	      }t        |||z  j                  d              |||g d
      }t        |||z  j                  d              |||ddg      }t        |||z  j                  d              |||t        j                  d      t        j                  dt        j                        g      }t        |||z  j                  d              |||ddg      }t        |||z  j                  d              |||ddg      }t        ||j                  ddd      |z  j                  d             t        t        |||d       t        t        |||dg       t        t        |||ddg       t        t        |||ddg       t        t        |||d dg       t        t        j                  |||g d       t        t        j                  |||g d       t        t        j                  |||g d       t        t        |||ddg       t         j                  }t        j                  d      j	                  d      }t        j                  d      j	                  d      dz   } |||      }t        |t        j                   ||              |||g d      }t        |t        j                   ||              |||g d      }t        |t        j                   ||              |||g d      }t        |t        j                   |j                  ddd      |j                  dddd                   t        j"                  d      } ||||g d      }t%        ||u        t        |t        j                   ||             t        j"                  d      } ||||g d      }t%        ||u        t        |t        j                   ||      j                  dddd             t        t        |||d        t        t        |||d       t        t        |||d       t        t        |||g        t        t        |||d!g       t        t        |||g d"       t        t        |||d#dgd#dgd#dgg       t        t        |||d!d!d#dgg       t        t        |||g d$       t        t        j                  |||g d       t        t        j                  |||g d%       t        t        |||g d&       t        j&                  d'      }t        t        |||d          t        t        ||||d d df   (       t        t        ||d   |ddg       t        t        ||||d   ddg       t        t        t        j(                  d)d)dg       t        t        |||ddgd*+       y ),N      ;@ro   ro   ro   r        3@ro   r   ro   r   r   r   r;   )axes)r   r   r;   )r   r   r;   rA   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  ro   )r   r   ro   r   )r  r  )r   r   r   ro   )r  r  )ro   r   r  r  r%  r  )r  r  N)r  r  r   )r  r  )r  r  r  r  rP  T)r  r6   )r   r  r$   r   r  r   r  int8rs   int32	transposer   r#   r  	AxisErrormatrix_multiplymatmulr  r   r  r%   )r(   r  r!  r"  r  mmrQ  zs           r)   test_axes_argumentzTestUfunc.test_axes_argument  sR   ++IIcN""9-IIc3''	2AqM1q1ukk"o.Aq121q1ukk"o.Aq|,1q1ukk"o.Aq/1q1ukk"o.AqBx(1q1ukk"o.AqRXXb-IJK1q1ukk"o.Aq1v&1q1ukk!n-Aq1v&1q{{1a3a7<<R@A 	i!QR8j'1ard;i!QdD\Bi!Qgr]Ci!QdAY? 	bllGQEbllGQHbllGQ8JKj'1aq!f=   IIbM!!),IIaL  .2q!H1bii1o.q!891bii1o.q!231bii1o.q!561biiAq!(<()Aq!Q(?A 	B HH\"q!!9:Q1bii1o.HH\"q!!=>Q1bii1o771aCD 	iQ2iQ2iQ0NOj"a4j"a(<iQ0BCi!Qr2hR2r(%C	Ei!Qh2r(%C	EiQ0JKbllB1<@bllB13KLj"a1OPHHVj"a1.j"a!Q$8j"adAQF;j"a!Aq6BiRqc:iQAtDr+   c           	         t         j                  }t        j                  d      j	                  d      }t        j                  dd      j	                  d      } |||      }t        |||z  j                  d              |||d      }t        |||z  j                  d             t        j                  |      } |||d|      }t        ||u        t        ||        |||d	      }t        |||z  j                  d	             t        j                  d
      j	                  d      }t        j                  dd      j	                  d      }t        j                  dd      j	                  d      }t        t        j                  |||d	      t        j                  ||z  |z  d	             t        t        j                  |d	      t        j                  |d	             t        t        j                  |d      t        j                  |d             t        j                  |      }t        j                  ||d	      }t        ||u        t        |t        j                  |d	             t        j                  ||d      }t        ||u        t        |t        j                  |d             t        t        |||d	d	d	g       t        t        |||d	g       t         j                  }t        t        |||d       t        j                  d|j                         }t        t"        t         j                  ||d	       t        t        t        j$                  ddd	       y )Nr   r  r  r  r  r   r  )r  r  r   r   r  r@   r  rw     r  r  r   )r  r  r   r   ro   rA   rP  )r   r  r$   r   r  r   r  
zeros_liker   innerwtcumsum
empty_liker   r#   r  r  r2   r  r%   )	r(   r  r!  r"  r  r  rQ  r  r  s	            r)   test_axis_argumentzTestUfunc.test_axis_argument  s   ++IIcN""9-IIc3''	2AqM1q1ukk"o.Aqr"1q1ukk"o.mmAAqrs+S1a Aqq!1q1ukk!n-IIaL  (IIb"%%f-IIb"%%f-3;;q!QQ766!a%!)!4	63::aa0"))AA2FG3::ab1299QR3HImmAJJqc*q1bii23JJqc*q1bii34 	i!QQaVDi!QaS9  iQ2hhy0j#**aSqAiRa8r+   c           	         t         j                  }t        j                  d      j	                  d      }t        j                  dd      j	                  d      } |||      }t        |||z  j                  d              |||d      }t        |||z  j                  d              |||d	      }t        |||z  j                  dd	             t        j                  |      } |||d	|
      }t        ||u        t        ||        |||dd      }t        |||z  j                  dd              |||dd	      }t        |||z  j                  dd	              |||dd      }t        |||z  j                  dd              |||dd	      }t        |||z  j                  dd	              |||g dd      }t        |||z  j                  d              |||g dd	      }t        |||z  j                  dd	              |||ddgd      }t        |||z  j                  d              |||g dd	      }t        |||z  j                  dd	              |||ddgd      }t        ||j                  ddd      |z  j                  d              |||ddgd	      }t        ||j                  ddd      |z  j                  dd	              |||g dd	      }t        ||j                  ddd      |z  j                  dd	              |||g dd	      }t        |||j                  ddd      z  j                  dd	              |||g dd	      }t        ||j                  ddd      |j                  ddd      z  j                  dd	             t        j                  d      t        j                  d      d d t        j                  t        j                  f   z  }t        j                  |      }t        j                  |d      }t        ||       t        j                  |d	      }t        ||d d t        j                  t        j                  f          t        j                  d      t        j                  d      d d t        j                  t        j                  f   z  }t        j                  |      \  }}	t        j                  |d      \  }
}t        |
|       t        ||	       t        j                  |d	      \  }
}t        |
|d d t        j                  t        j                  f          t        ||	d d t        j                  t        j                  f          t        j                  d      j	                  d      }t        j                  dd      j	                  d      }t        j                  dd      j	                  d      }t        t        j                  |||d	      t        j                  ||z  |z  dd	             t        t        j                  |||dd	      t        j                  ||z  |z  dd	             t!        t"        |||d       t         j$                  }t!        t"        |||d	       t!        t"        |||d       t!        t"        t        j&                  ddd       y ) Nr   r  r  r  r  r   FkeepdimsT)r  r  r  r  r   r  )r  r  )r   r   r   r   r   r   )r   r   r   )r   r   r   )r   r   r   ro   r  r   r  r@   r  rw  r  truerP  )r   r  r$   r   r  r   r  r  r   r  eyenewaxisumldetslogdetr  r   r#   r  r%   )r(   r  r!  r"  r  r  rQ  rt  
expected_s
expected_lcsclr  r  s                 r)   test_keepdims_argumentz TestUfunc.test_keepdims_argument>  s   ++IIcN""9-IIc3''	2AqM1q1ukk"o.Aq5)1q1ukk"o.Aq4(1q1ukk"tk<=mmAAq4S1S1a AqrE21q1ukk"uk=>AqrD11q1ukk"tk<=Aqq511q1ukk!ek<=Aqq401q1ukk!dk;<Aq1EB1q1ukk"o.Aq4tD1q1ukk"tk<=Aq1v61q1ukk!n-Aqy481q1ukk!dk;<Aq1v61q{{1a3a7<<R@AAq1v51q{{1a3a7<<RFJ = L 	MAqy481q{{1a3a7<<RFJ = L 	MAqy481q1;;q!Q#77<<Q<NOAqy481q{{1a3akk!Q6JJCDC1	3 FF1I		"aRZZ&?@@771:GGA&1h'GGA%1hq"**bjj'@ABFF1I		"aRZZ&?@@!$Q
JQ/B2z*2z*Q.B2z!RZZ*CDE2z!RZZ*CDEIIaL  (IIb"%%f-IIb"%%f-3;;q!Q>66!a%!)"tD	F3;;q!QQF66!a%!)!dC	E 	i!Q@  iQD9iQE:iR%@r+   c                    t        j                  d      j                  d      }t        j                  dd      j                  d      }t        j                  dd      j                  d      }t        t	        j
                  |||      t        j                  ||z  |z  d             t        j                  d	d
      j                  d      }t        j                  dd      j                  d      }t        j                  dd      j                  d      }t        t	        j
                  |||      t        j                  ||z  |z  d             y )Nr   r  r@   r  rw  r  r   r  d   |   r        ,  iD  )r$   r   r  r   r   r  r  r(   r!  r"  r  s       r)   test_innerwtzTestUfunc.test_innerwt  s    IIaL  (IIb"%%f-IIb"%%f-3;;q!Q/!AB1GHIIc3''	2IIc3''	2IIc3''	23;;q!Q/!AB1GHr+   c                    t        j                  g d      }t        j                  g d      }t        j                  g d      }t        t        j                  |||      t        j
                  ||z  |z  d             y)z/Test generalized ufunc with zero-sized operandsr  rA   r   r  N)r$   rs   r   r   r  r  r0  s       r)   test_innerwt_emptyzTestUfunc.test_innerwt_empty  s\    HHRt$HHRt$HHRt$3;;q!Q/!AB1GHr+   c           	         t        j                  d      }t        t        j                  ||      t        j
                  d             t        j
                  d      }t        j                  |d   ||      }t        ||u        t        |t        j                  t        j
                  d      |d   |d    f             t        t        t        j                  t        j                  d      t        j                  d             t        t        t        j                  |t        j                  d             t        t        t        j                  |t        j                  d      t        j
                  d	             t        t        t        j                  |t        j                  d      t        j
                  d             y
)z Test with fixed-sized signature.ro   ro   ro   r   r   r   r|   r  ro  )ro   r|   N)r$   r   r   r   cross1dr  r   vstackr   r  r   )r(   r!  r  results       r)   test_cross1dzTestUfunc.test_cross1d  s   FF1I3;;q!,bhhv.>?hhvQqT1c*#6299bhhqk1Q4!A$-G#HIj#++rvvay"&&)Dj#++q"))B-@j#++q"))B-&AQRj#++q"))B-!Mr+   c                    t        j                  d      j                  d      }t        j                  d      }|d d t         j                  f   }t        j                  d      j                  d      dz   }t	        j
                  ||      }t	        j                  ||      }t        ||       t        t        t        j
                  ||       t	        j                  ||      }t        ||j                                t	        j
                  ||      }t	        j                  ||      }t        ||       t        j                  d      }|t         j                  d d f   }t        j                  d      j                  d	      dz   }	t	        j
                  ||      }
t	        j                  ||      }t        ||
       t        t        t        j
                  ||       t	        j                  ||      }t        ||
j                                t	        j
                  |	|      }
t	        j                  |	|      }t        ||
       |j                  }|	j                  d
d      }t	        j
                  ||      }t	        j                  ||      }t        ||       t        t        t        j
                  ||       t	        j                  ||      }t        ||j                                t	        j
                  |	|      }t	        j                  |	|      }t        ||       t        j                  |      }t	        j
                  |	||      }t        ||       d|d d  t	        j                  |	||      }t        ||       t        j                  |      }t        t        t        j
                  |||       t	        j                  |||      }t        ||j                                y )Nr  r  r   r  r  r   ro   r  )r|   r   r   r   ro   r  r   r  r   )r$   r   r  r!  r   r  r  r   r   r  squeezer  swapaxesr  )r(   mat
single_veccol_veccol_vec_array
mm_col_vecmatmul_col_vec
matmul_colrow_vecrow_vec_array
mm_row_vecmatmul_row_vec
matmul_rowmm_row_col_vecmatmul_row_col_vecmatmul_row_colmm_row_col_arraymatmul_row_col_arrayr  s                      r)   test_can_ignore_signaturez#TestUfunc.test_can_ignore_signature  s    iim##I.YYq\
Q

]+		!,,\:Q>((g6
C1>:6 	j#"5"5sJGZZZ0
:z'9'9';< ((m<
C7>:6YYq\
RZZ]+		"--o>B((#6
GS1>:6j#"5"5z3GZZ
C0
:z'9'9';<((<
M37>:6 ))%..r26,,Wg> ZZ9-~>j#"5"5z:NJ
;>>+A+A+CD..}mL"zz-G/1AB mm,-!!-CH3 01Ajj3?3 01mmN+j#"5"5z:	 jjZ53 6 6 89r+   c                     | j                  t        j                         | j                  t        j                         y rN   )compare_matrix_multiply_resultsr$   r:  r   r'   s    r)   test_matrix_multiplyzTestUfunc.test_matrix_multiply  s&    ,,RXX6,,RYY7r+   c                 p   t        j                  t        j                  d      t        j                  d            }t	        |t        j
                  d             t        j                  t        j                  d      t        j                  d            }t	        |t        j
                  d             y )N)r   r@   )r@   r   r   )r@   r@   )r   r  r$   r`   r   r  r_  s     r)    test_matrix_multiply_umath_emptyz*TestUfunc.test_matrix_multiply_umath_empty  sp    !!"'''"2BGGG4DE3 01!!"'''"2BGGG4DE3 23r+   c                 >   t        j                  t         j                  j                  ddd      |      }t        j                  t         j                  j                  ddd      |      }d|j                  j
                  z  }fdfdd } d      } d      t        d d d	      fdz  fz   }d
}|D ]P  }	|D ]G  }
|D ]>  }|D ]5  }|j                  |	      |   }|j                  |
      |   }|xr |j                  d u}|xr |j                  d u}|j                  d	   |j                  d   k(  sp ||j                  d   |j                  d         st        t        j                  ||      t        j                  |dt         j                  f   j                  dd	      |dt         j                  d d f   z  d	      |dt!        |j                        dt!        |j                        z          8 A J S t#        |d
d       y )Nr   ro   r|   rA   zmatrix multiply on type %sc                     | dk(  rdgfS d} | dz
        }|D ]4  }t        |       D ]$  }|| dz
  gz   }||   || dz
  <   | dz
  ||<   ||fz  }& 6 |S )Nr   r   r;   )r   )nretbasepermr  new	permute_ns         r)   r[  z<TestUfunc.compare_matrix_multiply_results.<locals>.permute_n  s|    AvvCQqS>DqA!A#,C"1vC!HqSCFC6MC	 "  Jr+   c                     | dk(  ryd} | dz
        }|D ])  }||t        d       fz   fz  }||t        dd      fz   fz  }+ |S )Nr   )r;   r;   r   )slice)rV  rW  rX  slslice_ns       r)   r_  z:TestUfunc.compare_matrix_multiply_results.<locals>.slice_n  sb    AvC1Q3<DE$K>)++E!QK>)++  Jr+   c                 (    | |k(  xs | dk(  xs |dk(  S rU   r;   )s1s2s     r)   broadcastablez@TestUfunc.compare_matrix_multiply_results.<locals>.broadcastable  s    81rQw1"'1r+   r   Tr  r   .r  r   r  zreference check)r$   rs   randomrandr2   r  r]  r  rX  shaper	   r   r  r  r!  r<  strr   )r(   tpd1d2rM  rc  	permute_3slice_3refp1p2ra  rb  a1a2r[  r_  s                  @@r)   rP  z)TestUfunc.compare_matrix_multiply_results  s   XXbiinnQ1-R8XXbiinnQ1-R8*RXX]]:			2 aL	!*tT2!6 8 :<<B!B%\\"-b1\\"-b1!9bggT&9!9bggT&9HHRLBHHRL8 -bhhqk288A; G5 # 3 3B ; "r#rzz/':'C'CB'K')#rzz!*;'<(=CE!G(+#bhh-:=bhh-/I )I	J & "   " 	S$(9:r+   c                 ,   t        j                  dt              j                  dd      }t        j                  |j
                  d   |j
                  d   dz
  z  dz  f|j                        }t        j                  ||       t        j                  t        j                  |d d d f   |z
  dz  d	            }|t        j                  |j
                  d   t                  }t        ||       t        t        t        j                  |       y )
Nr  rA   r|   ro   r   r   r   r   r  )r$   r   r  r  r  rg  r2   r   euclidean_pdistsqrtr  triboolr   r   r  )r(   r!  r  r"  s       r)   test_euclidean_pdistzTestUfunc.test_euclidean_pdist4  s    IIb&..q!4hh
aggaj1n5:<AGGLAs#GGBFFAagJNQ.R89rvvaggaj--.C#j#"5"5q9r+   c                     t        j                  d      }t        j                  |      }t	        ||j                                y )Nr@   )r$   r   r   r  r   )r(   r!  r8  s      r)   test_cumsumzTestUfunc.test_cumsum>  s,    IIbMA6188:.r+   c           
      z   t        j                  g dt              }t        t        j                  |d       t        j                  |D cg c]  }|xs d 
 c}t                     t        t        j                  |d      t        j                  |D cg c]  }|xs d
 c}t                     t        t        j                  |d      t        j                  |D cg c]  }|xs d
 c}t                     t        t        j                  |d      t        j                  |D cg c]  }|xs d
 c}t                     t        t        j
                  |d       t        j                  |D cg c]  }|xr d 
 c}t                     t        t        j
                  |d      t        j                  |D cg c]  }|xr d
 c}t                     t        t        j
                  |d      t        j                  |D cg c]  }|xr d
 c}t                     t        t        j
                  |d      t        j                  |D cg c]  }|xr d
 c}t                     t        t        j                  |      t        j                  |D cg c]  }|  c}t                     t        t         j                  j                  |      d       t        t         j
                  j                  |      d        y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )N)ro   NTFtest rA   Tr  blahro   )r$   rs   ra   r   
logical_orlogical_andlogical_notrg  )r(   r!  rH   s      r)   test_object_logicalzTestUfunc.test_object_logicalC  sg   HH7vFR]]1d+Q!7Q!)t)Q!7vF	HR]]1d+Q!7Q!)t)Q!7vF	HR]]1b)1!51a!'r'1!5VD	FR]]1f-q!9q!!+v+q!9H	J 	R^^At,a!8a!**a!8G	IR^^At,a!8a!**a!8G	IR^^Ar*A!6Aq!((A!6fE	GR^^Av.!:1!,,!:&I	K 	R^^A&!3Aa%!36B	D 	R]]))!,a0R^^**1-t4+ "8!7!5!9 "9!8!6!: "4s6   LL!L,L7L$L)L.L3"
L8c                     G d d      }t        j                   |             }t        ||k(  d       t        t        j                  ||      d       t        j                   |       g      }t        ||k(  t        j                  dg             t        t        j                  ||      t        j                  dg             t        t        j                  ||t              t        j                  dg             y )Nc                       e Zd Zd Zy)8TestUfunc.test_object_comparison.<locals>.HasComparisonsc                      y)N==r;   )r(   others     r)   __eq__z?TestUfunc.test_object_comparison.<locals>.HasComparisons.__eq___  s    r+   N)r8   r9   r:   r  r;   r+   r)   HasComparisonsr  ^  s    r+   r  TrA   r  )r$   rs   r   equalra   )r(   r  arr0darr1ds       r)   test_object_comparisonz TestUfunc.test_object_comparison]  s    	 	 )*Ue^T*RXXeU+T2.*+,Ue^RXXtf%56RXXeU+RXXtf-=>RXXeU&9288TF;KLr+   c                 p   t        j                  g dt              }t        t        j                  |      d       t        t        j
                  |      d       t        t        j                  |      d       t        j                  g dt              }t        t        j                  |      d       t        t        j                  |      d       t        t        j                  |      d	       t        t        j                  |      d
       t        t        j
                  |      d	       t        t        j                  |      d
       t        t        j                  dggt              j	                         d       t        t        j                  ddgggt              j	                  d      ddg       t        t        j                  dgt              j	                  d      d       t        t        j                  dgddggt              j	                  dgd
d	g      g d       y )N)r!  r"  r  rA   abcr  r!  TFTr   r   TFr   r   r   r  ro   )r  r  )r   r   ro   )
r$   rs   ra   r   r  r  minprodanyrb   r  s     r)   test_object_array_reductionz%TestUfunc.test_object_array_reductionk  sn   HH_F3RVVAY&RVVAY$RVVAY$HH(7RVVAY"RWWQZ#RVVAY%RVVAY&RVVAY%RVVAY&RXXse62668!<RXXAxj7;;FCaVLRXXqc044Q4?CRXXsQFm6:c1#eT]c;Y	Hr+   c           
      
   t        j                  dt              }t        d      D cg c]  }dg c}|d d  t         j                  j                  ||       t         j                  j                  ||       t        |t        j                  dD cg c]  }dg|z  
 c}t                     t        j                  dt              }t        d      D cg c]  }dg c}|dd d f<   t         j                  j                  ||d	
       t         j                  j                  ||d	
       t        |dd d f   t        j                  dD cg c]  }dg|z  
 c}t                     y c c}w c c}w c c}w c c}w )Nr|   rA   r   r  )r   ro   r   r@   r   r|   r   r   r   r  )r$   r`   ra   r   r%   
accumulater   rs   )r(   rw   r  s      r)   $test_object_array_accumulate_inplacez.TestUfunc.test_object_array_accumulate_inplace~  s<   ggav&$Qx(x!1#x(A
#3'
#3'388M$BMqaSUM$B&Q	
 ggfF+"'(+(QaS(+AqD	
#3R0
#3R03q!t988M$BMqaSUM$B&Q	 )
 %C
 , %Cs   
E1E6
E;F c                 d   t         j                  j                  t        j                  g dt                    }t        |t        j                  g dt                     t        j                  t              5  t         j                  j                  g d       d d d        y # 1 sw Y   y xY w)N)r   r   r   rA   )r   r   ro   r   Nr   )	r$   r%   r  rs   ra   r   r   r)  r#   r_  s     r)   $test_object_array_accumulate_failurez.TestUfunc.test_object_array_accumulate_failure  s`    ff& AB3& AB]]9%FFl+ &%%s   ;"B&&B/c                    t        j                  dt              }t        d      D cg c]  }dg c}|d d  t        j                  dt              }t        d      D cg c]  }dg c}|d d  t         j                  j                  |t        j                  d      |       t         j                  j                  |t        j                  d      |       t        ||       t        j                  dt              }t        d      D cg c]  }dg c}|dd d f<   t        j                  dt              }t        d      D cg c]  }dg c}|dd d f<   t         j                  j                  |t        j                  d      |d	       t         j                  j                  |t        j                  d      |d	       t        ||       y c c}w c c}w c c}w c c}w )
Nr|   rA   r   r  r  r   r   r   r  )	r$   r  ra   r   r%   r   r   r   r`   )r(   rw   r  r  s       r)   "test_object_array_reduceat_inplacez,TestUfunc.test_object_array_reduceat_inplace  sd   hhq'$Qx(x!1#x(Ahhq'$Qx(x!1#x(A
RYYq\s3
RYYq\s33$ ggfF+"'(+(QaS(+AqD	ggfF+"'(+(QaS(+AqD	
RYYq\s<
RYYq\s<3$ )( ,+s   
G!
G
G"
G'c                 p   t         j                  j                  t        j                  g dt              ddg      }t        |t        j                  d dgt                     t        j                  t              5  t         j                  j                  g dddg       d d d        y # 1 sw Y   y xY w)Nr  rA   r   r   r   )	r$   r%   r   rs   ra   r   r   r)  r#   r_  s     r)   "test_object_array_reduceat_failurez,TestUfunc.test_object_array_reduceat_failure  sn     ffoobhh|6BQFK3$& AB]]9%FFOOL1a&1 &%%s   >%B,,B5c                    g t        j                  g t              fD ]  }t        t        j                  |      d       t        t        j
                  |      d       t        t        j                  |      d       t        t        j                  |      d       t        t        t         j                  |       t        t        t         j                  |        y )NrA   r   r   FT)r$   rs   ra   r   r  r  r  rb   r   r  r  r  r  s     r)   test_zerosize_reductionz!TestUfunc.test_zerosize_reduction  s    bhhr01AA&Q'E*D)*bffa0*bffa0 2r+   c                    t        j                  ddg      }t        t         j                  |j                  d       t        j                  ddg      }t        t         j                  |j                  d       t        j                  ddg      }t        t         j                  |j
                  d       t        j                  ddg      }t        t         j                  |j
                  d       y )NFr   r  r  )r$   rs   r   r  rb   r  r  s     r)   test_axis_out_of_boundsz!TestUfunc.test_axis_out_of_bounds  s    HHeU^$bllAEE2HHeU^$bllAEE3HHeU^$bllAEE2HHeU^$bllAEE3r+   c           	         t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j
                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  j                  d      d       t        t        t        j                  t        j                  d      d            t        j                  u        t        t        t        j                  t        j                  d      d            t        j                  u        t        t        t        j                  t        j                  d      d            t        j                  u        t        t        t        j                  t        j                  d      d            t        j                  u        t        t        t        j                  dd            t        j                  u         G d d	t        j                        }t        j                  d
      j!                  |      }t        t        t        j                  |            |u        y )Nro   r   r        @TFg      @c                       e Zd Zy)0TestUfunc.test_scalar_reduction.<locals>.MyArrayNr8   r9   r:   r;   r+   r)   MyArrayr        r+   r  r   )r   r$   r  r  r  rb   r  r  r]  rg  r   r   rS  rW   ndarrayrs   view)r(   r  r!  s      r)   test_scalar_reductionzTestUfunc.test_scalar_reduction  s    	RVVAA&*RWWSq)3/RVVDq)40RVVE*E2RVVAA&*RVVCa(#. 	RXX__Q'+ 	RWWRZZ_156"**DERVVBJJsO!45CDRVVBJJsO!45CDRVVBJJsO!45CD 	RVVAA&'28834	bjj 	HHQKW%RVVAY7*+r+   c                    t        j                  dt         j                        }t        j                  dt         j                        }t        j                  dt         j                        }t        j                  |||       t        |d       t        j                  d      }t        j                  dt         j                        }t        j                  |d|       t        |d       y )N)r-  r+  r  r   i   rA   r   )	r$   r`   r:  r   r%   r   r  rS  subtractr(   r!  r"  r  s       r)   test_casting_out_paramz TestUfunc.test_casting_out_param  s    GGJ)GGJ)GGJ

+
q!QHHUOHHU"**-
Aqa Qr+   c                    t        j                  d      }t        j                  d      }t        j                  d      }t        j                  ||||dz  dk(         t        |g d       t        j                  d      j                  dd      dz   }t        j                  |ddg|ddgddgg       t        |dd	gd
dgg       t        j                  |d|ddg       t        |dd	gddgg       y )Nr   r   r   r  r  )r   r   r   r|   r   r   r   r|   ro   r      r  r   TF   )	r$   r   r`   r  r%   r   r  r]  r  r  s       r)   test_where_paramzTestUfunc.test_where_param  s    IIaLGGAJHHQK
q!1q5A:/Q-.IIaL  A&*
QF1a&1a&)9:Q!R2q'*+
Aqae}5Q!R2q'*+r+   c                 4   t        j                  dt         j                        }t        j                  dt         j                        }dt        j                  dt         j                        z  }t        j                  |||g d       t        |g d       y )Nr@   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_where_param_buffer_outputz(TestUfunc.test_where_param_buffer_output  sc    
 GGB!GGB!"''"bjj))
q!"@AQ@Ar+   c                    t        j                  dgt         j                        }t        j                  dgt              }t	        t        j
                  ||      dg       t        j                  dgt         j                        }t        j                  dgt              }t	        t        j
                  ||      dg       y )Nr   rA   Tr  )r$   rs   r:  rw  r   ru  r   r(   r!  rf  s      r)   test_where_param_allocz TestUfunc.test_where_param_alloc  s    HHaS)HHdV4(RWWQa(1#. HHaS

+HHdV4(RWWQa(1#.r+   c                    t         j                  j                  d      }t         j                  j                  d      }|dkD  }t        j                  |d      }t        j                  ||||       t        j                  ||j
                        |   }t        ||   |k  ||   j                  t                     ||    j                         rJ y )N)  r|   )r  r   r  r   )r  r  )
r$   re  	full_likelessbroadcast_torg  r   r   rw  r  )r(   r!  r"  r  r  b_wheres         r)   test_where_with_broadcastingz&TestUfunc.test_where_with_broadcasting  s    IIY'IIY'Cll1a 
1Es+//!QWW-e4AeHw.U1B1B41HIv;??$$$$r+   c                    d|d<   d|d<   t        t        j                  j                  |d       d       t        t        j                  j                  |d      g d       t        t        j                  j                  |d      g d	       t        t        j                  j                  |d
      ddg       t        t        j                  j                  |d      g dg dg dg       t        t        j                  j                  |d      g dg dg       t        t        j                  j                  |d      g dg d	g       t        t        j                  j                  |d      |       d|d<   d|d<   t        t        j                  j                  |d       d       t        t        j                  j                  |d      g d       t        t        j                  j                  |d      g d       t        t        j                  j                  |d
      ddg       t        t        j                  j                  |d      g dg dg dg       t        t        j                  j                  |d      g dg dg       t        t        j                  j                  |d      g dg dg       t        t        j                  j                  |d      |       d|d<   d|d<   t        t        j                  j                  |d       d       t        t        j                  j                  |d      g d       t        t        j                  j                  |d      g d	       t        t        j                  j                  |d
      ddg       t        t        j                  j                  |d      g dg dg dg       t        t        j                  j                  |d      g dg dg       t        t        j                  j                  |d      g d	g dg       t        t        j                  j                  |d      |       y )Nr   .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$   minimumrg  r  s     r)   check_identityless_reductionz&TestUfunc.check_identityless_reduction%  sj    #'
RZZ&&qt&4a8RZZ&&qv&6ERZZ&&qv&6	BRZZ&&qv&6A?RZZ&&qq&1%1<$N	PRZZ&&qq&1%1<$@	BRZZ&&qq&1%.	$:	<RZZ&&qr&2A6#'
RZZ&&qt&4a8RZZ&&qv&6ERZZ&&qv&6	BRZZ&&qv&6A?RZZ&&qq&1%1<$N	PRZZ&&qq&1%1<$@	BRZZ&&qq&1%.	$:	<RZZ&&qr&2A6#'
RZZ&&qt&4a8RZZ&&qv&6ERZZ&&qv&6	BRZZ&&qv&6A?RZZ&&qq&1%1<$N	PRZZ&&qq&1%1<$@	BRZZ&&qq&1%.	$:	<RZZ&&qr&2A6r+   l        c                     t        j                  dd      }ddg|d d df<   ddg|d d df<   t         j                  j                  |d      }~|d   dk(  sJ |d   dk(  sJ y )	N)r   l        uint8r   ro   r   r|   r   r  )r$   r  r(  rg  rv   s      r)   &test_identityless_reduction_huge_arrayz0TestUfunc.test_identityless_reduction_huge_arrayS  sr     hhz7+FAqD	VArE
jj!,1v{{2w!||r+   c                 T    t        j                  dd      }| j                  |       y )Nr  Corderr$   r  r  r  s     r)   "test_identityless_reduction_corderz,TestUfunc.test_identityless_reduction_corder^       HHYc*))!,r+   c                 T    t        j                  dd      }| j                  |       y )Nr  Fr  r  r  s     r)   "test_identityless_reduction_forderz,TestUfunc.test_identityless_reduction_forderb  r  r+   c                 t    t        j                  dd      j                  dd      }| j                  |       y )N)r   r|   ro   r  r  r   r   r$   r  r<  r  r  s     r)   &test_identityless_reduction_otherorderz0TestUfunc.test_identityless_reduction_otherorderf  s-    HHYc*33Aq9))!,r+   c                     t        j                  dd      j                  dd      }|dd dd dd f   }| j                  |       y )N)ro   r   r|   r  r  r   r   r  r  s     r)   %test_identityless_reduction_noncontigz/TestUfunc.test_identityless_reduction_noncontigj  sB    HHYc*33Aq9ab!"abjM))!,r+   c                     t        j                  dd      }|dd  j                  d      }d|_        |dd dd dd f   }| j	                  |       y )N)i  i1rA   r   r  ro   r|   r   )r$   r  r  rg  r  r  s     r)   /test_identityless_reduction_noncontig_unalignedz9TestUfunc.test_identityless_reduction_noncontig_unalignedo  sR    HH^40abEJJTJ"ab!"abjM))!,r+   c                 2   t        t        j                  j                  g t                    t
        u sJ t        j                  dt              }t        j                  j                  g |t        j                         t        |d         t        u sJ y)z
        The type of the result should always depend on the selected loop, not
        necessarily the output (only relevant for object arrays).
        rA   Nr  r2   r;   )	r   r$   r%   rg  ra   r&   rs   r   r  )r(   r  s     r)   $test_reduce_identity_depends_on_loopz.TestUfunc.test_reduce_identity_depends_on_loopv  sj     BFFMM"FM34;;;hht6* 	bc4CG}%%%r+   c                 2   t        t        j                  j                  g d      d       t        t        j                  j                  g t        j
                        t        j
                         t        t        j                  j                  g t        j
                         t        j
                          t        t        j                  j                  dgd      d       t        t        j                  j                  dgd      d       t        t        j                  j                  dgd      d       t        t        j                  j                  dgd      d       t        t        t        j                  j                  g d        t        t        t        j                  j                  g d        t        j                  t              5  t        j                  j                  g d t               d d d        t        t        j                  j                  g t        j                        d       t        j                  dgt              }t        j                  j                  |d      }t        |d       y # 1 sw Y   xY w)	Nr   r  r   r|   )r  r2   r@   rA   r  )r   r$   r(  rg  r  infr   r  r%   r   r)  ra   _NoValuers   r(   r!  rx   s      r)   test_initial_reductionz TestUfunc.test_initial_reduction  s   
 	RZZ&&r1&5q9 	RZZ&&r266&:BFFCRZZ&&rBFF7&;bffWE 	RZZ&&sA&6:RZZ&&sA&6:RZZ&&sA&6:RZZ&&sA&6: 	j"**"3"3RFj"&&--TB]]:&FFMM"d&M9 ' 	RVV]]2r{{];Q? HHbT(ffmmAqm)S" '&s   'JJc                 v   t        j                  d      }t         j                  j                  |d      j                  dk(  sJ t        j                  t              5  t         j                  j                  |d       d d d        t        j                  d      }t        j                  t              5  t         j                  j                  |d       d d d        t         j                  j                  |dd      }t        |t        j                  d             y # 1 sw Y   xY w# 1 sw Y   WxY w)N)r   r   r   r  r   r   )r   r   r   r  )
r$   r  r  rg  rg  r   r)  r  r   r`   rv   s      r)    test_empty_reduction_and_idenityz*TestUfunc.test_empty_reduction_and_idenity  s    hhv~~$$Sq$1774???]]:&NN!!#A!. ' hhy!]]:&NN!!#A!. ' nn##Ca#;30 '&
 '&s   "D#7"D/#D,/D8r  )r   r   Nr  )FTTTF)TFFFTFc                 ^   t        j                  d      j                  dd      }|j                         }t        j                  |      }t        j
                  |||       t         j                  j                  |||      }|j                  |      }t        ||       t        ||       y )Nr  ro   r  r  r  )r$   r   r  copyr  r  r%   rg  r  r   r   )r(   r  r  r!  a_copya_checkrx   checks           r)   test_reduction_with_wherez#TestUfunc.test_reduction_with_where  s     IIbM!!!Q'--"
A7%0ffmmADm6D!S% 1f%r+   r  r   r  )TTF)NTr  r  c                    t        j                  d      j                  dd      }|j                         }t        j                  |j
                  t         j                         }t        j                  |||       t         j                  j                  ||||      }|j                  ||      }t        ||       y )Nr  ro   r  )r  r  r  r  )r$   r   r  r  rC   rg  r  r  r(  rg  r  r   )	r(   r  r  r  r!  r  r  rx   r  s	            r)   %test_reduction_with_where_and_initialz/TestUfunc.test_reduction_with_where_and_initial  s     IIbM!!!Q'''!''BFF7+
A7%0jjE7KD'2S% r+   c                     t        j                  d      j                  dd      }g d}t        t        t         j
                  j                  ||       y )Nr  ro   r  r  )r$   r   r  r   r  r(  rg  r  s      r)   #test_reduction_where_initial_neededz-TestUfunc.test_reduction_where_initial_needed  s9    IIbM!!!Q' j"**"3"3Qa@r+   c                    t        j                  g dg dg      }t         j                  j                  |d      }t	        |g d       t         j                  j                  |d      }t	        |ddg       t         j                  j                  |d	      }t	        ||       t        t        t         j                  j                  |d
       y )N)       @rn  rn  )rP  r  g      ?r   r  )r  r  r  r   rn  r  r;   r  )r$   rs   dividerg  r   r   r  r  s      r)   *test_identityless_reduction_nonreorderablez4TestUfunc.test_identityless_reduction_nonreorderable  s    HHo'789iiqq)S/*iiqq)S3*%iiqr*S!j"))"2"2AFCr+   c                 X   d }d }d }t        t        j                  j                  d         ||t        j                  j                  dd        ||t        j                  j                  dd        ||t        j                  j                  dd        ||t        j                  j                  dd        |t        j                  j                  g        t        j                  j	                  t        j
                  d      d        ||t        j                  j                  dd        ||t        j                  j                  dd        ||t        j                  j                  dd        ||t        j                  j                  dd       t        j                  j	                  g        t        j                  j	                  t        j
                  d      d       t        j                  t        j                  fD ]  }|j                  t        j
                  d	      d       |j                  t        j
                  d
      d       |j                  t        j
                  d      d       |j                  t        j
                  d      d        y )Nc                      | |i | y rN   r;   rG   argsrl  s      r)   okz+TestUfunc.test_reduce_zero_axis.<locals>.ok  s    tvr+   c                 ,    t        t        | g|i | y rN   )r   r  r  s      r)   errz,TestUfunc.test_reduce_zero_axis.<locals>.err  s    *a9$9&9r+   c                 j    | |t        j                  ||f      d        | |t        j                  ||f      d        | |t        j                  |dz  |dz  |f      d        | |t        j                  |dz  ||dz  f      d        | |t        j                  ||dz  |dz  f      d        | |t        j                  |dz  ||dz  f      d        | |t        j                  |dz  |dz  |dz  |dz  |dz  f      d        | |t        j                  d	||f      d
        | |t        j                  d	||f      d        | |t        j                  |d	|f      d        | |t        j                  d	||f      d        | |t        j                  d	||f      d       y )Nr   r  r   r   r>  r  ro   r   r   r   r@   r  )r$   r  )expectfuncrV  rf  s       r)   tz*TestUfunc.test_reduce_zero_axis.<locals>.t  s   41a&)241a&)2416161"56Q?4161a1f"56Q?41a1fa1f"56VD4161a1f"56VD4161616"#q&!q&#2 3&/1
 42q!*-F;42q!*-F;41b!*-A642q!*-A642q!*-A6r+      r   r   r;   r  )r  r   )r   r  )r  r  )r   r$   r(  identityrg  r  r%   r  )r(   r  r  r  ufs        r)   test_reduce_zero_axiszTestUfunc.test_reduce_zero_axis  s   		:	7& 	RZZ(($/	"bjjR(	"bjjB'	#rzz  "a(	#rzz  !Q'BJJr"


"((6*4 	
"bffmmR$	"bffmmQ#	"bffmmR#	"bffmmQ"
b
bhhv&R0
 ::rvv&BMM"((7+!M4MM"((7+!M4MM"((8,1M5MM"((6*M3	 'r+   c                 R   t        j                  g dt              }t        t	        t         j
                  |d      g d       t        t        t         j
                  |d|       d }t        t        ||d       t	        t         j
                  |d|d       t        |g d	       y )
Nr  rA   g?)g @g@gffffff@r  c                     | |z  } y rN   r;   )r!  r"  s     r)   add_inplacez0TestUfunc.test_safe_casting.<locals>.add_inplace4  s    FAr+   r  r  r  r  )r$   rs   r&   r   r
   r%   r   r#   )r(   r!  r
  s      r)   test_safe_castingzTestUfunc.test_safe_casting)  sv    
 HHYc*-bffa=*	,iCQ7	 	ia52661cq(C1i(r+   c                    t        j                  g dd      }t        j                  g dd      }t        j                  dt        j                        }t        j
                  |||      }t        j                  g dt        j                        }t        ||       t        j
                  ||      }t        ||       t        j
                  ||j                  t         j                        |      }t        ||       t        t              5  t        j
                  |t        j                  d             d d d        y # 1 sw Y   y xY w)Nr   i8rA   ro   )r   r   r|   r  r   )r$   rs   r  r   rationalr   r   r   uint16r   r#   )r(   r!  r"  r  r8  targets         r)   test_ufunc_custom_outzTestUfunc.test_ufunc_custom_out<  s     HHYd+HHYd+HHQo667 !))!Q2)?+C+CDVV$ !))!Q/VV$ !))!QXXbii-@aHVV$ 9%$$Q		!5 &%%s   *EEc           
         t        j                  dd      j                  dd      }t        j                  dd      j                  dd      }t        j                  |d dd df   |       t        |t        j                  g dg d	g d
g dgd             t        j                  d      }t        j                  |d       t        |d       t        j                  |ddg       t        |d       y )Nr  lrA   r|   r   ro   r   )r   r   r|   ro   )r   r      r   )r  r     r  )r  r  r  r  r   r@   )r$   r   r  opflag_testsinplace_addr   rs   r   s      r)   test_operand_flagszTestUfunc.test_operand_flagsX  s    IIb$,,Q2IIas#++Aq1  3B38a0Q,."07:< 	= HHQK  A&Q  QF+Qr+   c                    dd l mc m} t        j                  dgd      }t        j                  dgd      }|j                  ||      }t        |t        j                  dgd             t        t        |j                         y )Nr   r  zu8,u8,u8rA   )r   r|   r   )
numpy.core._struct_ufunc_testsr   _struct_ufunc_testsr$   rs   add_tripletr   r   RuntimeErrorregister_fail)r(   struct_ufuncr!  r"  r8  s        r)   test_struct_ufunczTestUfunc.test_struct_ufunce  se    ==HHi[
3HHi[
3))!Q/VRXXykDElL$>$>?r+   c                    t        j                  t        j                  dd      t        j                  dd      t        j                  dd      gt        j                        }t        j                  t        j                  dd      t        j                  dd      t        j                  dd      gt        j                        }t        j                  ||      }t        j                  t        j                  d      t        j                  dd      t        j                  dd      gt        j                        }t        ||       y )Nr   r   ro   r|   rA   )r$   rs   r   r  test_add_rationalsr   )r(   r!  r"  r8  rt  s        r)   test_custom_ufunczTestUfunc.test_custom_ufunco  s   HH%%a+%%a+%%a+- "**	,
 HH%%a+%%a+%%a+- "**	, !33Aq988%%a(%%a+%%a+- "**	,
 	VX&r+   c                     t        t              5  t        j                  t	        j
                  d      dt        j
                  t        d f       d d d        y # 1 sw Y   y xY w)Nr   r'  )r   r#   r$   multiplyr   r  r&   r'   s    r)   test_custom_ufunc_forced_sigz&TestUfunc.test_custom_ufunc_forced_sig  sB    9%KK003Q#2#;#;S$"GI &%%s   AAA#c                      G fdd      t        j                  d       d      z   t        j                  dk(  j                         t        j                  dk  j                         y )Nc                   :    e Zd ZdZdZdZd Zd Z fdZ fdZ	y)1TestUfunc.test_custom_array_like.<locals>.MyThing  r   c                     || _         y rN   rg  )r(   rg  s     r)   __init__z:TestUfunc.test_custom_array_like.<locals>.MyThing.__init__  s	    "
r+   c                      | j                   d   S Nr   r-  r'   s    r)   __len__z9TestUfunc.test_custom_array_like.<locals>.MyThing.__len__  s    zz!}$r+   c                     xj                   dz  c_         t        |t              s|f}t        |      | j                  kD  rt        d       | j                  t        |      d        S )Nr   boo)getitem_countrt   tupler  ndim
IndexErrorrg  )r(   r  MyThings     r)   __getitem__z=TestUfunc.test_custom_array_like.<locals>.MyThing.__getitem__  sZ    %%*%!!U+Aq6DII%$U++tzz#a&'233r+   c                 2    xj                   dz  c_         | S rU   )
rmul_count)r(   r  r8  s     r)   __rmul__z:TestUfunc.test_custom_array_like.<locals>.MyThing.__rmul__  s    ""a'"r+   N)
r8   r9   r:   __array_priority__r;  r4  r.  r1  r9  r<  )r8  s   r)   r8  r*    s'    !%JM#%4r+   r8  r   r5  r   r   )r$   r   r   r;  r4  )r(   r8  s    @r)   test_custom_array_likez TestUfunc.test_custom_array_like  sY    	 	2 	

1gfo%""a'););<%%*G,A,ABr+   r!  r@   rA   c                    |j                         }t        j                  j                  |g dd       t	        |g d       t        j                  t              5  t        j                  j                  |g d       d d d        |j                         }t        j                  j                  |g d       t	        |g d       |j                         }t        j                  g d      }t        j                  j                  |g d|       t	        |g d       t        j                  t              5  t        j                  j                  |g dg d       d d d        t        j                  t              5  t        j                  j                  |g ddd	gdg       d d d        y # 1 sw Y   3xY w# 1 sw Y   `xY w# 1 sw Y   y xY w)
Nr   r   r   r   )
r   r   r|   ro   r|   r   r   r   r  r   )r   r   ro   )
r   r   r  r  r|   r   r   r  r   r+  r+  r+  )
r   r      ro   r|   i   r   r   r  r   r  r   )
r  r$   r%   atr   r   r)  r  r  rs   )r(   r!  r  r"  s       r)   test_ufunc_at_basiczTestUfunc.test_ufunc_at_basic  s%    VVX
		"i#R78]]:&FFIIb)$ ' VVX
r9%R:;VVXHH_%
		"i#R;<]]:&KKNN1i3 ' ]]:&FFIIaaVQK0 '&# '& '& '&s$   #F/7&F<>(G/F9<GGtypecode
AllIntegerFloatc           
      r   |t         j                  u ru|t         j                  d   v r`t        j                  d|      }t         j                  j                  ddt         j                        }t        j                  dd|      }n^t        j                  d|      }t         j                  j                  dd	t         j                        }t        j                  d	|      }|j                         }t        j                  d
      5 }t        j                  d       |j                  |||       d d d        t        j                  d
      5 }t        j                  d       t        ||      D ]  \  }	}
 |||	   |
||	|	dz    d        	 d d d        t        ||       t              dkD  rkt              dkD  sJ |d   j                   |d   j                   k(  sJ t#        |d   j$                        d d t#        |d   j$                        d d k(  sJ y y # 1 sw Y   xY w# 1 sw Y   xY w)NrH  r+  rA   r  )r  r2   r      r+  i  Tr  r  r  r  r   r@   )r$   r  	typecodesr`   re  randintr^  r   r  r  r  r  rE  r   r   r  categoryrh  message)r(   rG  rz   r!  indxvalsatagw_atw_loopr  r  s              r)   test_ufunc_at_inner_loopsz#TestUfunc.test_ufunc_at_inner_loops  s    BII(bll<.H"H8,A99$$Sr$AD99Q(3DH-A99$$TBGG$DD99T2Dvvx$$D1T!!(+HHQd# 2 $$D1V!!(+D$1 d1gqd1QqSk8D ( 2 	T1v;?t9q= =7##vay'9'9999tAw',F1I4E4E0Fs0KKKK	  21 21s   )H!?H-!H*-H6Complexc                 Z   t        j                  d|      }t        j                  t        j                  dt         j                        t        j                  ddt         j                        g      }|j
                  j                  d      }|j                  |||       t        j                  |      }|t         j                  u rdx|d<   |d<   nJ|dxx   d|t         j                  u r|n| z  z  cc<   |dxx   d|t         j                  u r|n| z  z  cc<   t        ||       y )	Nr@   rA   r   r  r|   r  r   r   )r$   r`   concatenater^  rC   r2   r   rE  	ones_liker&  r%   r   )r(   rG  rz   r!  rP  valuert  s          r)   !test_ufunc_at_inner_loops_complexz+TestUfunc.test_ufunc_at_inner_loops_complex  s     GGBh'~~rwwq8!wwr1BGG<> ?R D% <<?BKK(**HQK(1+QK1"&&ufEEKQK2%266/vFFK1h'r+   c                     t        j                  d      }t         j                  j                  |t	        d       t        j
                  d             t        |t        j
                  d             y )Nr   )r$   r  r%   rE  r]  r`   r   r(   rw   s     r)   test_ufunc_at_ellipsisz TestUfunc.test_ufunc_at_ellipsis  sC     hhqk
		#uT{BGGAJ/3
+r+   c                     t        j                  dt         j                        }t        j                  d      }t        j
                  j                  ||       t        j                  |g dk(        sJ y )Nr   rA   )r   r   r   i8r   )r$   r`   r
  r   r   indexed_negativerE  rb   )r(   rw   rP  s      r)   test_ufunc_at_negativez TestUfunc.test_ufunc_at_negative  sQ    ggarxx(yy|T*vvc33444r+   c                 J   t        j                  dt         j                        }t        j                  dt              }d|d<   d|d<   d|dd  t        j                  dt              }t         j                  j                  |||       |d   |j                         k(  sJ y )	Ni   rA   r@   r   r   r   r+  i    )r$   r  r  r  r%   rE  r  )r(   indicesr"  r!  s       r)   test_ufunc_at_largezTestUfunc.test_ufunc_at_large
  s}    ((4rxx0HHT'!!$%HHQe$
		!Wa tquuwr+   c                    t        j                  d      }t        j                  d      }t        j                  t        |      t         j                        }t         j
                  j                  |||       |d   t        |      k(  sJ y )Nr@   i rA   r   )r$   r  r`   r  r  r%   rE  )r(   rw   valuesindexs       r)   test_cast_index_fastpathz"TestUfunc.test_cast_index_fastpath  s^    hhrlVBHH5
		#uf%1vV$$$r+   rZ  rP  c                    t        j                  d      }t        j                  t        j                  d      d      }t         j                  j                  |||       t        |t        j                  |d|z               y )Nr+  r   )r$   r  repeatr   r%   rE  r   r  )r(   rZ  rw   rg  s       r)   #test_ufunc_at_scalar_value_fastpathz-TestUfunc.test_ufunc_at_scalar_value_fastpath  sV     hhtn		"))D/1-
		#ue$3S!e) <=r+   c           	         t        j                  d      j                  dd      }t        j                  g dg dg dg      }t         j                  j                  |t        d       g df|       t        |g dg dg d	g       t        j                  d
      j                  ddd      }t        j                  g d      }t         j                  j                  |t        d       t        d       g df|       t        |g dg dg dgg dg dg dgg dg dg dgg       t        j                  d      j                  dd      }t        j                  g dg dg dg      }t         j                  j                  |g dt        d       f|       t        |g dg dg dg       t        j                  d
      j                  ddd      }t        j                  g d      }t         j                  j                  |t        d       g dt        d       f|       t        |g dg dg dgg dg dg dgg dg dg dgg       t        j                  d      j                  dd      }t        j                  g d      }t         j                  j                  |dg df|       t        |g dg d g d!g       t        j                  d
      j                  ddd      }t        j                  g d      }t         j                  j                  |g ddt        d       f|       t        |g dg d g d!gg d"g d#g d$gg d%g d&g d'gg       t        j                  d
      j                  ddd      }t        j                  g d      }t         j                  j                  |t        d       t        d       t        d       f|       t        |g d(g d)g dgg d*g d+g dgg d%g d,g dgg       y )-Nr   ro   rB  )r-  r-  r-  )r/  r/  r/  r   r   r   )r      f   )ro        )r   i_  4  r  )r+  r-  r/  )r   i  rC  )r   i     )r        )r       )r  i     )r  i     )        )r  i     r   )i  rp  i  )      rs  )   rp  i]  )j   r  rr  )r   r@   r  )   rv  if  )s      i=  )r  r  rw  )   r{  io  )r,     iF  r   r  )r   r   r  )   rt  ic  )r  r  r  )r  r     )v      i@  )rz        )r     r  )r+  rn  i.  )g      i1  )m      i7  )p      i:  )y      iC  )r$   r   r  rs   r%   rE  r]  r   r   s      r)   test_ufunc_at_multiDzTestUfunc.test_ufunc_at_multiD&  s;   IIaL  A&HHoHI
		!eDk9-q1Q}EFIIbM!!!Q*HH_%
		!eDk5;	:A>Q  
	  IIaL  A&HHoHI
		!it-q1QO_EFIIbM!!!Q*HH_%
		!eDk9eDk:A>Q  
 	! IIaL  A&HH_%
		!a^Q'Q	9=>IIbM!!!Q*HH_%
		!iE$K0!4Q  
	 IIbM!!!Q*HH_%
		!eDk5;d<a@Q  
 	!r+   c                 4   t        j                  d      }t         j                  j                  |dd       t	        |d       t        t        t         j                  j                  |dd       t        t        t         j                  j                  |g d       y )Nr   r;   r   )r$   rs   r%   rE  r   r   r7  r  s     r)   test_ufunc_at_0DzTestUfunc.test_ufunc_at_0Dv  s]    HHQK
		!RQj"&&))Q15j"&&))QA6r+   c                     t        j                  d      }t         j                  j                  |g dd       t	        |t        j
                  g d             y )Nr@   )r   r   ro   r   r  )
r   r   i>  .   r|   r   r   r   r  r   )r$   r   r]  rE  r   rs   r  s     r)   test_ufunc_at_dtypeszTestUfunc.test_ufunc_at_dtypes~  s7    IIbM
A|S)Q!CDEr+   c                 .   t        j                  d      }|dz  dk(  }t         j                  j                  ||g d       t	        |g d       t        j                  dd      }t         j
                  j                  |g d       t	        |g d	       y )
Nr@   r   r   )r   r   r|   r   r  )
r   r   r   ro   r   r   r   r   r   r   u4rA   r@  )
r   r   r   ro   r|   l    r   r   r  r   )r$   r   r  rE  r   invert)r(   r!  rg  s      r)   test_ufunc_at_booleanzTestUfunc.test_ufunc_at_boolean  sj    IIbMA

Auo.Q67 IIb%
		Q	"QCDr+   c                 *   t        j                  d      }|d d d f   d d ddf   }t         j                  j                  |ddgd       t	        |t        j                  d             t        j
                  g dt        j                  d      j                               }t        j
                  g dt        j                  d      j                               }t         j                  j                  ||d       t	        |g d	       t        j
                  d
dgt              }t        t        t         j                  j                  |ddgd       t	        |t        j
                  d
dgt                     t        t        t         j                  j                  t        j                  d      dg       t        j
                  g d      }t         j                  j                  |dgd       t        |t        j
                  g d             y )Nr|   r   r   ro   rm  r  )r   r   ro   r|   rG   )r   r  r   r|   r!  rA   r@   r  )r$   r   r%   rE  r   rs   r2   rL  ra   r   r#   r  modfr(  r   )r(   origr!  rg  rf  s        r)   test_ufunc_at_advancedz TestUfunc.test_ufunc_at_advanced  s[   yy|DM!QqS&!
		!aVQ41. BHHSM$>$>$@A,(B(B(DE
		&%#6<0 3(&1iFQFA>6288S!HF#CD 	j"''**biimaSA HHY


a!a Q+,r+   c                    t        j                  dd      j                  |      }t        j                  g d      j                  t         j                        }t        j                  g d|j
                        }|j                         }t        ||      D ]  \  }} |||   |      ||<    |j                  |||       t        ||       t        j                  |g dk(        sJ y )Nr   r@   )r   r   r   r   )r   r   r   r@   rA   )r$   r   r   rs   r^  r2   r  r   rE  r   rb   )	r(   r2   rz   r!  indxsrQ  rt  r  r  s	            r)   test_at_negative_indexesz"TestUfunc.test_at_negative_indexes  s    
 IIa##E*(//8xxQWW5668t$DAqQ/HQK % 	E4 1h'vve~-...r+   c                 f   t        j                  d      }t        j                  d      }t        t        t         j                  j
                  |dg|       t        j                  ddgddggg      }t        t        t         j                  j                  j                  j
                  |dg       y )Nr   r  r   r   r   ro   r|   )
r$   r`   r   r#   r  rE  rs   linalg_umath_linalgr#  r   s      r)   test_at_not_none_signaturez$TestUfunc.test_at_not_none_signature  s|    GGIGGIiq1#q9HH1v1v&'(i!8!8!<!<!?!?QCHr+   c                    t        j                  dt              }t        j                  t         j
                  j                  j                        5  t         j                  j                  |ddgddg       d d d        y # 1 sw Y   y xY w)Nr@   rA   r   r   )
r$   r`   rh  r   r)  r   _exceptions_UFuncNoLoopErrorr%   rE  r]  s     r)   test_at_no_loop_for_opz TestUfunc.test_at_no_loop_for_op  sW    ggb$]]277..@@AFFIIcAq6Aq6* BAAs   &BBc                     t        j                  dg      }t         j                  j                  |dgdg       |d   dk(  sJ y )Nr   r   )r$   rs   r  rE  r]  s     r)   test_at_output_castingz TestUfunc.test_at_output_casting  s9    hhtn
C!qc"1v{{r+   c                     t        j                  d      }t        j                  t              5  t         j
                  j                  |ddgg d       d d d        y # 1 sw Y   y xY w)Nr   r   r   r  )r$   r   r   r)  r  r%   rE  r]  s     r)   test_at_broadcast_failurez#TestUfunc.test_at_broadcast_failure  s?    iil]]:&FFIIcAq69- '&&s   &AA'c                 :   t         j                  j                  }t        j                  dt              }t        j                  d|j
                        }|dz  }t         ||      |       t         ||d      |       t         ||d      |       t         ||dd       |       t         ||dd      |       t         ||dd      |       t         ||dd       |       t         ||dd d       |       t         ||dd |      |       t         ||dd |      |       t         ||dd d       |       t         ||dd d d	
      |       t         ||dd d d      |j                  d|j                  z                t         ||dd d d	d      |       t         ||dd d d	d      |       t         ||dd d d	dd      |       t         ||dd d d	dd      |       t         ||dd d d	      |       t         ||dd d d	      |       t         ||dd d d	      |       t         ||dd d d	dd      |       t        t        |       t        t        ||dd d d	ddd
       t        t        ||d       t        t        ||d       t        t        ||dd d       t        t        ||dd       t        t        ||d       t        t        ||dd        t        t        ||dd d       t        t        ||d       t        t        ||dd        t        t        ||dddd        t        t        ||dd d       t        t        ||d       t        t        ||dddd        t        t        ||dd dd d       t        t        ||dd d d       y )N)r   r   rA   )r   r   r   r  r  r  Fr  Tr  r  r  )r  r2   r  r  )r2   r  r  )r  r  )r  r  r  r  r   r~  )r  r2   r  )r2   r  r  )r  r2   r  )r  r2   r~  r~  )r  r~  r  )r  r2   r  r  r~  )r  r2   r  r~  )r$   r%   rg  r`   r&   r2   r   r  rg  r   r#   )r(   rG   rQ  ors        r)   test_reduce_argumentszTestUfunc.test_reduce_arguments  sN   FFMMGGE%GGD(EQqT1Qqq\1%Qq!Wa Qq!4(!,Qq!3'+Qq!S\1%Qq!T]A&Qq!Tt,a0Qq!Tq)1-Qq!T1%q)Qq!T4(!,Qq!T4%8!<Qq!T4.		$.0IJQq!T42A6Qq!T4:A>Qq!T448!<Qq!T4>BQqq$GKQq!4TEBAFQq!Tte<a@Qq!TteQ!#$%	' 	i#iAq$eQaHiAy1iAI6iAIT#	% 	iAq)4iAY7iAYDAiAq$	:iA95iA9DA
 	iAq9I	 	iAAT1EiAq1iAq4	 iAATD	+iAAT	+r+   c                 l    G d dt         j                        }t        j                  d      j                  dd      }|j	                  d      j                         }|j	                  |      }t        j                  g dt              }t        t        j                  |||d	   k(  k(        d
       y )Nc                       e Zd Zd Zy),TestUfunc.test_structured_equal.<locals>.MyAc                 4     t        ||      d |D        i |S )Nc              3   Z   K   | ]#  }|j                  t        j                         % y wrN   )r  r$   r  ).0inputs     r)   	<genexpr>zOTestUfunc.test_structured_equal.<locals>.MyA.__array_ufunc__.<locals>.<genexpr>	  s&      0C;A% 16

2::0F;As   )+)r   )r(   rz   methodinputsrl  s        r)   __array_ufunc__z<TestUfunc.test_structured_equal.<locals>.MyA.__array_ufunc__	  s2    -wuf- 0C;A0C NFLN Nr+   N)r8   r9   r:   r  r;   r+   r)   MyAr  	  s    Nr+   r        (@r|   ro   zf8,f8,f8rA   )TFFFr   T)
r$   r  r   r  r  r;  rs   rw  r   rb   )r(   r  r!  ramrar  s         r)   test_structured_equalzTestUfunc.test_structured_equal	  s    	N"** 	N IIcN""1Q'VV:V'//1ggcl6dCRVVFsbe|45t<r+   c                     t        j                  d      }t        j                  d      }t        ||k7         t        ||k7         t        ||k(          t        ||k(          y )Nr  r!  )r$   rs   r   r   s      r)   test_scalar_equalzTestUfunc.test_scalar_equal#	  sP     HHRLHHSMQQQ!VQ!Vr+   c                    t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                   t         j"                  t         j$                  t         j&                  t         j(                  t         j*                  t         j,                  t         j.                  t         j0                  t         j2                  t         j4                  t         j6                  g}t        j8                  d      }d}t        j8                  ddg      }|D ]&  }t;        t<        |||       t;        t<        |||       ( y )N1r   rP  rn  )r$   r]  r%   r  r&  r  r  floor_dividebitwise_and
bitwise_orbitwise_xor
left_shiftright_shiftfmaxfminfmodhypot	logaddexp
logaddexp2r(  r  modgreatergreater_equalr  
less_equalr  	not_equalrs   r   r#   )r(   binary_funcsr!  r"  r  rG   s         r)    test_NotImplemented_not_returnedz*TestUfunc.test_NotImplemented_not_returned-	  s    HHbffbkk2;;		NNBOOR^^R]]NNBMM2>>277GGRWWbhhbmmJJ

BFFJJ(("''2==HHbll$ HHSMHHb"XA)Q1-)Q1- r+   Nc                 ~    t        j                  g dt              } ||||      }|j                  t        k(  sJ y )NTNFrA   r'  )r$   rs   ra   r2   )r(   rz   r.   r!  rx   s        r)   %test_logical_ufuncs_object_signaturesz/TestUfunc.test_logical_ufuncs_object_signatures@	  s5     HH(7AqI.yyF"""r+   c                     t        j                  g d      }t        j                  t              5   ||||       d d d        y # 1 sw Y   y xY w)Nr  r'  )r$   rs   r   r)  r#   )r(   rz   r.   r!  s       r)   +test_logical_ufuncs_mixed_object_signaturesz5TestUfunc.test_logical_ufuncs_mixed_object_signaturesJ	  s7     HH()]]9%!Q), &%%s   AAc                    t        j                  dd      }t        j                  ddg      }t         |||       |ddgd             |j                  |      dk(  sJ t        j                  dt         j
                        } |ddgd      j                  |j                        }t         ||||      |       t        j                  d	t         j
                        }|j                  ||      dk(  sJ t        j                  d
gd      }t        j                  d	|j                        }|j                  ||      dk(  sJ y )N   1V3rA   rP  rn  Tr   r  r;   ro   r  r   )r$   rs   r   rg  r  r
  r   r2   )r(   rz   r!  r  r  rt  s         r)   $test_logical_ufuncs_support_anythingz.TestUfunc.test_logical_ufuncs_support_anythingU	  s    HHT&HHb"X5A;tTlD(AB||A$&&&hhq)$t,33CII>5A3/:hhr*||A3|'4/// HHaS$hhr)||A3|'1,,,r+   c                     t        j                  t        d      5   |dgdg       ddd       t        j                  t        d      5  |j                  g d       ddd       y# 1 sw Y   AxY w# 1 sw Y   yxY w)a  
        Logical ufuncs are normally well defined by working with the boolean
        equivalent, i.e. casting all inputs to bools should work.

        However, casting strings to bools is *currently* weird, because it
        actually uses `bool(int(str))`.  Thus we explicitly reject strings.
        This test should succeed (and can probably just be removed) as soon as
        string to bool casts are well defined in NumPy.
        zcontain a loop with signaturerJ  r  3N)r  20)r   r)  r#   rg  )r(   rz   s     r)   !test_logical_ufuncs_reject_stringz+TestUfunc.test_logical_ufuncs_reject_stringi	  s\     ]]9,KL3%# M]]9,KLLL) ML MLLLs   A(A4(A14A=c                     t        j                  d      }t        j                  ddg      }|j                         }t        j                  t
              5   ||||d       d d d        y # 1 sw Y   y xY w)Nr  rP  rn  rr  r  )r$   rs   r  r   r)  r#   )r(   rz   r!  r  r  s        r)   "test_logical_ufuncs_out_cast_checkz,TestUfunc.test_logical_ufuncs_out_cast_checkz	  sT     HHSMHHb"Xffh]]9%!QC1 &%%s   A,,A5c                    t        j                  dd      }t        j                  dd      }t         j                  j                  |      t         j                  j                  |      k(  sJ t	        t         j                  j                  |      t         j                  j                  |             t	        t         j                  j                  |dg      t         j                  j                  |dg             y )Nr@   z>i8rA   z<i8r   )r$   r   r%   rg  r   r  r   )r(   arr_bearr_les      r)   $test_reducelike_byteorder_resolutionz.TestUfunc.test_reducelike_byteorder_resolution	  s     2U+2U+vv}}V$f(====266,,V4bff6G6G6OPFFOOFQC("&&//&1#*F	Hr+   c                    t        j                  dt         j                        }t        j                  dt         j                        }t         j
                  j                  ||      dk(  sJ d|d d t         j                  j                  ||      dk(  sJ t        j                  dd	t         j                        }t        j                  dt         j                        }t        j                  dt         j                        }t         j                  j                  ||t         j                  
       ||k7  sJ y )Nr+  rA   r;   r  r   r@   r  r   ir  )r$   r`   r  r  r  r%   rg  r&  rC   r:  rS  )r(   rw   r  rx   
single_ress        r)   test_reducelike_out_promotesz&TestUfunc.test_reducelike_out_promotes	  s    
 ggd"((+hhr+vv}}Sc}*d222CR{{!!#3!/5888
 gga1 hhr,XXb

3

3JbjjAS   r+   c                 4   t        j                  dd      }t        j                  d|j                  j	                               }t         j
                  j                  |      }t         j
                  j                  ||       t        ||       t        j                  d|j                  j	                               }t         j
                  j                  |ddg      }t         j
                  j                  |ddg|       t        ||       t        j                  |j                  |j                  j	                               }t         j
                  j                  |      }t         j
                  j                  ||       t        ||       y )	Nrw  r  rA   r;   r  r   r   r   )r$   r`   r  r2   rL  r%   rg  r   r   rg  r  )r(   rw   r  rt  s       r)   +test_reducelike_output_needs_identical_castz5TestUfunc.test_reducelike_output_needs_identical_cast	  s    ggb%hhr!7!7!9:66==%
cs#8S)hhq		 6 6 8966??3A/
aV-8S)hhsyy		(>(>(@A66$$S)
#3'8S)r+   c                 v   t        j                  dt         j                        j                  ddd      }|dddd	ddd
f   j	                  ddd      }t        j                  dt         j                        j                  dd      }|d d dd d f   }|j                         }t         j                  j                  ||j                         d      }t         j                  j                  ||d      }t        ||       t        |dd d f   |dd d f          t        |dd d f   |dd d f          y )Ni  rA   r   r  r  r|   r   r   r  r   r   r   r  r  ro   )	r$   r   r  r  r  r  r%   rg  r   )r(   rH   y_baserI   y_base_copyr0r1s          r)   test_reduce_noncontig_outputz&TestUfunc.test_reduce_noncontig_output	  s	    IIfBHH-55aQ?ac!Bq&1n''1a03bhh/771=3Q3q5MkkmVV]]1!&&(]3VV]]1!!], 	RVAaC[+ac"23VAaC[+ac"23r+   	with_castc                    t        j                  d      }t        j                  d      }|r|j                  t         j                        }t	        j
                  t        d      5  t         j                  j                  |ddg|       d d d        t	        j
                  t        d      5  t         j                  j                  ||       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nr   ro   z(shape|size)rJ  r   r  )
r$   r   r   r   r   r)  r  r%   r   r  )r(   r  rw   r  s       r)   /test_reduceat_and_accumulate_out_shape_mismatchz9TestUfunc.test_reduceat_and_accumulate_out_shape_mismatch	  s     iiliil **RZZ(C]]:^<FFOOC!QSO1 = ]]:^<FFcs+ =< =< =<s   '%C/"C&C#&C/	out_shape)r;   r  r   r   r   )r   ro   r  r  f_reducec                 n   t        j                  d      j                  dd      }t        j                  ||j                        } ||d|      }||j
                  k7  r%t        t              5   ||d||       d d d        y  ||d||      }t        ||u        t        ||       y # 1 sw Y   y xY w)Nr  r|   ro   r   r  r  r  r  )
r$   r   r  r  r2   rg  r   r  r   r   )r(   r  r  r  r!  r  correct_outr  s           r)   "test_reduce_wrong_dimension_outputz,TestUfunc.test_reduce_wrong_dimension_output	  s     IIcN""1a(hhy!''*qq8<)))z*h? +* QQC(CEESL!uk2 +*s   /B++B4c                 F   t        j                  d      }t        j                  d      }t        j                  d      }t         j                  j	                  |d|d       t         j                  j	                  |d|d d df   d       t        t              5  t         j                  j	                  |d|d       d d d        t        t              5  t         j                  j	                  |d|d d df   d       d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)	N)r   r@   r  )ro   r   r   Tr  r   F)r$   r`   r  r%   rg  r   r  )r(   r!  out_correctout_incorrects       r)   +test_reduce_output_does_not_broadcast_inputz5TestUfunc.test_reduce_output_does_not_broadcast_input	  s     GGGxx'(
abkDA
abk!Q$&7%H:&FFMM!"-$MG ':&FFMM!"-1*=MN '& '&&&s   $D+DDD c                     G d dt         j                        }t        j                  d      }t         j                  j	                  t        j
                  d      |       |j                  |      }t         j                  j	                  t        j
                  d      |      |u sJ t        t         j                  j	                  |            |u sJ y )Nc                       e Zd Zy)7TestUfunc.test_reduce_output_subclass_ok.<locals>.MyArrNr  r;   r+   r)   MyArrr   
  r  r+   r  r;   r   r  )r$   r  r  r%   rg  r`   r  r   )r(   r  r  s      r)   test_reduce_output_subclass_okz(TestUfunc.test_reduce_output_subclass_ok	  s    	BJJ 	 hhrl
bggajc*hhuovv}}RWWQZS}1S888BFFMM#&'5000r+   c                 N    t        dt        j                  j                  v       y )N
)r   r   inner1d_no_docr   r'   s    r)   test_no_doc_stringzTestUfunc.test_no_doc_string	
  s    C..6667r+   c                 |    t        j                  t        t        j                  d       }|j                  d      sJ y )Nzloop of ufunc does not support)r   r)  r#   r$   ru  rK  )r(   r   s     r)   test_invalid_argszTestUfunc.test_invalid_args
  s+    mmIrww5yy9:::r+   natc                 R    	 t        j                  |      rJ y # t        $ r Y y w xY wrN   )r$   r  r#   r(   r  s     r)   test_nat_is_not_finitez TestUfunc.test_nat_is_not_finite
  s.    	{{3'''' 		    	&&c                 R    	 t        j                  |      sJ y # t        $ r Y y w xY wrN   )r$   r  r#   r  s     r)   test_nat_is_nanzTestUfunc.test_nat_is_nan
  s)    	88C= = 		r  c                 R    	 t        j                  |      rJ y # t        $ r Y y w xY wrN   )r$   isinfr#   r  s     r)   test_nat_is_not_infzTestUfunc.test_nat_is_not_inf!
  s,    	xx}$$} 		r  )r8   r9   r:   r   r   r   r   skipifr   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   rB  r   rV  rZ  r`  rc  rh  r$   r%   ru  ru  r  r  r   r  r  r  r  r  r  r  r  r`   r  r  r  r  r  r  r  r)  r1  r3  r9  rN  rQ  rS  rP  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  rs   r  r  r  r  r  r  r  r  r  r!  r$  r'  r>  r   r&   r   r  rF  r  r&  r  r(  r  r  r  indexed_ufuncsrL  rU  r[  r^  ra  rd  rh  r   rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra   r  r]   rw  r  r  r  r  r  r  r  r  r   rg  r  r  r  r  r  
datetime64timedelta64r  r  r   r;   r+   r)   r   r      s'
   	51
 [[(JK: L:GQh MJ# ..*
*"(("(6414;#<,A [[[$6+8 9
B9
B [[[)g6;L+N O0O0 [[Y(GHD IDF.3*	( [[Wrvvrww&78* 9*<U-nC [[(FG ' H 'D,2	#<;)V  [[eU^hbhhrl#Q!%("((6"23.5 =	  >
.>
.	/<.Q I6gER*9XMA^IINE:N844;l:/
54MH&(,%&21	4,8,	B	/
%,7\ [! "----
-&@1" [[V\2[[Wxrxx0C'D'/rxx$%4&0I'J'/rxx1E1E1D1F (G'H I

&I 3
& [[. ("((+>"?@ "56*,- [[Y"&&"6! 7	-
!A
D?4B)&68@'(IC> [[S&RYYr5&RYYr1I1IJ#  1	 18 ffbkk2;;jj"**bggrww@N [[BLL6g9NNP[[Wn5L 6PL: [[Zi)@A[[Wrvvr{{BKK&HI( J B(,5	% [[W
GBGGBKB'5 6>6>N!`7F
E-4 [[WLL&g)>>@[[WVVR[["))RZZDF/F@/I+
.>+@=.& [[Wnnbmm,.[[[T6"VT4$8VT"$%#%.
#
 [[W^^R]]BNN;=[[[v&t(<&()-)=
- [[W^^R]]BNN;=-=-$ [[W^^R]]BNN;=*=* [[WnnbmmR^^<>2>2	H!.*(4* [[[4-8, 9, [[[EG[[Z$7[[Z"&&--9J9J)KL3 M 8G3O18; [[U]R]]5%9>2>>%;P$QR S [[U]R]]5%9>2>>%;P$QR S [[U]R]]5%9>2>>%;P$QR Sr+   r   rz   c                 `   | j                   D ]  }d|v sd|v r|j                  d      \  }}|D cg c]  }t        j                  d|       }}t	        j
                  d      5  t	        j                  d        | | }ddd       t        t              r]t        |      }t        |      t        |      k(  sJ t        ||      D ])  \  }}|j                  t        j                  |      k(  r)J  |j                  t        j                  |      k(  rJ  yc c}w # 1 sw Y   xY w)	z
    Check all ufuncs that the correct type is returned. Avoid
    object and boolean types since many operations are not defined for
    for them.

    Choose the shape so even dot and matmul will succeed
    rr   ?->r5  Tr  r  N)typessplitr$   r`   r  r  filterwarningsrt   r5  r  r   r2   )	rz   typinpr  r  r  rx   outsr  s	            r)   test_ufunc_typesr.  )
  s     {{#:99T?S,/0Cq"C0$$D1##H-,C 2 c5!:Ds8s4y(((C1ww"((1+--- ' 99--- 
 111s   D'D$$D-	c                 d   | j                   D ]  }t        t        d      t        |      z        r%|j                  d      \  }}|D cg c]  }t	        j
                  d|       }}|D cg c]  }t	        j
                  d|      ddd     }}|D ]  }t        dd      |_         |D ]  }t        dd      |_         t        j                  d	
      5  t        j                  d        | | } | | }	ddd       t        |      dk(  rf}	f}	t        	      D ]u  \  }
}|
j                  }t	        j                  |t        j                        r4t	        j                   |      j"                  }d|z  }t%        ||	||       jt'        |
|       w  yc c}w c c}w # 1 sw Y   xY w)zs
    Check that contiguous and non-contiguous calls to ufuncs
    have the same results for values in range(9)
    zO?mMr'  r   r  Nro   r   r   Tr  r  r   )r  rz  )r(  r  setr)  r$   r  r   flatr  r  r*  r  r   r2   
issubdtypefloatingr  epsr   r   )rz   r+  r,  r  r  args_cargs_nr!  res_cres_nc_arn_arr6  res_epstols                  r)   test_ufunc_noncontiguousr=  D
  ss    {{s6{SX%&99T?S*-.#Q"((1a.#.0341"((2q/#A#&4A1QZAF A1QZAF $$D1##H-6NE6NE 2 s8q=HEHEeU+JD$B}}R- ((2,**iu3SAT4( ,'  /4
 21s   
F-#F! F&&F/	c                    t        j                  dgd      j                  d      }t        j                  |      sJ | j                  dk(  r	 | |       y | j                  dk(  r | ||j                                y t        d      )Nl         r  r  r   r   zufunc with more than 2 inputs)r$   rs   r  r  rk  r  r  )rz   r"  s     r)   test_ufunc_warn_with_nanr?  l
  sl     	$%t,11$7A88A;;yyA~a	aa899r+   zPython lacks refcountsr   c                     d} t        j                  | gt        t         j                  dz        z  dgz   | gt        dt         j                  z        z  z   t              }t        j
                  t        |      t         j                        }t        j                  |       }t        j                  t              5  t        j                  |||d       d d d        |t        j                  |       k(  sJ |d   dk(  sJ t        j                  t              5  t        j                  |||t         j                  d	       d d d        |t        j                  |       k(  sJ |d   dk(  sJ y # 1 sw Y   xY w# 1 sw Y   :xY w)
N{   r  stringrA   r  r  r   r   )r  r2   r  )r$   rs   r&   BUFSIZEra   r`   r  r^  sysgetrefcountr   r)  r  r%   )rZ  rw   r  counts       r)   test_ufunc_out_casterrorsrG  }
  s5    E
((E7Sc!122:7Srzz!1223:@BC ''#c("''
*COOE"E	z	"
sCS(3 
# COOE**** r7a<<	z	"
sCSB 
# COOE**** r7a<<! 
#	" 
#	"s   =E2)E>2E;>F
bad_offsetr  c                 :   d}t        j                  |g| z  dgz   |gt        dt         j                  z        z  z   t              }t        j                  t              5  t        j                  ||t         j                  d       d d d        y # 1 sw Y   y xY w)NrA  rB  r  rA   r  r\  )
r$   rs   r&   rC  ra   r   r)  r  r%   r^  rH  rZ  rw   s      r)   test_ufunc_input_casterrorsrK  
  sy    E
((E7Z':7Srzz!1223:@BC 
z	"
sCrww9 
#	"	"s    (BBr  c                    d}t        j                  |g| z  t         j                  gz   |gt        dt         j                  z        z  z         }t        j
                  d      5  t        j                  t              5  t        j                  ||t         j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrA  r  r   r  r  r\  )r$   rs   nanr&   rC  r   r   r)  FloatingPointErrorr%   r^  rJ  s      r)   $test_ufunc_input_floatingpoint_errorrO  
  s     E
((E7Z'FF87Srzz!1223 4C 
W	%v}}5G'H
sCrww9 (I	%	%'H'H	%	%s$   %C?(B8'C8C	=CCc                      t        j                  t        d      5  t        j                  t        j
                  dd      dd       d d d        y # 1 sw Y   y xY w)Nzcast ufunc 'add' input 0rJ  r   zi,iro   zdd->dr'  )r   r)  r#   r$   r%   rs   r;   r+   r)   test_trivial_loop_invalid_castrQ  
  s@    	y,
. 	rxx5!18
. 
. 
.s   -AAoffsetr   c                    d}t        j                  |g| z  dgz   |gt        dt         j                  z        z  z   t              }t        j                  dt         j
                        }t        j                  |      }t        j                  t        d      5  t         j                  j                  |t         j
                  |d        d d d        |t        j                  |      k(  sJ |d	   || z  k  sJ y # 1 sw Y   1xY w)
NrA  rB  r  rA   r   zinvalid literalrJ  )r2   r  r  r;   )r$   rs   r&   rC  ra   r^  rD  rE  r   r)  r  r%   rg  )rR  rZ  rw   r  rF  s        r)   test_reduce_casterrorsrT  
  s     E
((E7V#:7Srzz!1223:@BC ((2RWW
%COOE"E	z):	;
 	cc4@ 
< COOE****
 r7UV^### 
<	;s   2C>>Dc                  D   t        j                  t              5  t        j                  j                  g dd       d d d        t        j                  t              5  t        j                  j                  g d       d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)N)r   r   Nr|   r  )r   r)  r#   r$   r%   rg  r;   r+   r)   %test_object_reduce_cleanup_on_failurerV  
  s_    	y	!
lA. 
" 
y	!
l# 
"	! 
"	! 
"	!s   $B
"B
BBr  c                 D    t         j                  j                  | dg      S r0  )r$   r%   r   rE  s    r)   r   r   
  s    A3 7r+   r   rF  c                 D    t         j                  j                  | dg      S )Nr   )r$   logrE  rE  s    r)   r   r   
  s    		!aS 1r+   rE  c                 `   t        j                  t         j                  dt         j                   g      }t        j                  d      5  t	        j
                  t        d      5   | |       d d d        d d d        t        j                  t         j                  dt         j                   g      }t        j                  d      5  t	        j                  t              5   | |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   warnr   zinvalid valuerJ  r   )	r$   rs   r  r   r   r  r  r)  rN  )r  rw   s     r)   test_ufunc_methods_floaterrorsr\  
  s     ((BFFAw'
(C		 \\.@3K A 
! ((BFFAw'
(C		!]]-.3K / 
"	!	 A@ 
!	  /. 
"	!sH   D(	D 1DD$&	D/D$ D		DDD!	D$$D-c                     | dk7  ryt        j                  | j                        sy| j                  j                  dk(  rt        j                  | j
                        S y)Nr  Fr  T)r$   signbitr  r2   kindr  )rZ  s    r)   _check_neg_zeror`  
  sG    |::ejj!{{3zz%**%%r+   r2   AllFloatc                 >   t        j                  |       } | j                  dk(  r| j                  t	        dd            }n| j                  d      }t        j
                  |      }t        j
                  |      }t        ||z         sJ ||z  }t        |      sJ y )Nr         )r$   r2   r_  r   ru   rs   r`  )r2   neg_zerorw   arr2s       r)   test_addition_negative_zerorf  
  s    HHUOEzzS::gdD12::d#
((8
C88HD3:&&&4KC3r+   use_initialTFc                    t        j                  |       } | j                  dk(  r| j                  t	        dd            }n| j                  d      }i }|r||d<   nt        j                  d       t        dd      D ]  }t        j                  |g|z  |       }t        j                  |fi |}|dkD  s|rt        |      rGJ t        j                  |j                        rJ t        j                  |j                        sJ  y )Nr  rc  r  z1-0. propagation in sum currently requires initialr      rA   )r$   r2   r_  r   ru   r   xfailr   rs   r  r`  r^  r  r  )r2   rg  rd  rl  r  rw   rx   s          r)   "test_addition_reduce_negative_zerork    s     HHUOEzzS::gdD12::d#F$yHI 1c]hhzA~U3ffS#F#q5K"3''' zz#((+++zz#((+++ r+   c            
          e Zd Zd Zd Zd Zej                  j                  d e	j                  d       e	j                  d      fd e	j                  d       e	j                  d      f e	j                  d      d e	j                  d      fdg      d	        Zd
 Zd Zej                  j                   eed       d      d        Zej                  j                  dg d      d        Zd Zd Zy)TestLowlevelAPIAccessc                 :   t        j                  d      }t        j                  d      }t        j                  d      }t         j                  j                  ||d f      }||||fk(  sJ t         j                  j                  ||d fd      }||||fk(  sJ t         j                  j                  |t        d f      }||||fk(  sJ t        j                  t              5  t         j                  j                  ||d fd       d d d        y # 1 sw Y   y xY w)Nr  f4r  )NNro  r'  rp  rq  )r$   r2   r%   resolve_dtypesr&   r   r)  r#   )r(   r  ro  r  r  s        r)   test_resolve_dtypes_basicz/TestLowlevelAPIAccess.test_resolve_dtypes_basic*  s    XXd^XXd^XXd^FF!!2r4.1RRL    FF!!B#); " =RRL    FF!!2sD/2RRL   ]]9%FF!!2r4.$!? &%%s   #%DDc                 ~   t        j                  d      }t         j                  j                  ||d f      }|||t        j                  t              fk(  sJ t        j                  d      }t        j                  t              5  t         j                  j                  ||d f       d d d        y # 1 sw Y   y xY w)NS010i)r$   r2   r  rp  rw  r   r)  r#   )r(   rs  r  dtss       r)   test_weird_dtypesz'TestLowlevelAPIAccess.test_weird_dtypes@  s    XXd^HH##RTN3RRXXd^,,,, hhuo]]9%HH##S#t$45 &%%s   #B33B<c                     t        j                  d      }t        j                  t              5  t         j
                  j                  |||fd       d d d        y # 1 sw Y   y xY w)Nr  T	reduction)r$   r2   r   r)  NotImplementedErrorr%   rp  )r(   r  s     r)   test_resolve_dtypes_reductionz3TestLowlevelAPIAccess.test_resolve_dtypes_reductionL  sE    XXd^]]./FF!!2r2,$!? 0//s   %AA&dtypesr  NrG   )r  r  Nc                     t        j                  t              5  t        j                  j                  |       d d d        y # 1 sw Y   y xY wrN   )r   r)  r#   r$   r%   rp  )r(   r|  s     r)   test_resolve_dtypes_errorsz0TestLowlevelAPIAccess.test_resolve_dtypes_errorsQ  s.     ]]9%FF!!&) &%%s    AAc                     t        j                  d      }t        j                  d      }t         j                  j                  d |d fd      }||||fk(  sJ y )Ni2longTrx  )r$   r2   r%   rp  )r(   r  long_rx   s       r)   r{  z3TestLowlevelAPIAccess.test_resolve_dtypes_reductionZ  sR    XXd^ ff##T2t$4#EueU++++r+   c                 h   t        j                  d      }t        j                  t              5  t         j
                  j                  d ||f       d d d        t        j                  t              5  t         j
                  j                  d       d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nr  )NNr  )r$   r2   r   r)  r#   r%   rp  r.   )r(   r  s     r)   $test_resolve_dtypes_reduction_errorsz:TestLowlevelAPIAccess.test_resolve_dtypes_reduction_errorsa  ss    XXd^]]9%FF!!4R.1 & ]]9%FF/0 &% &% &%s   #B3 B(B%(B1	pythonapiz2`ctypes.pythonapi` required for capsule unpacking.r   c           
      ^  
 t        j                  t         j                  d      }t        j                  t         j                  d      }t        j                  t         j                  d      }t        j                  t         j
                  t         j                  |||t         j                        
 G 
fddt         j                        }t        j                  d      }t        j                  j                  ||f      \  }}|||fk(  sJ t        j                  j                  |       t         j                  t         j                  j                  _        t         j                  j                  t        j                   |      t        j                  d            }t        j"                  |t        j$                  |            j&                  }t        j(                  d|      }	|j+                  |j,                   ||	j.                  j0                  |	j.                  j0                        |	j.                  j2                   ||	j.                  j4                  d	   |	j.                  j4                  d	         |j6                         t9        |	t        j(                  d|              y )
Nr   r   c                       e Zd ZdW  fdej                  fdej                  fdej
                  fdej
                  fgZy);TestLowlevelAPIAccess.test_loop_access.<locals>.call_info_tstrided_loopcontextauxdatarequires_pyapino_floatingpoint_errorsN)r8   r9   r:   ctc_void_pc_byte_fields_)strided_loop_ts   r)   call_info_tr  t  sB    0BKK(BKK(!299-*BII6Hr+   r  r  s   numpy_1.24_ufunc_call_infor@   rA   r   )r  ARRAYc_char_p	c_ssize_t	CFUNCTYPEc_intr  	Structurer$   r2   r  _resolve_dtypes_and_context_get_strided_loopr  PyCapsule_GetPointerrestype	py_objectcastPOINTERcontentsr   r  r  ctypesdatarg  r  r  r   )r(   data_tdim_t	strides_tr  r  r6  call_info_obj	call_inforw   r  s             @r)   test_loop_accessz&TestLowlevelAPIAccess.test_loop_accessj  s    "++q)q)HHR\\1-	"++vuiN	",, 	 XXd^KKCCRHMMb"X~~ 	%%m446KK))1LL55]+9:<	 GGIrzz+'>?HH	ii"%!!szz

8

  #**,,Q/1C1CA1FG!!	# 	32R!8 89r+   r  )r   r  )r   r  c                    t        j                  d      }t         j                  j                  ||f      \  }}t	        j
                  t        d      5  t         j                  j                  ||       d d d        y # 1 sw Y   y xY w)Nr  zfixed_strides.*tuple.*or NonerJ  )fixed_strides)r$   r2   r  r  r   r)  r#   r  )r(   r  r  r6  r  s        r)   )test__get_strided_loop_errors_bad_stridesz?TestLowlevelAPIAccess.test__get_strided_loop_errors_bad_strides  s^    XXd^??RII]]9,KLKK)))7)K MLLs   "B  B	c                    t        j                  d      }t         j                  j                  ||f      \  }}t	        j
                  t        d      5  t         j                  j                  d       d d d        t	        j
                  t        d      5  t         j                  j                  |       d d d        t         j                  j                  |       t	        j
                  t              5  t         j                  j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   y xY w)Nr  	PyCapsulerJ  znot the capsule!z.*incompatible context)
r$   r2   r  r  r   r)  r  r  r#   r%   )r(   r  r6  r  s       r)   +test__get_strided_loop_errors_bad_call_infozATestLowlevelAPIAccess.test__get_strided_loop_errors_bad_call_info  s    XXd^??RII]]:[9KK))*<= : ]]9,DEFF$$Y/ F 	%%i0]]9%KK)))4 &% :9 FE &%s$    D! D-8 D9!D*-D69Ec                     t        j                  dt         j                        }d|d   d<   d|d   d<   t        j                  |      }t	        |d   d   |d   d          y )N)i  i  rA   r   r      i  )r$   r  r   r   r   )r(   r  r  s      r)   test_long_arraysz&TestLowlevelAPIAccess.test_long_arrays  sW    HH[		2!Q"c
VVAYRU1Xr"vc{+r+   )r8   r9   r:   rq  rv  r{  r   r   r   r$   r2   r~  r  r!  hasattrr  r  r  r  r  r;   r+   r)   rm  rm  )  s   @,
6@
 [[XRXXc]HBHHSM*8288C=("((3-0RXXc]D("((3-0	(  !
*!
*,1 [[GB44G  I(:I(:T [[Y(@AL BL5,r+   rm  )Or  r  rD  r  r  r   r   numpyr$   numpy.core._umath_testsr   _umath_testsr   numpy.linalg._umath_linalgr  r  r"  numpy.core._operand_flag_tests_operand_flag_testsr  numpy.core._rational_testsr   numpy.testingr   r   r   r   r   r	   r
   r   r   r   r   r   numpy.testing._private.utilsr   numpy.compatr   r   __dict__rf  rt   rz   UNARY_UFUNCSr(  r   r   r=   r   r   r   r   dirr   r.  _no_nep50_warningr=  signr  r?  r!  rG  r&   rC  rK  rO  rQ  rT  rV  r%   r  rg  r\  r`  rL  rf  rk  rm  )r\   r  rH   s   000r)   <module>r     s3     
     % % ( ( 5 5 4 4   
 9   "ww}}55<<> 2>!#rxx0 > 2$0GLbFbhh4FrLG K K4@H @HF	i% i%XK 3r7 #I7a#-gb!nbhh#G $+2q>7 #I J.J.2 3r7 #I7a#-gb!nbhh#G $+2q>7 #I J") J")J 277BHH"56: 7:  $-EF G> 3rzzC/?+@'AB: C: G$BC3rzzC/?+@'AB: C D:9 $-EF	
BJJM3s2::~./1$1 G$4$ G$BC			BFFMM	7J	G	1d	;	=>
	> D

 ",,z":;  <   ",,z":;u6, 7 <,2I, I,eX2G`P#I6#Is   P3>P8P8*P=
1*Q
