
    |h{                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
JrJr  S SKJrJrJr  S SKrS SKJr  S SKJr  S rS rS	 rS
 rS r " S S\\R                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\\R                  5      r!\"S:X  a  \RF                  " 5         gg)    N)njit	vectorize)MemoryLeakMixinTestCase)TypingErrorNumbaNotImplementedErrorNumbaExperimentalFeatureWarning)dufunc)
from_dtypec                 
    X-   $ N a0a1s     Z/home/james-whalen/.local/lib/python3.13/site-packages/numba/tests/npyufunc/test_dufunc.pypyuaddr      	    7N    c                 
    X-
  $ r   r   r   s     r   pysubr      r   r   c                 
    X-  $ r   r   r   s     r   pymultr      r   r   c                 
    X-  $ r   r   r   s     r   pydivr      s	    8Or   c                     X:  a  U $ U$ r   r   r   s     r   pyminr   "   s    2 b r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)
TestDUFunc&   c                 :    [         R                  " U[        SS9S9$ )NT)nopython)targetoptions)r
   DUFuncdict)selfpyfuncs     r   nopython_dufuncTestDUFunc.nopython_dufunc(   s    }}V43FGGr   c           	         U R                  [        5      nU R                  UR                  5        SUl        U R	                  UR                  5        U R                  [        5         SUl        S S S 5        U R                  [        5         U" [        R                  " SSS5      [        R                  " SSS5      5        S S S 5        g ! , (       d  f       Nb= f! , (       d  f       g = f)NTFr      
      )
r(   r   assertFalse_frozen
assertTrueassertRaises
ValueError	TypeErrornplinspacer&   duadds     r   test_frozenTestDUFunc.test_frozen+   s    $$V,'&z*!EM +y)"++a"%r{{1Qr':; *) +*))s   (C6C
C
C+c                 t    U R                  [        5      nU R                  [        SS5      U" SS5      5        g )Nr+   r-   )r(   r   assertEqualr6   s     r   test_scalarTestDUFunc.test_scalar5   s.    $$V,!eAaj1r   c                 f  ^ U R                  [        5      m[        U4S j5       n[        R                  " SSS5      nUS S nUSS  n[        R
                  " S5      nU" X4U5        [        R                  R                  X4-   U5        UR                  S5      nUR                  S5      n[        R
                  " S5      nU" XgU5        [        R                  R                  Xg-   U5        US S n	[        R
                  " S5      n
U" XiU
5        [        R                  R                  Xi-   U
5        g )Nc                    > T" XU5        g r   r   )r   r   o0r7   s      r   npmadd(TestDUFunc.test_npm_call.<locals>.npmadd<   s    ""r   r   ffffff?   r,   r-      rF   )	r(   r   r   r4   r5   zerostestingassert_array_equalreshape)r&   rA   XX0X1out0Y0Y1out1Y2out2r7   s              @r   test_npm_callTestDUFunc.test_npm_call9   s    $$V,		 
	KK#b!sVrsVxx|rt


%%bgt4ZZZZxxrt


%%bgt4Vxxrt


%%bgt4r   c                   ^ U R                  [        5      m[        U4S j5       n[        R                  " SSS5      nUS S nUSS  nU" X45      n[        R
                  R                  X4-   U5        UR                  S5      nUR                  S5      nU" Xg5      n[        R
                  R                  Xg-   U5        US S n	U" Xi5      n
[        R
                  R                  Xi-   U
5        U" SS	5      nU R                  US
5        g )Nc                    > T" X5      $ r   r   )r   r   r7   s     r   rA   8TestDUFunc.test_npm_call_implicit_output.<locals>.npmaddR   s    = r   r   rC   rD   r,   rE   rF         ?       @g      @)	r(   r   r   r4   r5   rH   rI   rJ   r;   )r&   rA   rK   rL   rM   rN   rO   rP   rQ   rR   rS   out3r7   s               @r   test_npm_call_implicit_output(TestDUFunc.test_npm_call_implicit_outputO   s    $$V,		! 
	!KK#b!sVrsVb~


%%bgt4ZZZZb~


%%bgt4Vb~


%%bgt4b}r"r   c                    U R                  [        5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  UR                  UR                  -   5        U R                  UR                  S5        U R                  UR                  / 5        U R                  UR                  S 5        U" SS5        U R                  UR                  S5        U R                  UR                  [        UR                  5      5        U R                  UR                  5        g )Nr-   r+   r   )r(   r   r;   ninnoutnargsntypestypesidentitylenassertIsNone	signaturer6   s     r   test_ufunc_propsTestDUFunc.test_ufunc_propsd   s    $$V,A&Q'eii%**&<=q)b).aq)s5;;'78%//*r   c                 J  ^ U R                  [        5      mT" SS5        TR                  TR                  TR                  TR
                  TR                  S.nU4S jnUR                  5        H0  u  p4[        U" U5      5      nU R                  XE" 5       SU 35        M2     g )Nr+   r-   )r_   r`   ra   rd   rg   c                 d   > SU  S3n0 n[        [        R                  " U5      ST0U5        US   $ )Nz>
                def impl():
                    return duadd.z
            r7   impl)exectextwrapdedent)attrfnlr7   s      r   get_attr_fn4TestDUFunc.test_ufunc_props_jit.<locals>.get_attr_fn}   sD    ""& (B A$w&6:V9r   z!Attribute differs from original: )
r(   r   r_   r`   ra   rd   rg   itemsr   r;   )r&   
attributesrs   rp   valcfuncr7   s         @r   test_ufunc_props_jitTestDUFunc.test_ufunc_props_jitq   s    $$V,a"YY#jj${{ #(..#(??4
	 $))+IDT*+ES%'@GI ,r   r   N)__name__
__module____qualname____firstlineno__r(   r8   r<   rT   r\   rh   ry   __static_attributes__r   r   r   r   r   &   s'    H<25,#*+Ir   r   c                   N    \ rS rSr\R
                  SS j5       rS rS rS r	Sr
g)	TestDUFuncMethodsBase   Nc                   ^^ US;   d   eUS:X  aJ  TR                   S:X  a  [        US9" U4S j5      mO[        US9" U4S j5      m[        SU4S jj5       nU$ US:X  aA  TR                   S:w  a  [        S	5      e[        US9" U4S
 j5      m[        SU4S jj5       nU$ TR                   S:X  a  [        US9" U4S j5      mO[        US9" U4S j5      m[        U4S j5       nU$ )N)reducereduceatatr   r-   rd   c                    > T" X5      $ r   r   abufuncs     r   <lambda>5TestDUFuncMethodsBase._generate_jit.<locals>.<lambda>   	    ar   c                    > T" U 5      $ r   r   r   r   s    r   r   r      	    U1Xr   c                 $   > TR                  XUS9$ Naxisinitialr   arrayr   r   vecs      r   rq   /TestDUFuncMethodsBase._generate_jit.<locals>.fn   s    zz%GzDDr   r   ,reduceat only supported for binary functionsc                    > T" X5      $ r   r   r   s     r   r   r      	    E!Kr   c                 *   > TR                  XX#U5      $ r   r   )r   indicesr   dtypeoutr   s        r   rq   r      s    ||EDEEr   c                    > T" X5      $ r   r   r   s     r   r   r      r   r   c                    > T" U 5      $ r   r   r   s    r   r   r      r   r   c                  "   > TR                   " U 6 $ r   r   )argsr   s    r   rq   r      s    vvt}$r   r   N)r   NN)r_   r   r   r2   )r&   r   kindrd   rq   r   s    `   @r   _generate_jit#TestDUFuncMethodsBase._generate_jit   s    33338yyA~23KL23EFE EIZyyA~ !OPPX./GHCF FIyyA~23KL23EF% %Ir   c                 $    U R                  USUS9$ )Nr   r   r   r&   r   rd   s      r   _reduceTestDUFuncMethodsBase._reduce   s    !!%H!EEr   c                 $    U R                  USUS9$ )Nr   r   r   r   s      r   	_reduceatTestDUFuncMethodsBase._reduceat   s    !!%h!GGr   c                 &    U R                  US5      $ )Nr   r   )r&   r   s     r   _atTestDUFuncMethodsBase._at   s    !!%..r   r   r   )r{   r|   r}   r~   	functoolscacher   r   r   r   r   r   r   r   r   r      s*    __ @FH/r   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS r\R&                  S 5       rS rS rS rS r\R&                  S 5       rS rS rS rS rS rSrg)TestDUFuncAt   c                     UR                  5       nUR                  5       nUR                  " U/UQ76   U" U/UQ76   U R                  XV5        g r   )copyr   assertPreciseEqual)r&   rq   r   r   r   expectedgots          r   _compare_outputTestDUFuncAt._compare_output   sB    668ffh!D!
3.r   c                   ^ [         R                  " S[        S9nU R                  [         R                  5      nU R                  [         R
                  5      n[        5       " S 5      m[        U4S j5       nU R                  U[         R                  U/ SQS5        SnU R                  [        U5         U" UR                  5       / SQS 5        S S S 5        U R                  U[         R
                  UR                  5       / SQ5        [         R                  " / S	Q5      nU R                  U[         R                  UR                  5       / SQU5        S
nU R                  [        U5         U" UR                  5       / SQ/ SQ5        S S S 5        U R                  [        5         U" UR                  5       / SQSS/S/5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N]= f! , (       d  f       g = f)Nr,   r   c                 .    [         R                  " U 5      $ r   r4   negativer   s    r   r   8TestDUFuncAt.test_numpy_ufunc_at_basic.<locals>.<lambda>   s    R[[^r   c                 (   > TR                  XU5      $ r   r   )r   r   r   negative_vecs      r   negative_jit_2>TestDUFuncAt.test_numpy_ufunc_at_basic.<locals>.negative_jit_2   s    ??1q11r   r-   rF   r-   r+   zsecond operand needed for ufunc)r-   rF      d   r   r   z+second operand provided when ufunc is unaryr+   r-   r   r-   )r4   arangeintr   addr   r   r   r   assertRaisesRegexr   r   r   r1   )r&   r   add_atnegative_atr   err_msgr   r   s          @r   test_numpy_ufunc_at_basic&TestDUFuncAt.test_numpy_ufunc_at_basic   sl    IIb$"&&!hhr{{+ {#;<		2 
	2 	VRVVQ	1= 4##K91668Y- : 	["++qvvxKHH_%VRVVQVVXy!D @##K91668Y	: : {+1668Y!Q4 ,+ :9 :9 ,+s$   6G.G"(G3
G"
G03
Hc                    [         R                  S   n[         R                  [         R                  [         R                  4nU GHU  n [        [         R                  " U5      5        U GH*  n[         R                  " SUS9n[         R                  " [         R                  " S[         R                  S9[         R                  " SS[         R                  S9/5      nUR                  R                  S5      nU R                  U5      nU" XVU5        [         R                  " U5      n	U[         R                  L a  S=U	S	'   U	S'   M  U	S	==   SU[         R                  L a  UOU* -  -  ss'   U	S==   SU[         R                  L a  UOU* -  -  ss'   GM-     GMX     U R                  WW	5        g ! [         a     GM{  f = f)
NComplexr,   r            y              ?r+   )r4   	typecodesr   subtractmultiplyr   r   r   onesconcatenateintpfulltyper   	ones_liker   )
r&   r   ufuncstypecoder   r   indxvalueufunc_atr   s
             r   test_ufunc_at_inner_loop%TestDUFuncAt.test_ufunc_at_inner_loop   sZ   LL+	&&"++r{{3!H288H-.  GGBh/~~rwwq'@')wwr1BGG'D'F GR(88E?%(<<?BKK'022HQK(1+QK1"&&uf#MMKQK2%266/v#NNK   "* 	8,# , s   
F22
G Gc                     [         R                  " S[        S9nU R                  [         R                  5      nU R                  U[         R                  U[        S 5      [         R                  " S[        S95        g )NrF   r   )r4   rG   r   r   r   r   slicer   r&   arrr   s      r   test_ufunc_at_ellipsis#TestDUFuncAt.test_ufunc_at_ellipsis  sR     hhq$"&&!VRVVS%+WWQc2	4r   c                    [         R                  " S[         R                  S9n[         R                  " S5      nU R	                  [         R
                  5      nU" X5        [         R                  " U/ SQ:H  5      (       d   eg )NrF   r   )r   r   r   r   r   )r4   r   int32r   r   r   all)r&   r   r   r   s       r   test_ufunc_at_negative#TestDUFuncAt.test_ufunc_at_negative  sW    ggarxx(yy|XXbkk"
3vvc112222r   c                 N   [         R                  " S[         R                  S9n[         R                  " S[        S9nSUS'   SUS'   SUSS & [         R                  " S[        S9nU R	                  [         R
                  5      nU" X1U5        US   UR                  5       :X  d   eg )	Ni   r   r,   r   rF   r+   r   i    )r4   rG   int16floatr   r   sum)r&   r   r   r   r   s        r   test_ufunc_at_large TestDUFuncAt.test_ufunc_at_large  s    ((4rxx0HHT'!!$%HHQe$"&&!q1tquuwr   c                 ,   [         R                  " S5      n[         R                  " S5      nU R                  [         R                  5      n[         R                  " [        U5      [         R                  S9nU" XU5        US   [        U5      :X  d   eg )Nr,   i r   r   )r4   rG   r   r   r   re   uint8)r&   r   valuesr   indexs        r   test_cast_index_fastpath%TestDUFuncAt.test_cast_index_fastpath!  sf    hhrl"&&!VBHH5s6"1vV$$$r   c           	         [         R                  " S5      [         R                  " S5      [         R                  " S5      S4nU H  n[         R                  " S5      n[         R                  " [         R
                  " S5      S5      nU R                  [         R                  5      nU" X4U5        [         R                  R                  U[         R                  " USU-  5      5        M     g )Nr+   r   rY   i  r-   )r4   r   float64rG   repeatr   r   r   rH   rI   	full_like)r&   r  r   r   r  r   s         r   #test_ufunc_at_scalar_value_fastpath0TestDUFuncAt.test_ufunc_at_scalar_value_fastpath*  s    ''!*bggbk2::b>2>E((4.CIIbiioq1EXXbff%F3u%JJ))#r||CU/KL r   c                 	   [         R                  " S5      R                  SS5      n[         R                  " / SQ/ SQ/ SQ/5      nU R	                  [         R
                  5      nU" U[        S 5      [         R                  " / SQ5      4U5        U R                  U[         R                  " / SQ/ SQ/ S	Q/5      5        [         R                  " S
5      R                  SSS5      n[         R                  " / SQ5      nU" U[        S 5      [        S 5      [         R                  " / SQ5      4U5        U R                  U[         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      5        [         R                  " S5      R                  SS5      n[         R                  " / SQ/ SQ/ SQ/5      nU" U[         R                  " / SQ5      [        S 5      4U5        U R                  U[         R                  " / SQ/ SQ/ SQ/5      5        [         R                  " S
5      R                  SSS5      n[         R                  " / SQ5      nU" U[        S 5      [         R                  " / SQ5      [        S 5      4U5        U R                  U[         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      5        [         R                  " S5      R                  SS5      n[         R                  " / SQ5      nU" US[         R                  " / SQ5      4U5        U R                  U[         R                  " / SQ/ S Q/ S!Q/5      5        [         R                  " S
5      R                  SSS5      n[         R                  " / SQ5      nU" U[         R                  " / SQ5      S[        S 5      4U5        U R                  U[         R                  " / SQ/ S Q/ S!Q// S"Q/ S#Q/ S$Q// S%Q/ S&Q/ S'Q//5      5        [         R                  " S
5      R                  SSS5      n[         R                  " / SQ5      nU R	                  [         R
                  5      nU" U[        S 5      [        S 5      [        S 5      4U5        U R                  U[         R                  " / S(Q/ S)Q/ SQ// S*Q/ S+Q/ SQ// S%Q/ S,Q/ SQ//5      5        g )-N	   r   r   )   r  r  ),  r  r  r+   r-   r+   )r      f   )r        )r   i_  4     )r   r  r  )r   i     )r   i     )r       )        )   i     )r   i     )        )   i     r   r+   r-   )i  r  i  )      r  )   r  i]  )j   r-  r  )r  r,      )   r!  if  )s      i=  )r      rD   )   r'  io  )|      iF  r   r   r   rF   )r         )   r  ic  )r         )r#        )v      i@  )r&        )r)        )r   r  i.  )g      i1  )m      i7  )p      i:  )y      iC  )	r4   r   rJ   r   r   r   r   asarrayr   )r&   r   r   r   s       r   test_ufunc_at_multiD!TestDUFuncAt.test_ufunc_at_multiD4  s   IIaL  A&HHoHI"&&!q5;

9 56:288M=9$; 	< IIbM!!!Q*HH_%q5;dRZZ	-BCQG288"/"/"/"1 #0"0"0"2 #1"0"0"2
!3$4 	5 IIaL  A&HHoHIq2::i(%+6:2::9$; 	< IIbM!!!Q*HH_%q5;

9 5uT{CQG2::"-"1"1"3 #/"1"1"3 #/"1"1"3
!4$5 	6 IIaL  A&HH_%q1bjj+,a02::Iy1$3 	4 IIbM!!!Q*HH_%q2::i(!U4[91=2::"-"-"-"/ #2"/"/"1 #2"/"/"1
!2$3 	4 IIbM!!!Q*HH_%"&&!q5;dU4[91=2::"1"1"1"3 #2"1"1"3 #2"1"1"3
!4$5 	6r   c                 B   [         R                  " S5      nU R                  [         R                  5      nU" USS5        U R	                  U[         R                  " S5      5        U R                  [        5         U" USS5        S S S 5        [         R                  " S5      nU" USS5        U R	                  U[         R                  " / SQ5      5        U R                  [        5         U" U/ S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r+   r   )r+   r+   r-   )	r4   r   r   r   r   r1   r   r   r2   )r&   r   r   r   s       r   test_ufunc_at_0DTestDUFuncAt.test_ufunc_at_0D  s    HHQK"&&!q"a288A;/{+1aO , IIaLq!Q288I#67 z*1b! +* ,+ +*s   ;C?+D?
D
Dc                     [         R                  " S5      nU R                  [         R                  5      nU" U/ SQS5        U R	                  U[         R
                  " / SQ5      5        g )Nr,   )r+   r-   r   r-   g      @)
r   r+   i>  .   r   rF   r   r9  r:  r  )r4   r   r   powerr   r   )r&   r   power_ats      r   test_ufunc_at_dtypes!TestDUFuncAt.test_ufunc_at_dtypes  sG    IIbM88BHH%L#&288,N#OPr   c                     [         R                  " S5      nUS-  S:H  nU R                  [         R                  5      nU" X/ SQ5        U R	                  U[         R
                  " / SQ5      5        g )Nr,   r-   r   )r   r-   r   r   r:  )
r+   r+   r+   r   r+   rF   r+   r9  r+   r  )r4   r   r   equalr   r   )r&   r   r  equal_ats       r   test_ufunc_at_boolean"TestDUFuncAt.test_ufunc_at_boolean  sR    IIbMA
88BHH%?+288,J#KLr   c                     [         R                  " SSS9nU R                  [         R                  5      nU" U/ SQ5        U R	                  U[         R
                  " / SQ[         R                  S95        g )Nr,   u4r   r   )
r   r+   r-   r   r   l    r   r9  r:  r  )r4   r   r   invertr   r   uint32)r&   r   	invert_ats      r   test_ufunc_at_boolean2#TestDUFuncAt.test_ufunc_at_boolean2  sW    IIb%HHRYY'	!Y288 -6=?YY$H 	Ir   c                     [         R                  " S5      nUS S 2S 4   S S 2SS24   nU R                  [         R                  5      nU" USS/S5        U R	                  U[         R                  " S5      5        g )Nr   r   r+   r   )r4   r   r   r   r   )r&   origr   r   s       r   test_ufunc_at_advanced#TestDUFuncAt.test_ufunc_at_advanced  sc    yy|DM!QqS&!"&&!q1a&!biil3r   c                 h   [         R                  " / SQ[         R                  " S5      R                  5       5      n[         R                  " / SQ[         R                  " S5      R                  5       5      nU R	                  [         R
                  5      nU" X!S5        U R                  U/ SQ5        g )Nr  ir+   r-   r   r   fr   )r+   r:  r   r   )r4   r   r   newbyteorderr   r   r   )r&   r  r  r   s       r   test_ufunc_at_advanced_2%TestDUFuncAt.test_ufunc_at_advanced_2  sr     BHHSM$>$>$@A,(B(B(DE"&&!va 5r   c                 D   [         R                  " SS/[        S9nU R                  [         R                  5      nU R                  [        5         U" USS/S5        S S S 5        U R                  U[         R                  " SS/[        S95        g ! , (       d  f       N:= f)Nr   r+   r   r   )r4   r   objectr   r   r1   r   r   )r&   r  r   s      r   test_ufunc_at_advanced_3%TestDUFuncAt.test_ufunc_at_advanced_3  ss    3(&1"&&!{+6Aq61% ,#q(HI ,+s   B
Bc                     U R                  [        R                  5      nU R                  [        5         U" [        R
                  " S5      S/5        S S S 5        g ! , (       d  f       g = f)Nr,   r+   )r   r4   modfr1   r   r   )r&   modf_ats     r   test_ufunc_at_advanced_4%TestDUFuncAt.test_ufunc_at_advanced_4  sB    ((277#{+BIIbMA3' ,++s   A
A+c                     U R                  [        R                  5      n[        R                  " / SQ5      nU" US/S5        U R	                  U[        R                  " / SQ5      5        g )Nr   r   )r   r4   maximumr   r   )r&   
maximum_atr   s      r   test_ufunc_at_advanced_5%TestDUFuncAt.test_ufunc_at_advanced_5  sI    XXbjj)
HHY1qc1288I#67r   c                    [         R                  S   [         R                  S   -   n[         R                  [         R                  [         R                  [         R
                  [         R                  4nU GH?  nUS;   a  M   [        [         R                  " U5      5        U GH  n[         R                  " SS5      R                  U5      n[         R                  " / SQ5      R                  [         R                  5      n[         R                  " / SQUR                  S9nUR                  5       n[        Xg5       H  u  pU" X   U
5      X'   M     U R!                  U5      nU" XVU5        [         R"                  R%                  XX5        [         R&                  " U/ SQ:H  5      (       a  GM   e   GMB     g ! [         a     GMS  f = f)	N
AllIntegerFloat)er   r,   )r   r+   r   r-   )r+   rF   r-   r,   r   )r4   r   r   r   divideminimumr{  r   r   r   r   astyper   r   r   zipr   rH   rI   r   )r&   dtypesr   r   r   r   indxsvalsr   rk  vr   s               r   test_ufunc_at_negative_indexes+TestDUFuncAt.test_ufunc_at_negative_indexes  sH   l+bll7.CC&&"++ryy"**bjjIE288E?+  IIa$++E2077@xxQWW=668,DA"'Q"7HK -  88E?4(

--a:vve~56666    , s   F<<
G
Gc                    [         R                  " S5      n[         R                  " S5      nU R                  [         R                  5      nSnU R	                  [
        U5         U" US/U5        S S S 5        g ! , (       d  f       g = f)N)r-   r-   r-   )r+   r-   r-   z1does not support ufunc with non-trivial signaturer   )r4   r   r   matmulr   r   )r&   r   r   	matmul_atr   s        r    test_ufunc_at_not_none_signature-TestDUFuncAt.test_ufunc_at_not_none_signature  sa     GGIGGIHHRYY'	E##K9a!a  :99s   $A99
Bc                     [         R                  " S[        S9nU R                  [         R                  5      nU R                  [        5         U" USS/SS/5        S S S 5        g ! , (       d  f       g = f)Nr,   r   r   r+   )r4   r   strr   r   r1   r   r   s      r   test_ufunc_at_no_loop_for_op)TestDUFuncAt.test_ufunc_at_no_loop_for_op  sR    ggb$"&&!{+3AA' ,++   A&&
A4c                     [         R                  " S/5      nU R                  [         R                  5      nU" US/S/5        US   S:X  d   eg )Nr   r   )r4   r   r   r[  )r&   r   r\  s      r   test_ufunc_at_output_casting)TestDUFuncAt.test_ufunc_at_output_casting  sC    hhtn88BHH%qcA31v{{r   c                     [         R                  " S5      nU R                  [         R                  5      nSnU R	                  [
        U5         U" USS// SQ5        S S S 5        g ! , (       d  f       g = f)NrF   z=operands could not be broadcast together with remapped shapesr   r+   r   )r4   r   r   r   r   r2   )r&   r   r   msgs       r   test_ufunc_at_broadcast_failure,TestDUFuncAt.test_ufunc_at_broadcast_failure  sU    iil"&&! N##J43A	* 544r  c                    [         R                  " S5      n[        S 5       nU R                  [	        UR
                  5      S5        UR                  USS/5        U R                  [	        UR
                  5      S5        g )NrF   c                     U S-   $ )Nr+   r   )xs    r   inc/TestDUFuncAt.test_ufunc_at_dynamic.<locals>.inc  s    q5Lr   r   r+   r   )r4   r   r   r;   re   rc   r   assertGreater)r&   r   r  s      r   test_ufunc_at_dynamic"TestDUFuncAt.test_ufunc_at_dynamic  sg    iil		 
	 	SYY+ 	sQF3syy>1-r   c                    [         R                  " S5      nU R                  [         R                  5      n[        R
                  " SS9 n[        R                  " S[        5        U" USS/S5        S S S 5        U R                  [        W5      S5        U R                  S[        US   R                  5      5        g ! , (       d  f       NR= f)	NrF   T)recordalwaysr   r   r,   z ufunc.at feature is experimental)r4   r   r   r   warningscatch_warningssimplefilterr	   r  re   assertInr  message)r&   r   r   ws       r   "test_ufunc_at_experimental_warning/TestDUFuncAt.test_ufunc_at_experimental_warning)  s    iil"&&!$$D1Q!!(,KL3A# 2
 	3q61%8#adll:KL 21s   
(B>>
Cr   N) r{   r|   r}   r~   r   r   r   r   r   r  r	  r  rO  rR  rX  r]  rd  rh  unittestexpectedFailurero  rs  rx  r}  r  r  r  r  r  r  r  r   r   r   r   r   r      s    /"5H-443
%MS6j$QMI4 6 6J(878 ! !(+.
Mr   r   c                   ~    \ rS rSrSS jr\R                  S 5       rS rS r	S r
S rS	 rS
 rS rS rS rS rSrg)TestDUFuncReduceNumPyTestsi6  Nc                    ^^ TR                   S:X  a  [        US9" U4S j5      mO[        US9" U4S j5      m[        SU4S jj5       nU$ )Nr-   r   c                    > T" X5      $ r   r   r   s     r   r   :TestDUFuncReduceNumPyTests._generate_jit.<locals>.<lambda><  r   r   c                    > T" U 5      $ r   r   r   s    r   r   r  >  s	    qr   c                 $   > TR                  XUS9$ r   r   r   s      r   rq   4TestDUFuncReduceNumPyTests._generate_jit.<locals>.fn@  s    ::e:@@r   r   )r_   r   r   )r&   r   rd   rq   r   s    `  @r   r   (TestDUFuncReduceNumPyTests._generate_jit:  sG    99>X./GHCX./ABC		A 
	A	r   c                     U R                  [        R                  5      n[        R                  R                  S5      nU" S5      nU R	                  X#5        g )Nr   )r   r4   rV  r   r   )r&   power_reducer   r   s       r   test_numpy_scalar_reduction6TestDUFuncReduceNumPyTests.test_numpy_scalar_reductionE  sA     ))"((388??1%1o.r   c                    S nU R                  [        R                  SS9nSUS'   SUS'   U" U" US S9S5        U" U" US	S9/ S
Q5        U" U" USS9/ SQ5        U" U" USS9SS/5        U" U" USS9/ S
Q/ SQ/ SQ/5        U" U" USS9/ SQ/ S
Q/5        U" U" USS9/ SQ/ SQ/5        U" U" USS9U5        SUS'   SUS'   U" U" US S9S5        U" U" US	S9/ S
Q5        U" U" USS9/ SQ5        U" U" USS9SS/5        U" U" USS9/ SQ/ S
Q/ SQ/5        U" U" USS9/ S
Q/ SQ/5        U" U" USS9/ SQ/ SQ/5        U" U" USS9U5        SUS'   SUS'   U" U" US S9S5        U" U" US	S9/ SQ5        U" U" USS9/ SQ5        U" U" USS9SS/5        U" U" USS9/ SQ/ SQ/ SQ/5        U" U" USS9/ SQ/ SQ/5        U" U" USS9/ SQ/ SQ/5        U" U" USS9U5        g )Nc                 B    [         R                  R                  X5        g r   )r4   rH   assert_equal)r   r   s     r   compare_outputOTestDUFuncReduceNumPyTests.check_identityless_reduction.<locals>.compare_outputN  s     JJ##A)r   reorderabler   r+   .r   )r+   r   r   r   r   r+   )r   r+   r+   r+   r   r-   )r   r+   r+   r+   r-   )r+   r+   r+   r+   r-   )r+   r+   r+   r   r   r+   r   )r+   r   r+   )r   r   r+   )r+   r   r+   r+   )r   r4   r  )r&   r   r  minimum_reduces       r   check_identityless_reduction7TestDUFuncReduceNumPyTests.check_identityless_reductionM  sO   	* ++BJJ+O
 #'
~ad3Q7~af5|D~af5yA~af51v>~aa0$lLA	C~aa0$l3	5~aa0!9-	/~ab115#'
~ad3Q7~af5|D~af5yA~af51v>~aa0$lLA	C~aa0$l3	5~aa0!9-	/~ab115#'
~ad3Q7~af5|D~af5yA~af51v>~aa0$lLA	C~aa0$l3	5~aa0!9-	/~ab115r   c                 P    [         R                  " SSS9nU R                  U5        g )Nr-   r   r   Corderr4   emptyr  r&   r   s     r   (test_numpy_identityless_reduction_corderCTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_corder       HHYc*))!,r   c                 P    [         R                  " SSS9nU R                  U5        g )Nr  Fr  r  r  s     r   (test_numpy_identityless_reduction_forderCTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_forder  r  r   c                 p    [         R                  " SSS9R                  SS5      nU R                  U5        g )N)r-   r   r   r  r  r+   r-   r4   r  swapaxesr  r  s     r   ,test_numpy_identityless_reduction_otherorderGTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_otherorder  s-    HHYc*33Aq9))!,r   c                     [         R                  " SSS9R                  SS5      nUSS 2SS 2SS 24   nU R                  U5        g )N)r   rF   r   r  r  r+   r-   r  r  s     r   +test_numpy_identityless_reduction_noncontigFTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_noncontig  sB    HHYc*33Aq9ab!"abjM))!,r   c                     [         R                  " SSS9nUSS  R                  SS9nSUl        USS 2SS 2SS 24   nU R	                  U5        g )N)i  i1r   r+   f8r8  )r4   r  viewshaper  r  s     r   5test_numpy_identityless_reduction_noncontig_unalignedPTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_noncontig_unaligned  sS    HH)6abEJJTJ"ab!"abjM))!,r   c                 D   U R                  [        R                  5      nU R                  [        R                  5      nU R                  [        R                  5      nU R                  U" [        R                  " / 5      SS9S5        U R                  U" [        R                  " / 5      [        R                  S9[        R                  5        U R                  U" [        R                  " / 5      [        R                  * S9[        R                  * 5        U R                  U" [        R                  " S/5      SS9S5        U R                  U" [        R                  " S/5      SS9S5        U R                  U" [        R                  " S/5      SS9S5        U R                  U" [        R                  " S/5      SS9S5        SnX4 H=  nU R                  [        U5         U" [        R                  " / 5      S S9  S S S 5        M?     g ! , (       d  f       MQ  = f)Nr   r   g        rF   r   &zero-size array to reduction operation)
r   r4   r   r  r{  r   rN  infr   r2   )r&   
add_reduce
min_reduce
max_reducer  funcs         r   test_numpy_initial_reduction7TestDUFuncReduceNumPyTests.test_numpy_initial_reduction  s   ''/
''

3
''

3
 	
2::b>1 EsK 	
2::b>266 J "	(
2::b>BFF7 K!#	) 	
2::qc?A FJ
2::qc?A FJ
2::qc?A FJ
2::qc?A FJ 7,D''
C8RZZ^T2 98 -88s   'H
H	c                    [         R                  " S5      nU R                  [         R                  5      n[         R                  R	                  USS9nU" USS9nU R                  X45        U R                  UR                  S5        SnU R                  [        U5         U" USS9  S S S 5        [         R                  " S5      nU R                  [        U5         U" USS9  S S S 5        [         R                  R	                  USSS9nU" USSS9nU R                  X45        g ! , (       d  f       N= f! , (       d  f       NX= f)	N)r   rF   r+   r  )r   r  r   )r   r   rF   r   )	r4   rG   r   true_divider   r   r  r   r2   )r&   r   true_divide_reducer   r   r  s         r   'test_numpy_empty_reduction_and_identityBTestDUFuncReduceNumPyTests.test_numpy_empty_reduction_and_identity  s   hhv!//? >>((1(5 1-.		40 7##J4s+ 5 hhy!##J4s+ 5 >>((1a(@ 1a8. 54
 54s    D%D6%
D36
Ec                 f   [         R                  " / SQ/ SQ/5      nU R                  [         R                  5      nU" USS9nU R	                  U[         R
                  " / SQ5      5        U" USS9nU R	                  U[         R
                  " SS/5      5        U" US	S9nU R	                  X15        g )
N)       @rZ   rZ   )rY   g      ?g      ?r   r  )r  g      @r  r+   rZ   r  r   )r4   r   r   r  r   rN  )r&   r   divide_reduceress       r   *test_identityless_reduction_nonreorderableETestDUFuncReduceNumPyTests.test_identityless_reduction_nonreorderable  s    HHo'789**2995AA&RZZ%@AAA&RZZc
%;<AB''r   c                 Z  ^  S nU 4S jnS nT R                  [        R                  SS9nT R                  [        R                  R                  S 5        U" XSS5        U" XSS5        U" X$SS5        U" X$SS5        U" U/ 5        U" [        R
                  " S5      S	S
9  T R                  [        R                  SS9nU" XSS5        U" XSS5        U" XSS5        U" XSS5        U" [        R                  " / [        R                  S95        U" [        R
                  " S5      S	S
9  g )Nc                     U " U0 UD6  g r   r   )rm  r   kwargss      r   ok<TestDUFuncReduceNumPyTests.test_reduce_zero_axis.<locals>.ok  s    tvr   c                 t   > TR                  [        5         U " U0 UD6  S S S 5        g ! , (       d  f       g = fr   )r1   r2   )rm  r   r  r&   s      r   err=TestDUFuncReduceNumPyTests.test_reduce_zero_axis.<locals>.err  s*    "":.4"6" /..s   	)
7c                 (   U " U[         R                  " X#45      SS9  U " U[         R                  " X245      SS9  U " U[         R                  " US-  US-  U45      SS9  U " U[         R                  " US-  X2S-  45      SS9  U " U[         R                  " X#S-  US-  45      SS9  U " U[         R                  " US-  X#S-  45      SS9  U " U[         R                  " US-  US-  US-  US-  US-  45      SS9  U " U[         R                  " S	X245      S
S9  U " U[         R                  " S	X#45      SS9  U " U[         R                  " US	U45      SS9  U " U[         R                  " S	X245      SS9  U " U[         R                  " S	X#45      SS9  g )Nr+   r  r   r-   r  r  r   r+  r,   r  )r4   rG   )expectr  nms       r   t;TestDUFuncReduceNumPyTests.test_reduce_zero_axis.<locals>.t  sx   41&)241&)2416161"56Q?41611f"56Q?411fa1f"56VD41611f"56VD4161616#$616#3 4:CE 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   r4   r{  r;   rd   rG   r   r   int64)r&   r  r  r  maximum_reducer  s   `     r   test_reduce_zero_axis0TestDUFuncReduceNumPyTests.test_reduce_zero_axis  s	   		#	7$ ++BJJ+O,,d3	"b"%	"a$	#r1%	#q!$NBrxx'b1 ''';
	""b!	"!R 	""a 	"!Q288Bbhh/0288F#"-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  6  sT    	 / /56n----
-3:/2( 8.r   r  c                   d    \ rS rSrSS jrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rSrg)TestDUFuncReducei  Nc                   ^ [         U4S j5       n[        R                  " S5      [        R                  " S5      R                  SS5      [        R                  " S5      R                  SSS5      /nU HK  n[	        UR
                  5       H/  nUR                  XgX#5      nU" XgX#5      n	U R                  X5        M1     MM     g )Nc                 (   > TR                  U UUUS9$ )N)r   r   r   r   )r   r   r   r   r   s       r   foo+TestDUFuncReduce._check_reduce.<locals>.foo   s$    <<%)&+(/   1 1r   rF   r   r-   (   )r   r4   r   rJ   rangendimpy_funcr   )
r&   r   r   r   r  inputsr   r   r   r   s
    `        r   _check_reduceTestDUFuncReduce._check_reduce  s    		1 
	1 IIaLIIaL  A&IIbM!!!Q*

 Eejj);;uEC%u6''6 * r   c                   ^ ^^^^^	^
 [         UU4S j5       m
UUU	U
U 4S jnSTR                   S3m	[        R                  " SUS9R	                  SSS	5      [        R                  " S
US9/nU Hm  m[        STR                  S-   5       H;  n[        R                  " [        TR                  5      US9 H  mU" TT5        M     M=     S H  mU" TT5        M     Mo     g )Nc                 $   > TR                  XTS9$ r   r   )r   r   r   r   s     r   r  0TestDUFuncReduce._check_reduce_axis.<locals>.foo4  s    <<g<>>r   c                  F  >  TR                  TT5      nT" TT5      nTR                  X5        g ! [         af  nTR                  UR                  S   T5        TR                  [        T5         T" TT5      nS S S 5         S nAg ! , (       d  f        S nAg = fS nAff = f)Nr   )r  r   r2   r;   r   r   r   )	r   r   r   r  r   r   exc_msgr  r&   s	       r   _check3TestDUFuncReduce._check_reduce_axis.<locals>._check8  s    7;;ud3 %&''6  +  G4++KAeT*C BAAA+s2   0 
B 5B/
B9B
B	BBB zreduction operation 'z:' is not reorderable, so at most one axis may be specifiedr  r   rF   r   r-   r,   r+   )r)r   N)	r   r{   r4   r   rJ   r  r  	itertoolscombinations)r&   r   r   r   r'  r  rk  r   r   r&  r  s   `` `   @@@@r   _check_reduce_axis#TestDUFuncReduce._check_reduce_axis2  s    		? 
	?		7 		7 +5>>*: ;G G IIb&..q!Q7IIb&
 E1ejj1n-%2253DJD5$' K .
 #ud# # r   c                     [        SSS9" [        5      nU R                  U5        U R                  U[        R
                  S9  g )Nint64(int64, int64)r   r   r   )r   r   r   r,  r4   r  r6   s     r   test_add_reduce TestDUFuncReduce.test_add_reduceR  s9    /!<VD5!RXX6r   c                 N    [        SSS9" [        5      nU R                  U5        g )Nr/  r+   r   )r   r   r   )r&   dumuls     r   test_mul_reduce TestDUFuncReduce.test_mul_reduceW  s"    /!<VD5!r   c                    [        SS S9" [        5      n[        SS S9" [        5      nU R                  U5        U R	                  U[
        R                  S9  U R                  U5        U R	                  U[
        R                  S9  g )Nr/  r   r   )r   r   r   r   r,  r4   r  )r&   dusubdudivs      r   test_non_associative_reduce,TestDUFuncReduce.test_non_associative_reduce[  sp    /$?F/$?F5!RXX65!RXX6r   c                 h    [        SSS9" [        5      nU R                  U[        R                  S9  g )Nfloat64(float64, int64)r   r   r   )r   r   r   r4   r  r6   s     r   test_reduce_dtype"TestDUFuncReduce.test_reduce_dtypec  s+    3a@H5

3r   c                     [        SSS9" [        5      nU R                  USS9  U R                  U[        R
                  S9  g )Nr/  r  r   r,   r  r   )r   r   r   r,  r4   r  )r&   dumins     r   test_min_reduce TestDUFuncReduce.test_min_reduceg  s>    /-HO5"-RXX6r   c                 j    [        SSS9" [        5      nU R                  U[        R                  SS9  g )Nr/  r   r   r   )r   r   r   r   r   r4   r  r6   s     r   test_add_reduce_initial(TestDUFuncReduce.test_add_reduce_initiall  s-    /!<VD5#>r   c                 j    [        S5      " [        5      nU R                  U[        R                  S9  g )Nr/  r   rD  r6   s     r   &test_add_reduce_no_initial_or_identity7TestDUFuncReduce.test_add_reduce_no_initial_or_identityq  s)    /0851r   c                    ^ [        SSS9" [        5      m[        U4S j5       nSnU R                  [        U5         U" S5        S S S 5        g ! , (       d  f       g = f)Nr<  r   r   c                 &   > TR                  U 5      $ r   r   )r   r7   s    r   r  0TestDUFuncReduce.test_invalid_input.<locals>.fooy  s    <<?"r   z-The first argument "array" must be array-liker   )r   r   r   r   r   )r&   r  r&  r7   s      @r   test_invalid_input#TestDUFuncReduce.test_invalid_inputv  sR    3a@H		# 
	# B##K9H :99s   	A
Ac                   ^ [        SSS9" [        5      m[        U4S j5       n[        R                  " S5      R                  SSS5      nS	nU H-  nTR                  X$5      nU" X$5      nU R                  XV5        M/     g )
Nr/  r   r   c                 "   > TR                  XS9$ Nr  r   r   r   r7   s     r   r  7TestDUFuncReduce.test_dufunc_negative_axis.<locals>.foo      <<<--r   r  rF   r   r-   )r   r   )r   r   )r   )r+   r   )r   r   r   r4   r   rJ   r   r   )r&   r  r   casesr   r   r   r7   s          @r   test_dufunc_negative_axis*TestDUFuncReduce.test_dufunc_negative_axis  sy    /!<VD		. 
	. IIbM!!!Q*7D||A,Ha,C##H2 r   c                   ^ [        SSS9" [        5      m[        U4S j5       n[        R                  " S5      R                  SSS5      nS	nU H,  nS
nU R                  [        U5         U" X$5        S S S 5        M.     SnU H*  nU R                  [        S5         U" X$5        S S S 5        M,     g ! , (       d  f       Mr  = f! , (       d  f       MP  = f)Nr/  r   r   c                 "   > TR                  XS9$ rQ  r   rR  s     r   r  6TestDUFuncReduce.test_dufunc_invalid_axis.<locals>.foo  rT  r   r  rF   r   r-   )r  r  )r   rV  )r   r   )r   r-   zduplicate value in 'axis')r   )r   r]  zInvalid axis)r   r   r   r4   r   rJ   r   r2   )r&   r  r   rW  r   r  r7   s         @r   test_dufunc_invalid_axis)TestDUFuncReduce.test_dufunc_invalid_axis  s    /!<VD		. 
	. IIbM!!!Q*?D-C''
C8A 98 
 "D''
NCA DC 	 98
 DCs   +	B3	C3
C	
C	r   )NNr   )r{   r|   r}   r~   r   r,  r0  r4  r9  r=  rA  rE  rH  rM  rX  r^  r   r   r   r   r  r    s?    7($@7
"747
?
2
	3r   r  c                       \ rS rSrS rS r\R                  S 5       rS r	S r
S rS rS	 rS
 rS rS rS rS rS rSrg)TestDUFuncReduceAti  c                     [        US5      nU R                  X5      nUR                  5       nUR                  5       nUR                  " Xs40 UD6  U" X40 UD6  U R	                  Xx5        g )Nrd   )getattrr   r   r   r   )	r&   r   r   idxr  rd   rq   r   r   s	            r   r   "TestDUFuncReduceAt._compare_output  s^    5*-^^E,668ffhx//
3v.r   c                 \   [         R                  " S5      n[         R                  " / SQ5      nU R                  [         R                  S5      nU" XUS9  U R                  [         R                  " / SQ5      U5        U" XUS9  U R                  [         R                  " / SQ5      U5        g )Nr   r   r   r+   r-   r   r   )r   r   r   r   )r  r   r   r   )r4   r   rN  r   r   r   )r&   r   rd  r  s       r   test_reduceat_out_kw'TestDUFuncReduceAt.test_reduceat_out_kw  sw    iiljj&^^BFFA.
3%

< 8#>3%

= 93?r   c           
         [         R                  " S5      R                  SS5      [         R                  " S5      R                  SSS5      [         R                  " S5      4n[         R                  " / SQ5      [         R                  " / SQ5      4nS	nU H4  nU H+  nU H"  nU R                  [         R                  XEUS
9  M$     M-     M6     g )Nr>  r   r  rF   r-   r   r   r   r   r+   r-   r   rg  )r+   r   r   r  )r4   r   rJ   r   rN  r   r   )r&   arraysr   r   r   rd  axs          r   test_reduceat_axis_kw(TestDUFuncReduceAt.test_reduceat_axis_kw  s     IIbM!!!Q'IIbM!!!Q*GGFO
 JJ'JJ|$
 EB(("(E   r   c                 J   [         R                  " S5      n[         R                  " / SQ5      nU R                  [         R                  S5      nS H=  nSU SUR
                   3nU R                  [        U5         U" XU5        S S S 5        M?     g ! , (       d  f       MQ  = f)Nrl  rg  r   )r-   rV  zaxis z) is out of bounds for array of dimension )r4   r   rN  r   r   r  r   r2   )r&   r   rd  add_reduceatro  r  s         r   test_reduceat_invalid_axis-TestDUFuncReduceAt.test_reduceat_invalid_axis  s    ggfojj&~~bffa0B2$GhhZ!C''
C8Sr* 98  98s   <
B
B"	c                 <   U R                  [        R                  S5      n/ SQn/ SQn[        R                  R                  X#5      nU" X#5      nU R	                  XE5        SnSn[        R                  R                  X#5      nU" X#5      nU R	                  XE5        g )Nr   rl  r   )r   r4   r   r   r   )r&   rs  r   rd  r   r   s         r    test_reduceat_cast_args_to_array3TestDUFuncReduceAt.test_reduceat_cast_args_to_array  s    ~~bffa0 66??1*1". 66??1*1".r   c                 x    [         R                  " S5      n/ SQnU R                  [         R                  X5        g )Nr:  )r   r   r+   rF   r-   r   r   r9  )r4   r   r   r   r&   r  rd  s      r   test_reduceat_basic&TestDUFuncReduceAt.test_reduceat_basic  s(    IIaL"RVVQ,r   c                     [         R                  " SSS5      R                  SS5      n/ SQnU R                  [         R                  X5        g )Nr   r#  r>  r   rm  )r4   r5   rJ   r   r   rz  s      r   test_reduceat_basic_2d)TestDUFuncReduceAt.test_reduceat_basic_2d  s:    KK2r"**1a0RVVQ,r   c                 D   Sn[         R                  " U5      n[         R                  " [        [	        [         R                  " US-
  5      [         R                  " US-
  5      S-   5      5      5      R                  5       nU R                  [         R                  X#5        g )Nr   r-   )r4   r   r   listr  ravelr   r   )r&   Lr  rd  s       r   test_reduceat_shifting_sum-TestDUFuncReduceAt.test_reduceat_shifting_sum  sj    IIaLhhtC		!a% 0"))AE2BQ2FGHIOOQRVVQ,r   c                    [         R                  " S[         R                  S9n[         R                  " S[         R                  S9nU R                  [         R                  U[         R
                  " S5      US9  U R                  [         R                  U[         R
                  " S5      US9  U R                  X5        [         R                  " S[         R                  S9n[        S5       Vs/ s H  nSPM     snUSS S 24'   [         R                  " S[         R                  S9n[        S5       Vs/ s H  nSPM     snUSS S 24'   U R                  [         R                  U[         R
                  " S5      USS9  U R                  [         R                  U[         R
                  " S5      USS9  U R                  X5        g s  snf s  snf )	Nr   r   rh  )r-   r   r-   r   r   )r   r   )r4   r   r  r   r   r   r   r  )r&   r   r   rk  s       r   (test_reduceat_int_array_reduceat_inplace;TestDUFuncReduceAt.test_reduceat_int_array_reduceat_inplace  sH   ggarxx(ggarxx(RVVS"))A,C@RVVS"))A,C@) ggfBHH- %a)1Q)AqD	ggfBHH- %a)1Q)AqD	RVVS"))A,CbIRVVS"))A,CbI) *)s   0G6Gc                 n   U R                  [        R                  S5      nS H}  n[        R                  " S5      n[        R                  " S5      nU(       a  UR	                  [        R
                  5      nU R                  [        5         U" USS/US9  S S S 5        M     g ! , (       d  f       M  = f)Nr   )TFrF   r   rh  )r   r4   r   r   r  r  r1   r2   )r&   rs  	with_castr   r   s        r    test_reduceat_out_shape_mismatch3TestDUFuncReduceAt.test_reduceat_out_shape_mismatch  s     ~~bffa0&I))A,C))A,C jj,"":.S1a&c2 /. ' /.s   B%%
B4	c                 J   [         R                  " / S5      n[         R                  " / S5      nU R                  [         R                  S5      n[         R                  R	                  X!5      nU" X!5      nU R                  XE5        U R                  UR                  UR                  5        [         R                  " S5      n[         R                  " / [         R                  S9nU R                  [         R                  X&SS9  U R                  [         R                  X&SS9  g)	z&Reduceat should work with empty arraysi4r  r   )rF   r-   r   r  r+   N)r4   r   r   r   r   r   r;   r   r   rN  r   r   )r&   r   r  rs  r   r   rd  s          r   test_reduceat_empty&TestDUFuncReduceAt.test_reduceat_empty  s    ((2t$HHR~~bffa066??1.1&.3 GGFOjj277+RVVQ!4RVVQ!4r   c                 ,   U R                  [        R                  S5      n[        R                  " S5      n[        R                  " S5      R	                  SS5      nU R                  [        S5         U" X#5        S S S 5        g ! , (       d  f       g = f)Nr   rF   r,   r-   zhave at most 1 dimension)r   r4   r   r   rJ   r   r   )r&   rs  r   rd  s       r   test_reduceat_error_ndim_2-TestDUFuncReduceAt.test_reduceat_error_ndim_2(  se    ~~bffa0 IIaLiim##Aq)##K1KL  MLLs   3	B
Bc                    ^ [         S 5       m[        U4S j5       n[        R                  " S5      nSnU R	                  [
        U5         U" U/ SQ5        S S S 5        g ! , (       d  f       g = f)Nc                 .    [         R                  " U 5      $ r   r   r   s    r   negGTestDUFuncReduceAt.test_reduceat_error_non_binary_function.<locals>.neg3  s    ;;q>!r   c                 &   > TR                  X5      $ r   r   )r   rd  r  s     r   neg_reduceatPTestDUFuncReduceAt.test_reduceat_error_non_binary_function.<locals>.neg_reduceat7  s    <<''r   rF   r   r+  )r   r   r4   r   r   r   )r&   r  r   r  r  s       @r   'test_reduceat_error_non_binary_function:TestDUFuncReduceAt.test_reduceat_error_non_binary_function1  sc    		" 
	" 
	( 
	( IIaL<##K5I& 655s   A  
A.c                    U R                  [        R                  S5      nU R                  [        S5         U" S/ SQ5        S S S 5        U R                  [        S5         U" [        R
                  " S5      S5        S S S 5        U R                  [        S5         U" [        R
                  " S5      / SQS	S
9  S S S 5        U R                  [        S5         U" [        R
                  " S5      / SQSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       g = f)Nr   z"array" must be array-likeabcr   z"indices" must be array-likerF   abcdzoutput must be an arrayr   rh  z"axis" must be an integer)r+   r  )r   r4   r   r   r   r   )r&   rs  s     r   "test_reduceat_error_argument_types5TestDUFuncReduceAt.test_reduceat_error_argument_types@  s    ~~bffa0##K1MN	* O ##K1OP1v. Q ##K1JK1yb9 L ##K1LM1yt< NM ON QP LK NMs/   D!DD$D5
D
D!$
D25
Er   N)r{   r|   r}   r~   r   ri  r  r  rp  rt  rw  r{  r~  r  r  r  r  r  r  r  r   r   r   r   ra  ra    s`    /@ F F 	+/&-
-
-*$3"5 !'=r   ra  c                   &    \ rS rSrS rS rS rSrg)TestDUFuncPicklingiP  c                 (  ^ [         R                  " U5      n[         R                  " U5      mT" S5      nU R                  SU5        U R	                  XB5        [
        U4S j5       nU" S5      nU R                  SU5        U R	                  XB5        g )N{   c                    > T" U 5      $ r   r   )r  rebuilts    r   r  %TestDUFuncPickling.check.<locals>.foo[  s    1:r   iA  )pickledumpsloadsr;   assertIsInstancer   )r&   identresult_typebufr)  r  r  s         @r   checkTestDUFuncPickling.checkQ  s    ll5!,,s# CLa a- 
	 
	 Ha a-r   c                 d    [         S 5       nU R                  U[        [        R                  4S9  g )Nc                     U $ r   r   x1s    r   r  3TestDUFuncPickling.test_unrestricted.<locals>.identd      Ir   r  )r   r  r   r4   integerr&   r  s     r   test_unrestricted$TestDUFuncPickling.test_unrestrictedc  s/    		 
	 	

5sBJJ&7
8r   c                 P    [        S/5      S 5       nU R                  U[        S9  g )Nzfloat64(float64)c                     U $ r   r   r  s    r   r  1TestDUFuncPickling.test_restricted.<locals>.identk  r  r   r  )r   r  r  r  s     r   test_restricted"TestDUFuncPickling.test_restrictedj  s/    	&'	(	 
)	 	

5e
,r   r   N)r{   r|   r}   r~   r  r  r  r   r   r   r   r  r  P  s    .$9-r   r  __main__)$r   r*  r  rn   r  numpyr4   numbar   r   numba.tests.supportr   r   numba.core.errorsr   r   r	   r  numba.np.ufuncr
   numba.np.numpy_supportr   r   r   r   r   r   r   r   r   r  r  ra  r  r{   mainr   r   r   <module>r     s          ! 9@ @  ! -!cI("3"3 cIZ*/H */ZsM( sMld. d.NC, CLj=. j=Z-(*;*; -D zMMO r   