
    wi{                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZmZ d dlmZmZmZ d dlZd dlmZ d dlmZ d Zd Zd	 Zd
 Zd Z G d deej                  Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d deej                  Z!e"dk    r ej#                     dS dS )    N)njit	vectorize)MemoryLeakMixinTestCase)TypingErrorNumbaNotImplementedErrorNumbaExperimentalFeatureWarning)dufunc)
from_dtypec                     | |z   S N a0a1s     p/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/numba/tests/npyufunc/test_dufunc.pypyuaddr          7N    c                     | |z
  S r   r   r   s     r   pysubr      r   r   c                     | |z  S r   r   r   s     r   pymultr      r   r   c                     | |z  S r   r   r   s     r   pydivr      s    8Or   c                     | |k     r| n|S r   r   r   s     r   pyminr   "   s    b22b r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
TestDUFuncc                 J    t          j        |t          d                    S )NT)nopython)targetoptions)r
   DUFuncdict)selfpyfuncs     r   nopython_dufunczTestDUFunc.nopython_dufunc(   s"    }V43F3F3FGGGGr   c           	         |                      t                    }|                     |j                   d|_        |                     |j                   |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                    5   |t          j	        ddd          t          j	        ddd                     d d d            d S # 1 swxY w Y   d S )NTFr      
      )
r'   r   assertFalse_frozen
assertTrueassertRaises
ValueError	TypeErrornplinspacer%   duadds     r   test_frozenzTestDUFunc.test_frozen+   s\   $$V,,'''&&&z** 	" 	"!EM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	< 	<E"+a"%%r{1Qr':':;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s$   0BBB)5C++C/2C/c                     |                      t                    }|                     t          dd           |dd                     d S )Nr)   r+   )r'   r   assertEqualr4   s     r   test_scalarzTestDUFunc.test_scalar5   sC    $$V,,!eeAajj11111r   c                    |                      t                    t          fd            }t          j        ddd          }|d d         }|dd          }t          j        d          } ||||           t          j                            ||z   |           |                    d          }|                    d          }t          j        d          } ||||           t          j                            ||z   |           |d d         }	t          j        d          }
 |||	|
           t          j                            ||	z   |
           d S )Nc                 "     | ||           d S r   r   )r   r   o0r5   s      r   npmaddz(TestDUFunc.test_npm_call.<locals>.npmadd<   s    E"b"r   r   ffffff?   r*   r+      rA   )	r'   r   r   r2   r3   zerostestingassert_array_equalreshape)r%   r=   XX0X1out0Y0Y1out1Y2out2r5   s              @r   test_npm_callzTestDUFunc.test_npm_call9   sR   $$V,,		 	 	 	 
	K#b!!ssVrssVx||r2t

%%b2gt444ZZZZxr2t

%%b2gt444Vxr2t

%%b2gt44444r   c                 z   |                      t                    t          fd            }t          j        ddd          }|d d         }|dd          } |||          }t          j                            ||z   |           |                    d          }|                    d          } |||          }t          j                            ||z   |           |d d         }	 |||	          }
t          j                            ||	z   |
            |dd	          }|                     |d
           d S )Nc                      | |          S r   r   )r   r   r5   s     r   r=   z8TestDUFunc.test_npm_call_implicit_output.<locals>.npmaddR   s    5R== r   r   r>   r?   r*   r@   rA         ?       @g      @)	r'   r   r   r2   r3   rC   rD   rE   r8   )r%   r=   rF   rG   rH   rI   rJ   rK   rL   rM   rN   out3r5   s               @r   test_npm_call_implicit_outputz(TestDUFunc.test_npm_call_implicit_outputO   sA   $$V,,		! 	! 	! 	! 
	!K#b!!ssVrssVvb"~~

%%b2gt444ZZZZvb"~~

%%b2gt444Vvb"~~

%%b2gt444vb}}r"""""r   c                 t   |                      t                    }|                     |j        d           |                     |j        d           |                     |j        |j        |j        z              |                     |j        d           |                     |j        g            |                     |j        d             |dd           |                     |j        d           |                     |j        t          |j                             | 
                    |j                   d S )Nr+   r)   r   )r'   r   r8   ninnoutnargsntypestypesidentitylenassertIsNone	signaturer4   s     r   test_ufunc_propszTestDUFunc.test_ufunc_propsd   s   $$V,,A&&&Q'''ei%*&<===q)))b)))...aq)))s5;'7'7888%/*****r   c                 H   |                      t                     dd           j        j        j        j        j        d}fd}|                                D ]?\  }}t           ||                    }| 	                    | |            d|            @d S )Nr)   r+   )rW   rX   rY   r\   r_   c                 n    d|  d}i }t          t          j        |          di|           |d         S )Nz>
                def impl():
                    return duadd.z
            r5   impl)exectextwrapdedent)attrfnlr5   s      r   get_attr_fnz4TestDUFunc.test_ufunc_props_jit.<locals>.get_attr_fn}   sN    "&  B A$$w&6:::V9r   z!Attribute differs from original: )
r'   r   rW   rX   rY   r\   r_   itemsr   r8   )r%   
attributesrj   rg   valcfuncr5   s         @r   test_ufunc_props_jitzTestDUFunc.test_ufunc_props_jitq   s    $$V,,a"Y#j${ #(.#(?4 4
	 	 	 	 	 $))++ 	I 	IID#T**++ES%%''GGGI I I I	I 	Ir   N)
__name__
__module____qualname__r'   r6   r9   rO   rU   r`   ro   r   r   r   r   r   &   s        H H H< < <2 2 25 5 5,# # #*+ + +I I I I Ir   r   c                   B    e Zd Zej        dd            Zd Zd Zd ZdS )TestDUFuncMethodsBaseNc                 "   |dv sJ |dk    rYj         dk    r t          |          fd          n t          |          fd          t          dfd	            }|S |d	k    rKj         dk    rt          d
           t          |          fd          t          dfd	            }|S j         dk    r t          |          fd          n t          |          fd          t          fd            }|S )N)reducereduceatatrv   r+   r\   c                      | |          S r   r   abufuncs     r   <lambda>z5TestDUFuncMethodsBase._generate_jit.<locals>.<lambda>       a r   c                      |           S r   r   r|   r~   s    r   r   z5TestDUFuncMethodsBase._generate_jit.<locals>.<lambda>       UU1XX r   r   c                 4                         | ||          S Naxisinitialrv   arrayr   r   vecs      r   rh   z/TestDUFuncMethodsBase._generate_jit.<locals>.fn   s    zz%dGzDDDr   rw   ,reduceat only supported for binary functionsc                      | |          S r   r   r{   s     r   r   z5TestDUFuncMethodsBase._generate_jit.<locals>.<lambda>       EE!QKK r   c                 6                         | ||||          S r   rw   )r   indicesr   dtypeoutr   s        r   rh   z/TestDUFuncMethodsBase._generate_jit.<locals>.fn   s    ||E7D%EEEr   c                      | |          S r   r   r{   s     r   r   z5TestDUFuncMethodsBase._generate_jit.<locals>.<lambda>   r   r   c                      |           S r   r   r   s    r   r   z5TestDUFuncMethodsBase._generate_jit.<locals>.<lambda>   r   r   c                       j         |  S r   rx   )argsr   s    r   rh   z/TestDUFuncMethodsBase._generate_jit.<locals>.fn   s    svt}$r   r   N)r   NN)rW   r   r   r0   )r%   r~   kindr\   rh   r   s    `   @r   _generate_jitz#TestDUFuncMethodsBase._generate_jit   s   333338yA~~2i2223K3K3K3KLL2i2223E3E3E3EFFE E E E E TEIZyA~~ !OPPP.)X.../G/G/G/GHHCF F F F F TFIyA~~2i2223K3K3K3KLL2i2223E3E3E3EFF% % % % T%Ir   c                 2    |                      |d|          S )Nrv   ry   r   r%   r~   r\   s      r   _reducezTestDUFuncMethodsBase._reduce   s    !!%H!EEEr   c                 2    |                      |d|          S )Nrw   ry   r   r   s      r   	_reduceatzTestDUFuncMethodsBase._reduceat   s    !!%h!GGGr   c                 .    |                      |d          S )Nrx   r   )r%   r~   s     r   _atzTestDUFuncMethodsBase._at   s    !!%...r   r   )	rp   rq   rr   	functoolscacher   r   r   r   r   r   r   rt   rt      sh        _   _@F F FH H H/ / / / /r   rt   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zej        d             Zd Zd Zd Zd Zej        d             Zd Zd Zd Zd Zd ZdS )TestDUFuncAtc                     |                                 }|                                 } |j        |g|R    ||g|R   |                     ||           d S r   )copyrx   assertPreciseEqual)r%   rh   r~   r|   r   expectedgots          r   _compare_outputzTestDUFuncAt._compare_output   se    6688ffhh!D!!!!
3#.....r   c                 j   t          j        dt                    }|                     t           j                  }|                     t           j                  } t                      d           t          fd            }|                     |t           j        |g dd           d}| 	                    t          |          5   ||                                g dd            d d d            n# 1 swxY w Y   |                     |t           j        |                                g d           t          j        g d	          }|                     |t           j        |                                g d|           d
}| 	                    t          |          5   ||                                g dg d           d d d            n# 1 swxY w Y   |                     t                    5   ||                                g dddgdg           d d d            d S # 1 swxY w Y   d S )Nr*   r   c                 *    t          j        |           S r   r2   negativer|   s    r   r   z8TestDUFuncAt.test_numpy_ufunc_at_basic.<locals>.<lambda>   s    R[^^ r   c                 2                         | ||          S r   r   )r|   r   r}   negative_vecs      r   negative_jit_2z>TestDUFuncAt.test_numpy_ufunc_at_basic.<locals>.negative_jit_2   s    ??1gq111r   r+   rA   r+   r)   zsecond operand needed for ufunc)r+   rA      d   r   r   z+second operand provided when ufunc is unaryr)   r+   r   r+   )r2   arangeintr   addr   r   r   r   assertRaisesRegexr   r   r   r/   )r%   r|   add_atnegative_atr   err_msgr}   r   s          @r   test_numpy_ufunc_at_basicz&TestDUFuncAt.test_numpy_ufunc_at_basic   s    Ib$$$"&!!hhr{++"y{{#;#;<<		2 	2 	2 	2 
	2 	VRVQ			1=== 4##K99 	. 	.F16688YYY---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	["+qvvxxKKKH___%%VRVQVVXXyyy!DDD @##K99 	; 	;N16688YYY			:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; {++ 	5 	5F16688YYY!Q444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s6   "C55C9<C9 $GGG5&H((H,/H,c           
      R   t           j        d         }t           j        t           j        t           j        f}|D ]W}	 t          t          j        |                     n# t          $ r Y 2w xY w|D ]}t          j        d|          }t          j	        t          j        dt           j
                  t          j        ddt           j
                  g          }|j                            d          }|                     |          } ||||           t          j        |          }	|t           j        u rdx|	d	<   |	d<   |	d	xx         d|t           j        u r|n| z  z  cc<   |	dxx         d|t           j        u r|n| z  z  cc<   Y|                     ||	           d S )
NComplexr*   r            y              ?r)   )r2   	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_loopz%TestDUFuncAt.test_ufunc_at_inner_loop   s   L+	&"+r{3! 	O 	OH28H--....+      O OGBh///~rwq'@'@'@')wr1BG'D'D'D'F G GR((88E??D%(((<??BK''022HQK(1++QKKK1"&uf#MMKKKQKKK2%26//v#NNKKKKO 	8,,,,,s   !A
A+*A+c           
         t          j        dt                    }|                     t           j                  }|                     |t           j        |t          d           t          j        dt                               d S )NrA   r   )r2   rB   r   r   r   r   slicer   r%   arrr   s      r   test_ufunc_at_ellipsisz#TestDUFuncAt.test_ufunc_at_ellipsis  so     hq$$$"&!!VRVS%++WQc222	4 	4 	4 	4 	4r   c                     t          j        dt           j                  }t          j        d          }|                     t           j                  } |||           t          j        |g dk              sJ d S )NrA   r   )r   r   r   r   r   )r2   r   int32r   r   r   all)r%   r   r   rx   s       r   test_ufunc_at_negativez#TestDUFuncAt.test_ufunc_at_negative  so    garx(((y||XXbk""
3vc11112222222r   c                 l   t          j        dt           j                  }t          j        dt                    }d|d<   d|d<   d|dd <   t          j        dt                    }|                     t           j                  } ||||           |d         |                                k    sJ d S )	Ni   r   r*   r   rA   r)   r   i    )r2   rB   int16floatr   r   sum)r%   r   r}   r|   r   s        r   test_ufunc_at_largez TestDUFuncAt.test_ufunc_at_large  s    (4rx000HT'''!!$%%HQe$$$"&!!q'1tquuwwr   c                 >   t          j        d          }t          j        d          }|                     t           j                  }t          j        t          |          t           j                  } ||||           |d         t          |          k    sJ d S )Nr*   i r   r   )r2   rB   r   r   r   r]   uint8)r%   r   valuesr   indexs        r   test_cast_index_fastpathz%TestDUFuncAt.test_cast_index_fastpath!  s    hrll"&!!VBH555sE6"""1vV$$$$$$r   c           	         t          j        d          t          j        d          t          j        d          df}|D ]}t          j        d          }t          j        t          j        d          d          }|                     t           j                  } ||||           t           j        	                    |t          j
        |d|z                       d S )Nr)   r   rR   i  r+   )r2   r   float64rB   repeatr   r   r   rC   rD   	full_like)r%   r   r   r   r   r   s         r   #test_ufunc_at_scalar_value_fastpathz0TestDUFuncAt.test_ufunc_at_scalar_value_fastpath*  s    '!**bgbkk2:b>>2> 	M 	ME(4..CIbiooq11EXXbf%%FF3u%%%J))#r|CU/K/KLLLL	M 	Mr   c                 .
   t          j        d                              dd          }t          j        g dg dg dg          }|                     t           j                  } ||t          d           t          j        g d          f|           |                     |t          j        g dg dg d	g                     t          j        d
                              ddd          }t          j        g d          } ||t          d           t          d           t          j        g d          f|           |                     |t          j        g dg dg dgg dg dg dgg dg dg dgg                     t          j        d                              dd          }t          j        g dg dg dg          } ||t          j        g d          t          d           f|           |                     |t          j        g dg dg dg                     t          j        d
                              ddd          }t          j        g d          } ||t          d           t          j        g d          t          d           f|           |                     |t          j        g dg dg dgg dg dg dgg dg dg dgg                     t          j        d                              dd          }t          j        g d          } ||dt          j        g d          f|           |                     |t          j        g dg d g d!g                     t          j        d
                              ddd          }t          j        g d          } ||t          j        g d          dt          d           f|           |                     |t          j        g dg d g d!gg d"g d#g d$gg d%g d&g d'gg                     t          j        d
                              ddd          }t          j        g d          }|                     t           j                  } ||t          d           t          d           t          d           f|           |                     |t          j        g d(g d)g dgg d*g d+g dgg d%g d,g dgg                     d S )-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      r?   )   r  io  )|      iF  r   r   r   rA   )r         )   r   ic  )r        )r        )v      i@  )r        )r
        )r   r   i.  )g      i1  )m      i7  )p      i:  )y      iC  )	r2   r   rE   r   r   r   r   asarrayr   )r%   r|   r}   r   s       r   test_ufunc_at_multiDz!TestDUFuncAt.test_ufunc_at_multiD4  s   IaLL  A&&HoooHII"&!!q5;;
999 5 56:::28]]MMM===9$; $; 	< 	< 	< IbMM!!!Q**H___%%q5;;dRZ			-B-BCQGGG28"/--"/--"/--"1 #0--"0.."0.."2 #1.."0.."0.."2
!3$4 $4 	5 	5 	5 IaLL  A&&HoooHIIq2:iii((%++6:::2:YY9$; $; 	< 	< 	< IbMM!!!Q**H___%%q5;;
999 5 5uT{{CQGGG2:"-++"1//"1//"3 #/,,"1//"1//"3 #/,,"1//"1//"3
!4$5 $5 	6 	6 	6 IaLL  A&&H___%%q1bj++,a0002:]]IIIyyy1$3 $3 	4 	4 	4 IbMM!!!Q**H___%%q2:iii((!U4[[91===2:"-++"-++"-++"/ #2//"/--"/--"1 #2//"/--"/--"1
!2$3 $3 	4 	4 	4 IbMM!!!Q**H___%%"&!!q5;;dU4[[91===2:"1//"1//"1//"3 #2//"1//"1//"3 #2//"1//"1//"3
!4$5 $5 	6 	6 	6 	6 	6r   c                 j   t          j        d          }|                     t           j                  } ||dd           |                     |t          j        d                     |                     t                    5   ||dd           d d d            n# 1 swxY w Y   t          j        d          } ||dd           |                     |t          j        g d                     |                     t                    5   ||g d           d d d            d S # 1 swxY w Y   d S )Nr   r   r)   r   )r)   r)   r+   )	r2   r   r   r   r   r/   r   r   r0   )r%   r|   r   r}   s       r   test_ufunc_at_0DzTestDUFuncAt.test_ufunc_at_0D  s   HQKK"&!!q"a28A;;///{++ 	 	F1aOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 IaLLq!Q28III#6#6777 z** 	 	F1b!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   BB!$B!D((D,/D,c                     t          j        d          }|                     t           j                  } ||g dd           |                     |t          j        g d                     d S )Nr*   )r)   r+   r   r+   g      @)
r   r)   i>  .   r   rA   r   r  r  r   )r2   r   r   powerr   r   )r%   r|   power_ats      r   test_ufunc_at_dtypesz!TestDUFuncAt.test_ufunc_at_dtypes  sg    IbMM88BH%%LLL#&&&28,N,N,N#O#OPPPPPr   c                     t          j        d          }|dz  dk    }|                     t           j                  } |||g d           |                     |t          j        g d                     d S )Nr*   r+   r   )r   r+   r   r   r  )
r)   r)   r)   r   r)   rA   r)   r  r)   r   )r2   r   r   equalr   r   )r%   r|   r   equal_ats       r   test_ufunc_at_booleanz"TestDUFuncAt.test_ufunc_at_boolean  st    IbMMA
88BH%%E???+++28,J,J,J#K#KLLLLLr   c                     t          j        dd          }|                     t           j                  } ||g d           |                     |t          j        g dt           j                             d S )Nr*   u4r   r   )
r   r)   r+   r   r   l    r   r  r  r   )r2   r   r   invertr   r   uint32)r%   r|   	invert_ats      r   test_ufunc_at_boolean2z#TestDUFuncAt.test_ufunc_at_boolean2  s    Ib%%%HHRY''		!YYY28 -6 -6 -6=?Y$H $H $H 	I 	I 	I 	I 	Ir   c                 
   t          j        d          }|d d d f         d d ddf         }|                     t           j                  } ||ddgd           |                     |t          j        d                     d S )Nr   r   r)   r   )r2   r   r   r   r   )r%   origr|   r   s       r   test_ufunc_at_advancedz#TestDUFuncAt.test_ufunc_at_advanced  s    y||DM!!!QqS&!"&!!q1a&!bill33333r   c                 z   t          j        g dt          j        d                                                    }t          j        g dt          j        d                                                    }|                     t           j                  } |||d           |                     |g d           d S )Nr   ir)   r+   r   r   fr   )r)   r  r   r   )r2   r   r   newbyteorderr   r   r   )r%   r   r   r   s       r   test_ufunc_at_advanced_2z%TestDUFuncAt.test_ufunc_at_advanced_2  s     BHSMM$>$>$@$@AA,,,(B(B(D(DEE"&!!vua   55555r   c                 b   t          j        ddgt                    }|                     t           j                  }|                     t                    5   ||ddgd           d d d            n# 1 swxY w Y   |                     |t          j        ddgt                               d S )Nr|   r)   r   r   )r2   r   objectr   r   r/   r   r   )r%   r   r   s      r   test_ufunc_at_advanced_3z%TestDUFuncAt.test_ufunc_at_advanced_3  s    3(&111"&!!{++ 	& 	&F6Aq61%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&#q(H(H(HIIIIIs   A33A7:A7c                     |                      t          j                  }|                     t                    5   |t          j        d          dg           d d d            d S # 1 swxY w Y   d S )Nr*   r)   )r   r2   modfr/   r   r   )r%   modf_ats     r   test_ufunc_at_advanced_4z%TestDUFuncAt.test_ufunc_at_advanced_4  s    ((27##{++ 	( 	(GBIbMMA3'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s    A''A+.A+c                     |                      t          j                  }t          j        g d          } ||dgd           |                     |t          j        g d                     d S )Nr   r   )r   r2   maximumr   r   )r%   
maximum_atr|   s      r   test_ufunc_at_advanced_5z%TestDUFuncAt.test_ufunc_at_advanced_5  sh    XXbj))
HYYY
1qc128III#6#677777r   c                 x   t           j        d         t           j        d         z   }t           j        t           j        t           j        t           j        t           j        f}|D ]W}|dv r	 t          t          j        |                     n# t          $ r Y 7w xY w|D ]}t          j
        dd                              |          }t          j        g d                              t           j                  }t          j        g d|j                  }|                                }t          ||          D ]\  }	}
 |||	         |
          ||	<   |                     |          } ||||           t           j                            ||           t          j        |g dk              sJ Yd S )	N
AllIntegerFloat)er   r*   )r   r)   r   r+   )r)   rA   r+   r*   r   )r2   r   r   r   divideminimumrS  r   r   r   r   astyper   r   r   zipr   rC   rD   r   )r%   dtypesr   r   r~   r|   indxsvalsr   rF  vr   s               r   test_ufunc_at_negative_indexesz+TestDUFuncAt.test_ufunc_at_negative_indexes  s   l+bl7.CC&"+ry"*bjI 	7 	7E28E??+++++      7 7Ia$$++E220077@@xQW===6688t,, 8 8DAq"'%Q"7"7HQKK88E??E4(((
--a:::ve~~~56666667	7 	7s   *!B
BBc                    t          j        d          }t          j        d          }|                     t           j                  }d}|                     t
          |          5   ||dg|           d d d            d S # 1 swxY w Y   d S )N)r+   r+   r+   )r)   r+   r+   z1does not support ufunc with non-trivial signaturer   )r2   r   r   matmulr   r   )r%   r|   r}   	matmul_atr   s        r    test_ufunc_at_not_none_signaturez-TestDUFuncAt.test_ufunc_at_not_none_signature  s     GIGIHHRY''	E##K99 	! 	!Ia!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   %BBBc                    t          j        dt                    }|                     t           j                  }|                     t                    5   ||ddgddg           d d d            d S # 1 swxY w Y   d S )Nr*   r   r   r)   )r2   r   strr   r   r/   r   r   s      r   test_ufunc_at_no_loop_for_opz)TestDUFuncAt.test_ufunc_at_no_loop_for_op  s    gb$$$"&!!{++ 	( 	(F3AA'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A44A8;A8c                     t          j        dg          }|                     t           j                  } ||dgdg           |d         dk    sJ d S )Nr   r   )r2   r   r   r9  )r%   r   r:  s      r   test_ufunc_at_output_castingz)TestDUFuncAt.test_ufunc_at_output_casting  sQ    htnn88BH%%qcA31v{{{{{{r   c                     t          j        d          }|                     t           j                  }d}|                     t
          |          5   ||ddgg d           d d d            d S # 1 swxY w Y   d S )NrA   z=operands could not be broadcast together with remapped shapesr   r)   r   )r2   r   r   r   r   r0   )r%   r   r   msgs       r   test_ufunc_at_broadcast_failurez,TestDUFuncAt.test_ufunc_at_broadcast_failure  s    ill"&!! N##J44 	+ 	+F3A			***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A00A47A4c                    t          j        d          }t          d             }|                     t	          |j                  d           |                    |ddg           |                     t	          |j                  d           d S )NrA   c                     | dz   S )Nr)   r   )xs    r   incz/TestDUFuncAt.test_ufunc_at_dynamic.<locals>.inc  s    q5Lr   r   r)   r   )r2   r   r   r8   r]   r[   rx   assertGreater)r%   r   rr  s      r   test_ufunc_at_dynamicz"TestDUFuncAt.test_ufunc_at_dynamic  s    ill		 	 
	 	SY+++ 	sQF3sy>>1-----r   c                    t          j        d          }|                     t           j                  }t	          j        d          5 }t	          j        dt                      ||ddgd           d d d            n# 1 swxY w Y   |                     t          |          d           | 
                    dt          |d         j                             d S )	NrA   T)recordalwaysr   r   r*   z ufunc.at feature is experimental)r2   r   r   r   warningscatch_warningssimplefilterr	   rs  r]   assertInrh  message)r%   r   r   ws       r   "test_ufunc_at_experimental_warningz/TestDUFuncAt.test_ufunc_at_experimental_warning)  s    ill"&!!$D111 	$Q!(,KLLLF3A###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 	3q661%%%8#adl:K:KLLLLLs   	*A??BBN)rp   rq   rr   r   r   r   r   r   r   r   r   r0  r2  r7  r;  rA  rD  unittestexpectedFailurerJ  rM  rQ  rU  rb  rf  ri  rk  rn  rt  r~  r   r   r   r   r      s       / / /"5 "5 "5H- - -44 4 43 3 3
 
 
% % %M M MS6 S6 S6j  $Q Q QM M MI I I4 4 4 6 6 6J J J( ( (8 8 87 7 78 ! ! !( ( (  + + +. . .
M 
M 
M 
M 
Mr   r   c                   r    e Zd ZddZej        d             Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd ZdS )TestDUFuncReduceNumPyTestsNc                     j         dk    r t          |          fd          n t          |          fd          t          dfd	            }|S )Nr+   ry   c                      | |          S r   r   r{   s     r   r   z:TestDUFuncReduceNumPyTests._generate_jit.<locals>.<lambda><  r   r   c                      |           S r   r   r   s    r   r   z:TestDUFuncReduceNumPyTests._generate_jit.<locals>.<lambda>>  s    q r   r   c                 4                         | ||          S r   r   r   s      r   rh   z4TestDUFuncReduceNumPyTests._generate_jit.<locals>.fn@  s    ::e$:@@@r   r   )rW   r   r   )r%   r~   r\   rh   r   s    `  @r   r   z(TestDUFuncReduceNumPyTests._generate_jit:  s    9>>.)X.../G/G/G/GHHCC.)X.../A/A/A/ABBC		A 	A 	A 	A 	A 
	A	r   c                     |                      t          j                  }t          j                            d          } |d          }|                     ||           d S )Nr   )r   r2   r5  rv   r   )r%   power_reducer   r   s       r   test_numpy_scalar_reductionz6TestDUFuncReduceNumPyTests.test_numpy_scalar_reductionE  sU     ))"(338??1%%l1oo#.....r   c                 |   d }|                      t          j        d          }d|d<   d|d<    | ||d           d            | ||d	          g d
            | ||d          g d            | ||d          ddg            | ||d          g d
g dg dg            | ||d          g dg d
g            | ||d          g dg dg            | ||d          |           d|d<   d|d<    | ||d           d            | ||d	          g d
            | ||d          g d            | ||d          ddg            | ||d          g dg d
g dg            | ||d          g d
g dg            | ||d          g dg dg            | ||d          |           d|d<   d|d<    | ||d           d            | ||d	          g d            | ||d          g d            | ||d          ddg            | ||d          g dg dg dg            | ||d          g dg dg            | ||d          g dg dg            | ||d          |           d S )Nc                 F    t           j                            | |           d S r   )r2   rC   assert_equal)r|   r}   s     r   compare_outputzOTestDUFuncReduceNumPyTests.check_identityless_reduction.<locals>.compare_outputN  s"     J##Aq)))))r   reorderablery   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   r2   r[  )r%   r|   r  minimum_reduces       r   check_identityless_reductionz7TestDUFuncReduceNumPyTests.check_identityless_reductionM  sv   	* 	* 	* ++BJ+OO
 #'
~~ad333Q777~~af555|||DDD~~af555yyyAAA~~af5551v>>>~~aa000$lllLLLA	C 	C 	C~~aa000$lll3	5 	5 	5~~aa000!		999-	/ 	/ 	/~~ab1111555#'
~~ad333Q777~~af555|||DDD~~af555yyyAAA~~af5551v>>>~~aa000$lllLLLA	C 	C 	C~~aa000$lll3	5 	5 	5~~aa000!		999-	/ 	/ 	/~~ab1111555#'
~~ad333Q777~~af555|||DDD~~af555yyyAAA~~af5551v>>>~~aa000$lllLLLA	C 	C 	C~~aa000$lll3	5 	5 	5~~aa000!		999-	/ 	/ 	/~~ab111155555r   c                 \    t          j        dd          }|                     |           d S )Nr+   r   r   Corderr2   emptyr  r%   r|   s     r   (test_numpy_identityless_reduction_corderzCTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_corder  0    HYc***))!,,,,,r   c                 \    t          j        dd          }|                     |           d S )Nr  Fr  r  r  s     r   (test_numpy_identityless_reduction_forderzCTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_forder  r  r   c                     t          j        dd                              dd          }|                     |           d S )N)r+   r   r   r  r  r)   r+   r2   r  swapaxesr  r  s     r   ,test_numpy_identityless_reduction_otherorderzGTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_otherorder  s@    HYc***33Aq99))!,,,,,r   c                     t          j        dd                              dd          }|dd dd dd f         }|                     |           d S )N)r   rA   r   r  r  r)   r+   r  r  s     r   +test_numpy_identityless_reduction_noncontigzFTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_noncontig  s[    HYc***33Aq99abb!""abbjM))!,,,,,r   c                     t          j        dd          }|dd                              d          }d|_        |dd dd dd f         }|                     |           d S )N)i  i1r   r)   f8r  )r2   r  viewshaper  r  s     r   5test_numpy_identityless_reduction_noncontig_unalignedzPTestDUFuncReduceNumPyTests.test_numpy_identityless_reduction_noncontig_unaligned  sn    H)666abbEJJTJ""abb!""abbjM))!,,,,,r   c                    |                      t          j                  }|                      t          j                  }|                      t          j                  }|                      |t          j        g           d          d           |                      |t          j        g           t          j                  t          j                   |                      |t          j        g           t          j                   t          j                    |                      |t          j        dg          d          d           |                      |t          j        dg          d          d           |                      |t          j        dg          d          d           |                      |t          j        dg          d          d           d}||fD ]T}|                     t          |          5   |t          j        g           d            d d d            n# 1 swxY w Y   Ud S )Nr   r   g        rA   r   &zero-size array to reduction operation)
r   r2   r   r[  rS  r   r/  infr   r0   )r%   
add_reduce
min_reduce
max_reducerm  funcs         r   test_numpy_initial_reductionz7TestDUFuncReduceNumPyTests.test_numpy_initial_reduction  sR   ''//
''
33
''
33
 	

2:b>>1 E E EsKKK 	

2:b>>26 J J J "	( 	( 	(

2:b>>BF7 K K K!#	) 	) 	) 	

2:qc??A F F FJJJ

2:qc??A F F FJJJ

2:qc??A F F FJJJ

2:qc??A F F FJJJ 7, 	3 	3D''
C88 3 3RZ^^T22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3s    I  I	I	c                    t          j        d          }|                     t           j                  }t           j                            |d          } ||d          }|                     ||           |                     |j        d           d}|                     t          |          5   ||d           d d d            n# 1 swxY w Y   t          j        d          }|                     t          |          5   ||d           d d d            n# 1 swxY w Y   t           j                            |dd          } ||dd          }|                     ||           d S )	N)r   rA   r)   r  )r   r  r   )r   r   rA   r   )	r2   rB   r   true_dividerv   r   r  r   r0   )r%   r   true_divide_reducer   r   rm  s         r   'test_numpy_empty_reduction_and_identityzBTestDUFuncReduceNumPyTests.test_numpy_empty_reduction_and_identity  s   hv!//?? >((1(55  1---#...	4000 7##J44 	, 	,s++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, hy!!##J44 	, 	,s++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, >((1a(@@  1a888#.....s$   0C

CCDD"%D"c                    t          j        g dg dg          }|                     t           j                  } ||d          }|                     |t          j        g d                      ||d          }|                     |t          j        ddg                      ||d	          }|                     ||           d S )
N)       @rS   rS   )rR   g      ?g      ?r   r  )r  g      @r  r)   rS   r  r   )r2   r   r   rZ  r   r/  )r%   r|   divide_reduceress       r   *test_identityless_reduction_nonreorderablezETestDUFuncReduceNumPyTests.test_identityless_reduction_nonreorderable  s    Hooo'7'7'7899**2955mAA&&&RZ%@%@AAAmAA&&&RZc
%;%;<<<mAB'''Q'''''r   c                     d } fd}d }                      t          j        d          }                     t          j        j        d             |||dd            |||dd            |||dd            |||dd            ||g             |t          j        d          d	
                                 t          j        d          } |||dd            |||dd            |||dd            |||dd            |t          j        g t          j                              |t          j        d          d	
           d S )Nc                      | |i | d S r   r   )rH  r   kwargss      r   okz<TestDUFuncReduceNumPyTests.test_reduce_zero_axis.<locals>.ok  s    Atvr   c                 ~                         t                    5   | |i | d d d            d S # 1 swxY w Y   d S r   )r/   r0   )rH  r   r  r%   s      r   errz=TestDUFuncReduceNumPyTests.test_reduce_zero_axis.<locals>.err  s    "":.. # #4"6"""# # # # # # # # # # # # # # # # # #s   	266c                     | |t          j        ||f          d            | |t          j        ||f          d            | |t          j        |dz  |dz  |f          d            | |t          j        |dz  ||dz  f          d            | |t          j        ||dz  |dz  f          d            | |t          j        |dz  ||dz  f          d            | |t          j        |dz  |dz  |dz  |dz  |dz  f          d            | |t          j        d	||f          d
            | |t          j        d	||f          d            | |t          j        |d	|f          d            | |t          j        d	||f          d            | |t          j        d	||f          d           d S )Nr)   r  r   r+   r  r  r   r  r*   r  )r2   rB   )expectr  nms       r   tz;TestDUFuncReduceNumPyTests.test_reduce_zero_axis.<locals>.t  s+   F41a&))2222F41a&))2222F416161"566Q????F4161a1f"566Q????F41a1fa1f"566VDDDDF4161a1f"566VDDDDF4161616#$616#3 4 4:CE E E E F42q!*--F;;;;F42q!*--F;;;;F41b!*--A6666F42q!*--A6666F42q!*--A666666r   r  ry      r   r   r   r   r  r   )	r   r2   rS  r8   r\   rB   r   r   int64)r%   r  r  r  maximum_reducer  s   `     r   test_reduce_zero_axisz0TestDUFuncReduceNumPyTests.test_reduce_zero_axis  s   	 	 		# 	# 	# 	# 	#	7 	7 	7$ ++BJ+OO,d333	"nb"%%%	"na$$$	#~r1%%%	#~q!$$$NBrx''b1111 ''';;
	"j"b!!!	"j!R   	"j"a   	"j!Q
28Bbh///000
28F##"------r   r   )rp   rq   rr   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  6  s        	 	 	 	 / / /56 56 56n- - -- - -- - -- - -
- - -3 3 3:/ / /2( ( ( 8. 8. 8. 8. 8.r   r  c                   Z    e Zd ZddZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd ZdS )TestDUFuncReduceNc                    t           fd            }t          j        d          t          j        d                              dd          t          j        d                              ddd          g}|D ]U}t	          |j                  D ]>}|                    ||||          } |||||          }	|                     ||	           ?Vd S )Nc                 6                         | |||          S )N)r   r   r   r   )r|   r   r   r   r~   s       r   fooz+TestDUFuncReduce._check_reduce.<locals>.foo   s)    <<%)&+(/   1 1 1r   rA   r   r+   (   )r   r2   r   rE   rangendimpy_funcr   )
r%   r~   r   r   r  inputsr   r   r   r   s
    `        r   _check_reducezTestDUFuncReduce._check_reduce  s    		1 	1 	1 	1 
	1 IaLLIaLL  A&&IbMM!!!Q**

  	7 	7Eej)) 7 7;;udE7CCc%ug66''#66667	7 	7r   c                    	
 t           fd            
	
 fd}dj         d	t          j        d|                              ddd	          t          j        d
|          g}|D ]et          dj        dz             D ]9}t          j        t          j                  |          D ] |           :dD ] |           fd S )Nc                 4                         | |          S r   r   )r|   r   r   r~   s     r   r  z0TestDUFuncReduce._check_reduce_axis.<locals>.foo4  s    <<g<>>>r   c                  v   	                                }           }                    ||           d S # t          $ rq}                    |j        d                                        t                    5             }d d d            n# 1 swxY w Y   Y d }~d S Y d }~d S d }~ww xY w)Nr   )r  r   r0   r8   r   r   r   )	r   r   r   rY  r   r   exc_msgr  r%   s	       r   _checkz3TestDUFuncReduce._check_reduce_axis.<locals>._check8  s?   7;;ud33 c%&&''#66666  + + +  G444++KAA + +#eT**C+ + + + + + + + + + + + + + + + + + + + + + + + + + ++s9   = 
B8<B3BB3B 	 B3#B 	$B33B8zreduction operation 'z:' is not reorderable, so at most one axis may be specifiedr  r   rA   r   r+   r*   r)   )r)r   N)	r   rp   r2   r   rE   r  r  	itertoolscombinations)r%   r~   r   r   r  r  rF  r   r   r  r  s   `` `   @@@@r   _check_reduce_axisz#TestDUFuncReduce._check_reduce_axis2  sc   		? 	? 	? 	? 	? 
	?		7 		7 		7 		7 		7 		7 		7 		7 		7G5> G G G Ib&&&..q!Q77Ib&&&
  	$ 	$E1ej1n-- ( (%253D3DJJJ ( (DF5$''''( # $ $ud####$	$ 	$r   c                      t          dd          t                    }|                     |           |                     |t          j                   d S )Nint64(int64, int64)r   ry   r   )r   r   r  r  r2   r  r4   s     r   test_add_reducez TestDUFuncReduce.test_add_reduceR  sT    <	/!<<<VDD5!!!RX66666r   c                 n     t          dd          t                    }|                     |           d S )Nr  r)   ry   )r   r   r  )r%   dumuls     r   test_mul_reducez TestDUFuncReduce.test_mul_reduceW  s9    <	/!<<<VDD5!!!!!r   c                 Z    t          dd           t                    } t          dd           t                    }|                     |           |                     |t
          j                   |                     |           |                     |t
          j                   d S )Nr  ry   r   )r   r   r   r  r  r2   r  )r%   dusubdudivs      r   test_non_associative_reducez,TestDUFuncReduce.test_non_associative_reduce[  s    ?	/$???FF?	/$???FF5!!!RX6665!!!RX66666r   c                      t          dd          t                    }|                     |t          j                   d S )Nfloat64(float64, int64)r   ry   r   )r   r   r  r2   r   r4   s     r   test_reduce_dtypez"TestDUFuncReduce.test_reduce_dtypec  s@    @	3a@@@HH5
33333r   c                      t          dd          t                    }|                     |d           |                     |t          j                   d S )Nr  r  ry   r*   r  r   )r   r   r  r  r2   r  )r%   dumins     r   test_min_reducez TestDUFuncReduce.test_min_reduceg  sY    H	/-HHHOO5"---RX66666r   c                      t          dd          t                    }|                     |t          j        d           d S )Nr  r   ry   r   )r   r   r   r   r  r2   r  r4   s     r   test_add_reduce_initialz(TestDUFuncReduce.test_add_reduce_initiall  sB    <	/!<<<VDD5#>>>>>r   c                      t          d          t                    }|                     |t          j                   d S )Nr  r   r  r4   s     r   &test_add_reduce_no_initial_or_identityz7TestDUFuncReduce.test_add_reduce_no_initial_or_identityq  s;    0	/0088511111r   c                      t          dd          t                    t          fd            }d}|                     t          |          5   |d           d d d            d S # 1 swxY w Y   d S )Nr  r   ry   c                 .                         |           S r   r   )r|   r5   s    r   r  z0TestDUFuncReduce.test_invalid_input.<locals>.fooy  s    <<??"r   z-The first argument "array" must be array-liker|   )r   r   r   r   r   )r%   r  r  r5   s      @r   test_invalid_inputz#TestDUFuncReduce.test_invalid_inputv  s    @	3a@@@HH		# 	# 	# 	# 
	# B##K99 	 	CHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A))A-0A-c                 :    t          dd          t                    t          fd            }t          j        d                              ddd          }d	}|D ]:}                    ||          } |||          }|                     ||           ;d S )
Nr  r   ry   c                 2                         | |          S Nr  r   r|   r   r5   s     r   r  z7TestDUFuncReduce.test_dufunc_negative_axis.<locals>.foo      <<<---r   r  rA   r   r+   )r   r   )r   r   )r   )r)   r   )r   r   r   r2   r   rE   rv   r   )r%   r  r|   casesr   r   r   r5   s          @r   test_dufunc_negative_axisz*TestDUFuncReduce.test_dufunc_negative_axis  s    <	/!<<<VDD		. 	. 	. 	. 
	. IbMM!!!Q**7 	3 	3D||At,,H#a,,C##Hc2222	3 	3r   c                     t          dd          t                    t          fd            }t          j        d                              ddd          }d	}|D ]C}d
}|                     t          |          5   |||           d d d            n# 1 swxY w Y   Dd}|D ]A}|                     t          d          5   |||           d d d            n# 1 swxY w Y   Bd S )Nr  r   ry   c                 2                         | |          S r  r   r   s     r   r  z6TestDUFuncReduce.test_dufunc_invalid_axis.<locals>.foo  r  r   r  rA   r   r+   )r  r  )r   r  )r   r   )r   r+   zduplicate value in 'axis')r   )r   r  zInvalid axis)r   r   r   r2   r   rE   r   r0   )r%   r  r|   r  r   rm  r5   s         @r   test_dufunc_invalid_axisz)TestDUFuncReduce.test_dufunc_invalid_axis  s   <	/!<<<VDD		. 	. 	. 	. 
	. IbMM!!!Q**? 	 	D-C''
C88  At               " 	 	D''
NCC  At              	 	s$   ?BB	B	CC"	%C"	)NNr   )rp   rq   rr   r  r  r  r  r  r  r  r  r  r  r  r	  r   r   r   r  r    s        7 7 7 7($ $ $ $@7 7 7
" " "7 7 74 4 47 7 7
? ? ?
2 2 2
	 	 	3 3 3    r   r  c                   |    e Zd Zd Zd Zej        d             Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd ZdS )TestDUFuncReduceAtc                     t          |d          }|                     ||          }|                                }|                                } |j        ||fi |  |||fi | |                     ||           d S )Nr\   )getattrr   r   rw   r   )	r%   r~   r|   idxr  r\   rh   r   r   s	            r   r   z"TestDUFuncReduceAt._compare_output  s    5*--^^E8,,6688ffhhx/////
3v#.....r   c                 z   t          j        d          }t          j        g d          }|                     t           j        d          } ||||           |                     t          j        g d          |            ||||           |                     t          j        g d          |           d S )Nr   r   r   r)   r+   r   r   )r   r   r   r   )r   r   r   r  )r2   r   r/  r   r   r   )r%   r   r  r  s       r   test_reduceat_out_kwz'TestDUFuncReduceAt.test_reduceat_out_kw  s    illj&&^^BFA..

3%%%%
<<< 8 8#>>>
3%%%%
=== 9 93?????r   c           	         t          j        d                              dd          t          j        d                              ddd          t          j        d          f}t          j        g d          t          j        g d          f}d	}|D ]/}|D ]*}|D ]%}|                     t           j        |||
           &+0d S )Nr  r   r  rA   r+   r   r   r   r   r)   r+   r   r  )r)   r   r   r  )r2   r   rE   r   r/  r   r   )r%   arraysr   r   r   r  axs          r   test_reduceat_axis_kwz(TestDUFuncReduceAt.test_reduceat_axis_kw  s     IbMM!!!Q''IbMM!!!Q**GFOO
 J''J|||$$
  	F 	FE F F F FB(("(EEEEFF	F 	Fr   c                 >   t          j        d          }t          j        g d          }|                     t           j        d          }dD ]O}d| d|j         }|                     t          |          5   ||||           d d d            n# 1 swxY w Y   Pd S )Nr  r  r   )r+   r  zaxis z) is out of bounds for array of dimension )r2   r   r/  r   r   r  r   r0   )r%   r   r  add_reduceatr  rm  s         r   test_reduceat_invalid_axisz-TestDUFuncReduceAt.test_reduceat_invalid_axis  s    gfooj&&~~bfa00 	+ 	+B!2 ! !h! !C''
C88 + +S#r***+ + + + + + + + + + + + + + +	+ 	+s   7BB	B	c                 f   |                      t          j        d          }g d}g d}t          j                            ||          } |||          }|                     ||           d}d}t          j                            ||          } |||          }|                     ||           d S )Nr   rG  r   )r   r2   r   rw   r   )r%   r  r|   r  r   r   s         r    test_reduceat_cast_args_to_arrayz3TestDUFuncReduceAt.test_reduceat_cast_args_to_array  s    ~~bfa00 LLii6??1c**l1c""#... 6??1c**l1c""#.....r   c                 x    t          j        d          }g d}|                     t           j        ||           d S )Nr  )r   r   r)   rA   r+   r   r   r  )r2   r   r   r   r%   rq  r  s      r   test_reduceat_basicz&TestDUFuncReduceAt.test_reduceat_basic  s:    IaLL"""RVQ,,,,,r   c                     t          j        ddd                              dd          }g d}|                     t           j        ||           d S )Nr   r  r  r   r  )r2   r3   rE   r   r   r  s      r   test_reduceat_basic_2dz)TestDUFuncReduceAt.test_reduceat_basic_2d  sN    K2r""**1a00ooRVQ,,,,,r   c                 P   d}t          j        |          }t          j        t          t	          t          j        |dz
            t          j        |dz
            dz                                                                 }|                     t           j        ||           d S )Nr   r+   )r2   r   r   listr]  ravelr   r   )r%   Lrq  r  s       r   test_reduceat_shifting_sumz-TestDUFuncReduceAt.test_reduceat_shifting_sum  s    IaLLhtC	!a% 0 0")AE2B2BQ2FGGHHIIOOQQRVQ,,,,,r   c                    t          j        dt           j                  }t          j        dt           j                  }|                     t           j        |t          j        d          |           |                     t           j        |t          j        d          |           |                     ||           t          j        dt           j                  }d t          d          D             |dd d f<   t          j        dt           j                  }d t          d          D             |dd d f<   |                     t           j        |t          j        d          |d	           |                     t           j        |t          j        d          |d	           |                     ||           d S )
Nr   r   r  )r+   r   c                     g | ]}d S r+   r   .0rF  s     r   
<listcomp>zOTestDUFuncReduceAt.test_reduceat_int_array_reduceat_inplace.<locals>.<listcomp>       )))1Q)))r   r   c                     g | ]}d S r*  r   r+  s     r   r-  zOTestDUFuncReduceAt.test_reduceat_int_array_reduceat_inplace.<locals>.<listcomp>  r.  r   r   )r   r   )r2   r   r  r   r   r   r   r  )r%   r   r   s      r   (test_reduceat_int_array_reduceat_inplacez;TestDUFuncReduceAt.test_reduceat_int_array_reduceat_inplace  sx   garx(((garx(((RVS")A,,C@@@RVS")A,,C@@@S))) gfBH---))a)))AqqqD	gfBH---))a)))AqqqD	RVS")A,,CbIIIRVS")A,,CbIIIS)))))r   c                 f   |                      t          j        d          }dD ]}t          j        d          }t          j        d          }|r|                    t          j                  }|                     t                    5   ||ddg|           d d d            n# 1 swxY w Y   d S )Nr   )TFrA   r   r  )r   r2   r   r   r\  r   r/   r0   )r%   r  	with_castr   r   s        r    test_reduceat_out_shape_mismatchz3TestDUFuncReduceAt.test_reduceat_out_shape_mismatch  s     ~~bfa00& 		3 		3I)A,,C)A,,C - jj,,"":.. 3 3S1a&c22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3		3 		3s   B%%B)	,B)	c                 R   t          j        g d          }t          j        g d          }|                     t           j        d          }t           j                            ||          } |||          }|                     ||           |                     |j        |j                   t          j        d          }t          j	        g t           j
                  }|                     t           j        ||d           |                     t           j        ||d           dS )	z&Reduceat should work with empty arraysi4r  r   )rA   r+   r   r  r)   N)r2   r   r   r   rw   r   r8   r   r   r/  r   r   )r%   r   rq  r  r   r   r  s          r   test_reduceat_emptyz&TestDUFuncReduceAt.test_reduceat_empty  s    (2t$$HR~~bfa006??1g..l1g&&#...333 GFOOj27+++RVQ!444RVQ!44444r   c                 >   |                      t          j        d          }t          j        d          }t          j        d                              dd          }|                     t          d          5   |||           d d d            d S # 1 swxY w Y   d S )Nr   rA   r*   r+   zhave at most 1 dimension)r   r2   r   r   rE   r   r   )r%   r  r|   r  s       r   test_reduceat_error_ndim_2z-TestDUFuncReduceAt.test_reduceat_error_ndim_2(  s    ~~bfa00 IaLLimm##Aq))##K1KLL 	! 	!LC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   8BBBc                     t           d             t          fd            }t          j        d          }d}|                     t
          |          5   ||g d           d d d            d S # 1 swxY w Y   d S )Nc                 *    t          j        |           S r   r   r   s    r   negzGTestDUFuncReduceAt.test_reduceat_error_non_binary_function.<locals>.neg3  s    ;q>>!r   c                 0                         | |          S r   r   )r|   r  r;  s     r   neg_reduceatzPTestDUFuncReduceAt.test_reduceat_error_non_binary_function.<locals>.neg_reduceat7  s    <<3'''r   rA   r   r  )r   r   r2   r   r   r   )r%   r=  r|   rm  r;  s       @r   'test_reduceat_error_non_binary_functionz:TestDUFuncReduceAt.test_reduceat_error_non_binary_function1  s    		" 	" 
	" 
	( 	( 	( 	( 
	( IaLL<##K55 	' 	'LIII&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A11A58A5c                    |                      t          j        d          }|                     t          d          5   |dg d           d d d            n# 1 swxY w Y   |                     t          d          5   |t          j        d          d           d d d            n# 1 swxY w Y   |                     t          d          5   |t          j        d          g dd	
           d d d            n# 1 swxY w Y   |                     t          d          5   |t          j        d          g dd           d d d            d S # 1 swxY w Y   d S )Nr   z"array" must be array-likeabcr   z"indices" must be array-likerA   abcdzoutput must be an arrayr   r  z"axis" must be an integer)r)   r  )r   r2   r   r   r   r   )r%   r  s     r   "test_reduceat_error_argument_typesz5TestDUFuncReduceAt.test_reduceat_error_argument_types@  sR   ~~bfa00##K1MNN 	+ 	+L			***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ##K1OPP 	/ 	/L1v...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ##K1JKK 	: 	:L1yyyb9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ##K1LMM 	= 	=L1yyyt<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=sG   AAA=B((B,/B,#C==DD##EEEN)rp   rq   rr   r   r  r  r  r  r  r  r   r"  r'  r0  r3  r6  r8  r>  rB  r   r   r   r  r    s        / / /@ @ @ F F F 	+ 	+ 	+/ / /&- - -
- - -
- - -* * *$3 3 3"5 5 5 ! ! !' ' '= = = = =r   r  c                        e Zd Zd Zd Zd ZdS )TestDUFuncPicklingc                 X   t          j        |          }t          j        |           d          }|                     d|           |                     ||           t
          fd            } |d          }|                     d|           |                     ||           d S )N{   c                      |           S r   r   )rq  rebuilts    r   r  z%TestDUFuncPickling.check.<locals>.foo[  s    71::r   iA  )pickledumpsloadsr8   assertIsInstancer   )r%   identresult_typebufr  r  rH  s         @r   checkzTestDUFuncPickling.checkQ  s    l5!!,s## GCLLa   a--- 
	 	 	 	 
	 CHHa   a-----r   c                 v    t           d             }|                     |t          t          j        f           d S )Nc                     | S r   r   x1s    r   rM  z3TestDUFuncPickling.test_unrestricted.<locals>.identd      Ir   rN  )r   rP  r   r2   integerr%   rM  s     r   test_unrestrictedz$TestDUFuncPickling.test_unrestrictedc  s@    		 	 
	 	

5sBJ&7
88888r   c                 p    t          dg          d             }|                     |t                     d S )Nzfloat64(float64)c                     | S r   r   rS  s    r   rM  z1TestDUFuncPickling.test_restricted.<locals>.identk  rU  r   rV  )r   rP  r   rX  s     r   test_restrictedz"TestDUFuncPickling.test_restrictedj  sF    	&'	(	(	 	 
)	(	 	

5e
,,,,,r   N)rp   rq   rr   rP  rY  r\  r   r   r   rD  rD  P  sA        . . .$9 9 9- - - - -r   rD  __main__)$r   r  rI  re   rx  numpyr2   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   rt   r   r  r  r  rD  rp   mainr   r   r   <module>re     s                  ! ! ! ! ! ! ! ! 9 9 9 9 9 9 9 9@ @ @ @ @ @ @ @ @ @  ! ! ! ! ! ! - - - - - -        ! ! !cI cI cI cI cI("3 cI cI cIZ*/ */ */ */ */H */ */ */ZsM sM sM sM sM( sM sM sMld. d. d. d. d. d. d. d.NC C C C C, C C CLj= j= j= j= j=. j= j= j=Z- - - - -(*; - - -D zHMOOOOO r   