
    sh                     h   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\
\R                  5      r\S:X  a  \R@                  " 5         gg)    N)njit	vectorize)MemoryLeakMixinTestCase)TypingErrorNumbaNotImplementedErrorNumbaExperimentalFeatureWarning)dufunc)
from_dtypec                 
    X-   $ N a0a1s     t/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/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_scalar4   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_call8   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>.npmaddQ   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_outputN   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_propsc   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_jitp   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                       \ 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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   )copyatassertPreciseEqual)r&   rq   ufuncaargsexpectedgots          r   _compare_outputTestDUFuncAt._compare_output   sB    668ffh!D!
3.r   c                    ^^ TR                   S:X  a  [        5       " U4S j5      mO[        5       " U4S j5      m[        U4S j5       nU$ )Nr-   c                    > T" X5      $ r   r   r   br   s     r   <lambda>,TestDUFuncAt._generate_jit.<locals>.<lambda>   s	    5;r   c                    > T" U 5      $ r   r   r   r   s    r   r   r      s	    ar   c                  "   > TR                   " U 6 $ r   r   )r   vecs    r   rq   &TestDUFuncAt._generate_jit.<locals>.fn   s    664= r   r_   r   r   )r&   r   rq   r   s    ` @r   _generate_jitTestDUFuncAt._generate_jit   s?    99>+67C+01C		! 
	!	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,   dtypec                 .    [         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   indicesr   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   arrayr1   )r&   r   add_atnegative_atr   err_msgr   r   s          @r   test_numpy_ufunc_at_basic&TestDUFuncAt.test_numpy_ufunc_at_basic   sp    IIb$##BFF+((5 {#;<		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   s]   LL+	&&"++r{{3!H288H-.  GGBh/~~rwwq'@')wwr1BGG'D'F GR(--e4%(<<?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   sT     hhq$##BFF+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   sY    ggarxx(yy|,
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$##BFF+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   sh    hhrl##BFF+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''/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_multiD  s   IIaL  A&HHoHI##BFF+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_%##BFF+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_0Df  s    HHQK##BFF+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   r  r  r   )r4   r   r   powerr   r   )r&   r   power_ats      r   test_ufunc_at_dtypes!TestDUFuncAt.test_ufunc_at_dtypesx  sI    IIbM%%bhh/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+   r  r+   r   )r4   r   r   equalr   r   )r&   r   r   equal_ats       r   test_ufunc_at_boolean"TestDUFuncAt.test_ufunc_at_boolean  sT    IIbMA
%%bhh/?+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   r  r  r   )r4   r   r   invertr   r   uint32)r&   r   	invert_ats      r   test_ufunc_at_boolean2#TestDUFuncAt.test_ufunc_at_boolean2  sY    IIb%&&ryy1	!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  se    yy|DM!QqS&!##BFF+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  st     BHHSM$>$>$@A,(B(B(DE##BFF+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  su    3(&1##BFF+{+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  sD    $$RWW-{+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  sK    ''

3
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minimumrS  r   r   r   r   astyper   r   r   zipr   rH   rI   r   )r&   dtypesr   r   r   r   indxsvalsr   rD  vr   s               r   test_ufunc_at_negative_indexes+TestDUFuncAt.test_ufunc_at_negative_indexes  sK   l+bll7.CC&&"++ryy"**bjjIE288E?+  IIa$++E2077@xxQWW=668,DA"'Q"7HK -  --e4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  sc     GGIGGI&&ryy1	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  sT    ggb$##BFF+{+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   r4  )r&   r   r5  s      r   test_ufunc_at_output_casting)TestDUFuncAt.test_ufunc_at_output_casting  sE    hhtn%%bhh/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  sW    iil##BFF+ N##J43A	* 544rn  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   ry  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   assertInrk  message)r&   r   r   ws       r   "test_ufunc_at_experimental_warning/TestDUFuncAt.test_ufunc_at_experimental_warning  s    iil##BFF+$$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   r   r(  r+  r1  r6  r=  rA  unittestexpectedFailurerG  rK  rP  rU  rc  rh  rl  rp  rt  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)TestDUFuncReduceNumPyTestsi  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-   rd   c                    > T" X5      $ r   r   r   s     r   r   :TestDUFuncReduceNumPyTests._generate_jit.<locals>.<lambda>  s	    E!Kr   c                    > T" U 5      $ r   r   r   s    r   r   r    s	    qr   c                 $   > TR                  XUS9$ Naxisinitialreduce)r   r  r  r   s      r   rq   4TestDUFuncReduceNumPyTests._generate_jit.<locals>.fn  s    ::e:@@r   )r   Nr   )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   r/  r  r   )r&   power_reducer   r   s       r   test_numpy_scalar_reduction6TestDUFuncReduceNumPyTests.test_numpy_scalar_reduction"  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_output+  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_reduction*  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_cordera       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_fordere  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_otherorderi  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_noncontigm  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+   f8r  )r4   r  viewshaper  r  s     r   5test_numpy_identityless_reduction_noncontig_unalignedPTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_noncontig_unalignedr  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\  rS  r   r'  infr   r2   )r&   
add_reduce
min_reduce
max_reducers  funcs         r   test_numpy_initial_reduction7TestDUFuncReduceNumPyTests.test_numpy_initial_reductiony  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   rs  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   r'  )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   )rE  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   )rE  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   rS  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    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>.foo  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   rZ  r   r  exc_msgr  r&   s	       r   _check3TestDUFuncReduce._check_reduce_axis.<locals>._check  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  rD  r   r  r  r  s   `` `   @@@@r   _check_reduce_axis#TestDUFuncReduce._check_reduce_axis  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_reduce/  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_reduce4  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_reduce8  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_dtype@  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_reduceD  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_initialI  s-    /!<VD5#>r   c                 j    [        S5      " [        5      nU R                  U[        R                  S9  g )Nr  r   r#  r6   s     r   &test_add_reduce_no_initial_or_identity7TestDUFuncReduce.test_add_reduce_no_initial_or_identityN  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>.fooV  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_inputS  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>.fooa      <<<--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$ r0  r  r1  s     r   r  6TestDUFuncReduce.test_dufunc_invalid_axis.<locals>.fooo  r3  r   r  rF   r   r-   )r  r  )r   r5  )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   r6  r  rs  r7   s         @r   test_dufunc_invalid_axis)TestDUFuncReduce.test_dufunc_invalid_axisl  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  r  r  r  r  r   r$  r'  r,  r7  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S rSrg)TestDUFuncPicklingi  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   )rx  rebuilts    r   r  %TestDUFuncPickling.check.<locals>.foo  s    1:r   iA  )pickledumpsloadsr;   assertIsInstancer   )r&   identresult_typebufr  r  rD  s         @r   checkTestDUFuncPickling.check  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   rJ  3TestDUFuncPickling.test_unrestricted.<locals>.ident      Ir   rK  )r   rM  r   r4   integerr&   rJ  s     r   test_unrestricted$TestDUFuncPickling.test_unrestricted  s/    		 
	 	

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

5e
,r   r   N)r{   r|   r}   r~   rM  rX  r]  r   r   r   r   r@  r@    s    .$9-r   r@  __main__)!r	  rF  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@  r{   mainr   r   r   <module>rg     s         ! 9@ @  ! -!cI("3"3 cIZ~M8 ~MBd. d.NCx CL-(*;*; -D zMMO r   