o
    8ήc                     @   s  d dl mZmZm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 d dlmZ d dlmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZ d dlZd	Zd
Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dddZ'dd Z(dd Z)dd Z*dd  Z+d!d" Z,d#d$ Z-d%d& Z.d'd( Z/d)d* Z0d+d, Z1d-d. Z2d/d0 Z3d1d2 Z4d3d4 Z5d5d6 Z6d7d8 Z7d9d: Z8d;d< Z9d=d> Z:d?d@ Z;dAdB Z<dCdD Z=dEdF Z>dGdH Z?dIdJ Z@dKdL ZAdMdN ZBdOdP ZCdQdR ZDdSdT ZEdUdV ZFdWdX ZGdYdZ ZHd[d\ ZId]d^ ZJd_d` ZKdadb ZLdcdd ZMdedf ZNdgdh ZOdidj ZPdkdl ZQdmdn ZRdodp ZSdqdr ZTdsdt ZUdudv ZVdwdx ZWdydz ZXdd{d|ZYdd}d~ZZdddZ[dddZ\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd ZcG dd deeZdG dd deZeefdkreg  dS dS )    )productcyclepermutationsN)jittypeof)types)compile_isolated)TypingErrorLoweringErrorNumbaValueError)as_dtypenumpy_version)TestCaseCompilationCache
MemoryLeakMemoryLeakMixintag
needs_blasztimedelta64[M]ztimedelta64[Y]c                 C      t | || d S Nnparoundarrdecimalsout r   E/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_array_methods.pynp_around_array      r   c                 C      t | |S r   r   valr   r   r   r   np_around_binary      r$   c                 C   
   t | S r   r   r#   r   r   r   np_around_unary      
r(   c                 C   r   r   r   roundr   r   r   r   np_round_array   r    r,   c                 C   r!   r   r*   r"   r   r   r   np_round_binary!   r%   r-   c                 C   r&   r   r*   r'   r   r   r   np_round_unary$   r)   r.   c                 C   s   |dur| j jdkrt| j||j t| j||j |S t| ||}|du rIdd }t| ttj	frDt|| j|j|| j|j}|S || |}|S )z4
    A slightly bugfixed version of np.round().
    Ncc                 S   s    |dkr| dk rt | S |S )N        r   )r   abs)argresr   r   r   fixup_signed_zero4   s   z*_fixed_np_round.<locals>.fixup_signed_zero)
dtypekind_fixed_np_roundrealimagr   r+   
isinstancecomplexcomplexfloating)r   r   r   r3   r4   r   r   r   r7   '   s   
r7   c                 C   s   | j S r   )Tr   r   r   r   array_TA   s   r?   c                 C      |   S r   )	transposer>   r   r   r   array_transposeD      rB   c                 C   r@   r   copyr>   r   r   r   
array_copyG   rC   rF   c                 C   r&   r   )r   rE   r>   r   r   r   np_copyJ   r)   rG   c                 C   r&   r   )r   asfortranarrayr>   r   r   r   np_asfortranarrayM   r)   rI   c                 C   r&   r   )r   ascontiguousarrayr>   r   r   r   np_ascontiguousarrayP   r)   rK   c                 C   
   |  |S r   view)r   newtyper   r   r   
array_viewS   r)   rP   c                 C   rL   r   take)r   indicesr   r   r   
array_takeV   r)   rT   c                 C   s   | j ||dS NaxisrQ   )r   rS   rW   r   r   r   array_take_kwsY      rX   c                 C   r&   r   r   arange)arg0r   r   r   np_arange_1\   r)   r]   c                 C   r!   r   rZ   )r\   arg1r   r   r   np_arange_2_   r%   r_   c                 C      t | ||S r   rZ   )r\   r^   arg2r   r   r   np_arange_3b   rY   rb   c                 C      t | |||S r   rZ   )r\   r^   ra   arg3r   r   r   np_arange_4e      re   c                 C      t j| |dS N)stoprZ   )r\   ri   r   r   r   np_arange_1_stoph   rY   rj   c                 C   rg   NsteprZ   )r\   rm   r   r   r   np_arange_1_stepk   rY   rn   c                 C   rg   Nr5   rZ   )r\   r5   r   r   r   np_arange_1_dtypen   rY   rq   c                 C      t j| ||dS rk   rZ   )r\   r^   rm   r   r   r   np_arange_2_stepq   rf   rs   c                 C   rr   ro   rZ   )r\   r^   r5   r   r   r   np_arange_2_dtypet   rf   rt   c                 C   rg   )Nstartri   rZ   ru   r   r   r   np_arange_start_stopw   rY   rw   c                 C   rr   )Nrv   ri   rm   rZ   rx   r   r   r   np_arange_start_stop_stepz   rf   ry   c                 C      t j| |||dS )Nrv   ri   rm   r5   rZ   r{   r   r   r   np_arange_start_stop_step_dtype}   r    r|   c                 C   rL   r   )fill)r   r#   r   r   r   
array_fill   r)   r~   c                        fdd}|S )Nc                    
   |   S r   rM   r>   rO   r   r   rP      r)   z#make_array_view.<locals>.array_viewr   )rO   rP   r   r   r   make_array_view      r   c                 C   s   | dd  tjd S )Nr      )rN   r   float32r>   r   r   r   array_sliced_view   s   r   c                    r   )Nc                    r   r   )astyper>   r   r   r   array_astype   r)   z'make_array_astype.<locals>.array_astyper   )rO   r   r   r   r   make_array_astype   r   r   c                 C   r&   )z7
    np.frombuffer() on a Python-allocated buffer.
    r   
frombufferbr   r   r   np_frombuffer   s   
r   c                 C   s   t j| t jdS ro   )r   r   	complex64r   r   r   r   np_frombuffer_dtype   rf   r   c                 C   s   t j| ddS )Nr   rp   r   r   r   r   r   np_frombuffer_dtype_str   rY   r   c                 C   s   t j| t jd}t |S )z6
    np.frombuffer() on a Numba-allocated buffer.
    rp   )r   onesint32r   shaper   r   r   r   np_frombuffer_allocated   s   
r   c                 C   s    t j| t jd}t j|t jdS ro   )r   r   r   r   r   r   r   r   r   np_frombuffer_allocated_dtype   s   r   c                 C   s   | |u | |ufS r   r   ar   r   r   r   identity_usecase   rf   r   c                 C   r@   r   )nonzeror   r   r   r   array_nonzero   rC   r   c                 C   r&   r   )r   r   r   r   r   r   
np_nonzero   r)   r   c                 C   r&   r   r   where)r/   r   r   r   
np_where_1   r)   r   c                 C   r`   r   r   )r/   xyr   r   r   
np_where_3   rY   r   c                 C   r@   r   )itemr   r   r   r   
array_item   rC   r   c                 C   s   |  | d S r   )itemset)r   vr   r   r   array_itemset   rY   r   c                 G   
   | j | S r   sumr   argsr   r   r   	array_sum   r)   r   c                 C      | j |dS rU   r   r   rW   r   r   r   array_sum_axis_kws   r%   r   c                 C   r   ro   r   )r   r5   r   r   r   array_sum_dtype_kws   r%   r   c                 C   s   | j ||dS )NrW   r5   r   )r   r5   rW   r   r   r   array_sum_axis_dtype_kws   rY   r   c                 C      |  ||S r   r   )r   a1a2r   r   r   array_sum_axis_dtype_pos   r%   r   c                 C   sN   t j| dd}t | d}t | |}| jdd}t j| dd}|||||fS )Nr   rV         )r   r   )r   rW   r   r   r/   der   r   r   array_sum_const_multi   s   r   c                 C      | j ddS )Nr   rV   r   r   r   r   r   array_sum_const_axis_neg_one   s   r   c                 G   r   r   cumsumr   r   r   r   array_cumsum   r)   r   c                 C   r   rU   r   r   r   r   r   array_cumsum_kws   r%   r   c                 C   r&   r   )r   r8   r   r   r   r   
array_real   r)   r   c                 C   r&   r   )r   r9   r   r   r   r   
array_imag   r)   r   c                 C   r`   r   r   clipr   a_mina_maxr   r   r   np_clip_no_out   rY   r   c                 C   rc   r   r   r   r   r   r   r   r   r   np_clip   rf   r   c                 C   rz   Nr   r   r   r   r   r   np_clip_kwargs   r    r   c                 C   s   |  |||S r   r   r   r   r   r   
array_clip   rY   r   c                 C   s   | j |||dS r   r   r   r   r   r   array_clip_kwargs   rf   r   c                 C   r   r   r   r   r   r   r   array_clip_no_out   r%   r   c                 C   r@   r   )conjr   r   r   r   
array_conj   rC   r   c                 C   r@   r   )	conjugater   r   r   r   array_conjugate  rC   r   c                 C   r&   r   )r   uniquer   r   r   r   	np_unique  r)   r   c                 C   rL   r   dotr   r   r   r   	array_dot  r)   r   c                 C   s   |  | |S r   r   r   r   r   r   array_dot_chain  rf   r   c                 C   rg   ro   r   r   )nr5   r   r   r   
array_ctor  rY   r   c                       sB  e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejfd d!Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z d8d9 Z!d:d; Z"d<d= Z#d>d? Z$d@dA Z%dBdC Z&dDdE Z'dFdG Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTdU Z/dVdW Z0dXdY Z1dZd[ Z2d\d] Z3d^d_ Z4d`da Z5dbdc Z6ddde Z7dfdg Z8dhdi Z9djdk Z:dldm Z;dndo Z<dpdq Z=drds Z>dtdu Z?dvdw Z@dxdy ZAdzd{ ZBd|d} ZCd~d ZDdd ZEdd ZFdd ZGeHdd ZIdd ZJ  ZKS )TestArrayMethodszA
    Test various array methods and array-related functions.
    c                    s   t t|   t | _d S r   )superr   setUpr   ccacheself	__class__r   r   r     s   zTestArrayMethods.setUpc                 C   s  g d}dd |D }dd |D }t jt jt jt jt jf}|||||g}|}t||D ]1\}	}
t||	t jf}|j}dD ]}|
D ]}|dkrK|d9 }t	||}|||}| 
|| qAq=q,|}t||D ] \}	}
t||	f}|j}|
D ]}t	|}||}| 
|| qtqed S )Ng      g      g      g            ?g      @      @g      @c                 S   s   g | ]}|d  qS )      ?      r   .0r   r   r   r   
<listcomp>      z7TestArrayMethods.check_round_scalar.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   )intr   r   r   r   r     r   )   r   r   r   
   )r   float64r   r   r   
complex128zipr   entry_pointr7   assertPreciseEqual)r   unary_pyfuncbinary_pyfuncbase_valuescomplex_values
int_valuesargtypes	argvaluespyfunctyvaluescrescfuncr   r   expectedgotr   r   r   check_round_scalar  s@   

z#TestArrayMethods.check_round_scalarc                 C      |  tt d S r   )r
  r.   r-   r   r   r   r   test_round_scalar8  rf   z"TestArrayMethods.test_round_scalarc                 C   r  r   )r
  r(   r$   r   r   r   r   test_around_scalar;  rf   z#TestArrayMethods.test_around_scalarc                    sh   fdd  fdd}t g d}tjtjf}|||| tjtjf}||||d    d S )Nc           	         s   | t|}t| t|}| }t|||    | |||    tj	||  
t}| |||dd   W d    n1 sJw   Y   t|jd d S )Nr   zinvalid output shape)r   r   r   
zeros_likerE   r7   memory_leak_setupmemory_leak_teardowntestingassert_allcloseassertRaises
ValueErrorassertEqualstr	exception)	r  r  intyouttyr   r   r   pyoutraisesr   r   r   check_round?  s   z7TestArrayMethods.check_round_array.<locals>.check_roundc              
      s   t | |D ]?\}}tt|ddtjt|ddf}|j} |j|||d  |j|||d t|tjsC |j|d ||d q	 qd S )Nr   Ar   r   r   )r   r   r   Arrayr   r   r:   Integer)r  outtypesr  r  r  r  r  )r  r  r   r   check_typesO  s   z7TestArrayMethods.check_round_array.<locals>.check_typesr   r   )r   arrayr   r   r   r   r   disable_leak_check)r   r  r!  r  r  r   )r  r  r   r   check_round_array>  s   z"TestArrayMethods.check_round_arrayc                 C      |  t d S r   )r$  r,   r   r   r   r   test_round_arrayj  rY   z!TestArrayMethods.test_round_arrayc                 C   r%  r   )r$  r   r   r   r   r   test_around_arraym  rY   z"TestArrayMethods.test_around_arrayc                    sF  fdd  fdd} fdd} fdd} fd	d
} fdd} fdd}t dt jfdt jfg}t dt jfdt jfg}t dt jfdt jfg}	tdkrd|}
|}|}|}n|}
|}|}|}t jdt jd}||t d ||t j ||t j ||t j ||t j ||| ||| |
|t j |	d}||t j ||t j ||t j ||| |
|| |
|t j t jdt jd	dj
}t dj
d d dd d df }tdkr|}n|}||t j ||t j ||t j ||t j ||| ||| ||t j ||t j t jdt jdd d d }||t j ||t j |||	 ||t j ||t j ||t j ||| ||| t jdgt jd	d}||t j ||t j |||	 ||t j ||t j ||t j ||| ||| t dg}||t j   d S ) Nc                    &   t |} j|t| f}|| S r   )r   r   compiler   r   r   r5   r  r  r   r   r   runr     
z-TestArrayMethods.test_array_view.<locals>.runc                    s6   |  |}   | |}|| ~  d S r   )rN   r  r   r  r   r5   r  r	  r+  r   r   r   checkv  s   

z/TestArrayMethods.test_array_view.<locals>.checkc                    sJ    t} | | W d    n1 sw   Y  t|jd d S )Nz"new type not compatible with array)r  r  r  r  r  )r   r5   r  r.  r   r   	check_err}  s   z3TestArrayMethods.test_array_view.<locals>.check_errc                       d} t}t||  W d    n1 sw   Y  t|j|  t} | | W d    n1 s;w   Y  t|j| d S )NzJTo change to a dtype of a different size, the last axis must be contiguousr  r  r   r  r  r  r   r5   msgr  r.  r   r   check_err_noncontig_last_axis     zGTestArrayMethods.test_array_view.<locals>.check_err_noncontig_last_axisc                    r1  )NzOChanging the dtype of a 0d array is only supported if the itemsize is unchangedr2  r3  r.  r   r   check_err_0d  r6  z6TestArrayMethods.test_array_view.<locals>.check_err_0dc                    r1  )NzZWhen changing to a smaller dtype, its size must be a divisor of the size of original dtyper2  r3  r.  r   r   check_err_smaller_dtype  r6  zATestArrayMethods.test_array_view.<locals>.check_err_smaller_dtypec                    r1  )NzuWhen changing to a larger dtype, its size must be a divisor of the total size in bytes of the last axis of the array.r2  r3  r.  r   r   check_err_larger_dtype  s   z@TestArrayMethods.test_array_view.<locals>.check_err_larger_dtyper   r   ur   r   r   )r         rp   int16r      r   r         *   r   abcdef)r   r5   int8r=  r   r[   r   r   r   reshaper=   zerosuint64r   uint32int64r"  r#  )r   r/  r0  r5  r7  r8  r9  dt1dt2dt3check_error_larger_dtcheck_error_smaller_dtcheck_error_noncontigcheck_error_0dr   f_arrnot_f_or_c_arrcheck_maybe_errorr   r.  r   test_array_viewp  s   




 







z TestArrayMethods.test_array_viewc                 C   sd   t }| j|tjdd f}|j}tjddgtjd}|	tj}||}||}| 
|| dS )zX
        Test .view() on A layout array but has contiguous innermost dimension.
        Nr   rA  rp   )r   r   r)  r   uint8r   r   r"  r   rN   r  )r   r  r  r  origbytearyexpectr	  r   r   r   test_array_sliced_view  s   z'TestArrayMethods.test_array_sliced_viewc                    s  fdd  fdd}t jdt jd}||t d ||t j ||t j ||t j ||d t jdt jdd	j}||t j t jd
t jdd d d }||t j	 t jd
t jd}d|j
_||t j t dt jfg} }||| W d    n1 sw   Y  dt|j d} }tdddd }|| W d    n1 sw   Y  dt|j d S )Nc                    r(  r   )r   r   r)  r   r   r*  r   r   r   r+    r,  z/TestArrayMethods.test_array_astype.<locals>.runc                    s,   |  |jdd} | |}|| d S )Nr  order)r   rE   r   r-  r.  r   r   r/  "  s   
z1TestArrayMethods.test_array_astype.<locals>.checkr<  rp   r=  r   r>  rB  rA  Fr   z#cannot convert from int32 to RecordTnopythonc                 S   s   t dg|  d S Nr   )r   r"  r   rp   r   r   r   fooE  s   z/TestArrayMethods.test_array_astype.<locals>.fooz5array.astype if dtype is a string it must be constant)r   r[   rE  r5   r   r   r   rF  r=   rH  flags	writeableassertTypingErrorassertInr  r  r   )r   r/  r   dtr  unicode_valr`  r   r.  r   test_array_astype  s>   




z"TestArrayMethods.test_array_astypec                    s    fdd fdd}t td}|| |t| |t| |td tdd}||   t	}t d W d    n1 sRw   Y  
d	t|j d S )
Nc                       j  t| f}|| S r   r   r)  r   r   )bufr  r  r   r   r   r+  M     
z1TestArrayMethods.check_np_frombuffer.<locals>.runc                    sv   t | } | }  | }|| ~t  t | |d  ~t  t | |   d S r_  )sysgetrefcountr  r   gccollectr  r  )rj  
old_refcntr  r	  r  r+  r   r   r   r/  P  s   
z3TestArrayMethods.check_np_frombuffer.<locals>.checkrB     )r   r   s   xxxz.buffer size must be a multiple of element size)	bytearrayrangebytes
memoryviewr   r[   rF  r#  r  r  r  r  r  )r   r  r/  r   r  r   rr  r   check_np_frombufferL  s    z$TestArrayMethods.check_np_frombufferc                 C   r%  r   )rx  r   r   r   r   r   test_np_frombufferp  rY   z#TestArrayMethods.test_np_frombufferc                 C   r%  r   )rx  r   r   r   r   r   test_np_frombuffer_dtypes  rY   z)TestArrayMethods.test_np_frombuffer_dtypec                 C   r%  r   )rx  r   r   r   r   r   test_np_frombuffer_dtype_strv  rY   z-TestArrayMethods.test_np_frombuffer_dtype_strc                 C   st   t dddd }| t}|ttdd W d    n1 s"w   Y  t|j}| d| | d| d S )	NTr]  c                 S   s   t j| |d d S ro   r   )rj  re  r   r   r   funcz     zETestArrayMethods.test_np_frombuffer_dtype_non_const_str.<locals>.funcrB  r   zNo matchz7frombuffer(bytearray(uint8, 1d, C), dtype=unicode_type))r   r  r	   rt  ru  r  r  rd  )r   r|  r  excstrr   r   r   &test_np_frombuffer_dtype_non_const_stry  s   

z7TestArrayMethods.test_np_frombuffer_dtype_non_const_strc                    s   dd   fdd}|d}|| || d || dj || dd d d  || d || dj || dd d d  td	g d
}|| d S )Nc                 S   s   | j j|j jkS r   )ctypesdatar   r   r   r   is_same  rf   z=TestArrayMethods.check_layout_dependent_func.<locals>.is_samec                    sJ   t t| f}| }|| }||  ||  ||  d S r   )r   r   r   r   r  )r   r  r  r	  r  r  r   r   r   	check_arr  s
   
z?TestArrayMethods.check_layout_dependent_func.<locals>.check_arrr<  r>  rA  rA  r   r   r   r   )rF  r=   r   r"  )r   r  facr  r   r   r  r   check_layout_dependent_func  s   z,TestArrayMethods.check_layout_dependent_funcc                 C   r%  r   )r  rB   r   r   r   r   test_array_transpose  rY   z%TestArrayMethods.test_array_transposec                 C   r%  r   )r  r?   r   r   r   r   test_array_T  rY   zTestArrayMethods.test_array_Tc                 C   r%  r   )r  rF   r   r   r   r   test_array_copy  rY   z TestArrayMethods.test_array_copyc                 C   r%  r   )r  rG   r   r   r   r   test_np_copy  rY   zTestArrayMethods.test_np_copyc                    s<    fdd}dddt dt ddfD ]}|| qd S )Nc                    s2   t  t| f} | }|| }|| d S r   )r   r   r   r   )r   r  r  r	  rk  r   r   check_scalar  s   
zETestArrayMethods.check_ascontiguousarray_scalar.<locals>.check_scalarrC  g      E@y              E@T)r   r   r   )r   r  r  r   r   rk  r   check_ascontiguousarray_scalar  s    
z/TestArrayMethods.check_ascontiguousarray_scalarc                 C      |  t | t d S r   )r  rI   r  r   r   r   r   test_np_asfortranarray     
z'TestArrayMethods.test_np_asfortranarrayc                 C   r  r   )r  rK   r  r   r   r   r   test_np_ascontiguousarray  r  z*TestArrayMethods.test_np_ascontiguousarrayc                    s:    fdd fdd}|d |d |d d S )Nc                    rh  r   ri  )r   r  rk  r   r   r+    rl  z;TestArrayMethods.check_np_frombuffer_allocated.<locals>.runc                    s     | }| } || d S r   r   )r   r  r	  rr  r   r   r/       z=TestArrayMethods.check_np_frombuffer_allocated.<locals>.check)rB  r@  r   r   r   r   )r   r  r/  r   rr  r   check_np_frombuffer_allocated  s
   z.TestArrayMethods.check_np_frombuffer_allocatedc                 C   r%  r   )r  r   r   r   r   r   test_np_frombuffer_allocated  rY   z-TestArrayMethods.test_np_frombuffer_allocatedc                 C   r%  r   )r  r   r   r   r   r   test_np_frombuffer_allocated2  rY   z.TestArrayMethods.test_np_frombuffer_allocated2c                    s  dd } fdd}t g d}|| t g d}|| |d}|| ||d ||dj ||dd d d	  ||d
 ||d
j ||d
d d d	  ddtdfD ]}t |gd}|| qft g d}|| d S )Nc                 S   8   t jd t j| }d||dk < td||dk< |S NrC  r0   g333333?nangffffff?r   randomseedfloatNr   r   r   r   r    
   z+TestArrayMethods.check_nonzero.<locals>.facc                    s<   t  t| f} | }dd |D }|| | d S )Nc                 S   s   g | ]}|  qS r   rD   )r   r   r   r   r   r     r   zETestArrayMethods.check_nonzero.<locals>.check_arr.<locals>.<listcomp>r   r   r   r   )r   r  r  rk  r   r   r    s   z1TestArrayMethods.check_nonzero.<locals>.check_arrr   r   r   r   r  r<  r>  rA  r  r0   r   r  r   )Hello world)r   r=  bool_rF  r=   r  r"  )r   r  r  r  r   r   r   rk  r   check_nonzero  s&   
zTestArrayMethods.check_nonzeroc                 C   r%  r   )r  r   r   r   r   r   test_array_nonzero  rY   z#TestArrayMethods.test_array_nonzeroc                 C   r%  r   )r  r   r   r   r   r   test_np_nonzero  rY   z TestArrayMethods.test_np_nonzeroc                 C   r%  r   )r  r   r   r   r   r   test_np_where_1  rY   z TestArrayMethods.test_np_where_1c                    s  t dd }tg dtjtjtjtjtjtjg tj	
d d fdd	} fdd	}tg d
}|| tg d}|| |d}|| ||d ||dj ||dd d d  ||d ||dj ||dd d d  ||ddd ||djdd ||dd d d dd ddtdfD ]}t|gd}|| qdD ]}|| qd S )Nc                 S   r  r  r  r  r   r   r   r    r  z-TestArrayMethods.test_np_where_3.<locals>.facCFr  rC  Fc                    s   t j  |dkr%t j|  d |d}t j|  d |d}| j|d} nt j|  d td}t j|  d td}|d |d tt| t|t|f}| ||}|	| ||}
|| d S )NFr   )r5   r\  r   r[  r   	   )r   r  shuffler  rE   nextr}   r   r   r   r   )r   layoutr   r   r  r  r	  _typeslayoutsr  r   r   r   r    s   

z3TestArrayMethods.test_np_where_3.<locals>.check_arrc                    sr   d}d}t j   d d} d d}tt| t|t|f}| ||}|| ||}|| d S )Nr   r   r   r   )r   r  r  r   r   r   r   )scalr   r   r  r  r	  )r  r  r   r   r   
check_scal  s   z4TestArrayMethods.test_np_where_3.<locals>.check_scalr  r  r<  r>  rA  r  r  )r  r0   r   r  r   )r   r   TFr   y                F)r   r   r   r   rJ  r   r   r   r   r  r  r=  r  rF  r=   r  r"  )r   r  r  r  r   r   r   r   r  r   test_np_where_3  s<   

z TestArrayMethods.test_np_where_3c                    s   t tdd  fdd}fdd}| D ]$}|dkddf}|| |dk tjd	f}|| |dkdd
f}|| qd S )NTr]  c                    s    |  } |  } || d S r   r  )r   r  r	  r  r  r   r   r   check_ok<  r  zGTestArrayMethods.test_np_where_3_broadcast_x_y_scalar.<locals>.check_okc                  3   sb    t ddd}  j|  | V  | dddV  | jddddV  | dddd d d V  d S )	Nr      rA  r   r  r[  r   )r   linspacer  r  rF  r   r   r   r   a_variationsA  s   zKTestArrayMethods.test_np_where_3_broadcast_x_y_scalar.<locals>.a_variationsr   r   y      ?      @F)r   r   r   r  )r   r  r  r   paramsr   r  r   $test_np_where_3_broadcast_x_y_scalar8  s   

z5TestArrayMethods.test_np_where_3_broadcast_x_y_scalarc           	         sr   t tdd  fdd}dd }dd }| D ]}| D ]}t|}||k}|||f}|| q!qd S )	NTr]  c                    sV   | \}}}|||} |||} || |||} |||} || d S r   r  )r   	conditionr   r   r  r	  r  r   r   r  W  s   
zJTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.check_okc                  s   sb    t ddd} | V  | d V  t | V  | d d d V  t dddddd	d
 V  d S )Nr  r   g?r   r   <   r   r                 ?)r   r[   rF  rH   r  r   r   r   r   array_permutationsc  s   
"zTTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.array_permutationsc                   s   s&    dV  dV  t jV  dV  dV  d S )Nr   g333333@Ty       @      @)r   r  r   r   r   r   scalar_permutationsk  s   
zUTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.scalar_permutations)r   r   r   mean)	r   r  r  r  r   r   x_meanr  r  r   r  r   'test_np_where_3_broadcast_x_or_y_scalarS  s   




z8TestArrayMethods.test_np_where_3_broadcast_x_or_y_scalarc                    s   t dd dd f}|D ]2tdd  fdd}|d |d	 |d
 |d |d |td
d
 |td qd S )Nc                 S   s   t | dS )Nr   rZ   r  r   r   r   <lambda>}      z4TestArrayMethods.test_arange_1_arg.<locals>.<lambda>c                 S   s   t jdtdt| dS )N   r   rl   )r   r[   maxr1   r  r   r   r   r  ~  s    Tr]  c                    s"   | } | }t j|| d S r   r   r  r  )r\   r  r	  r  r  r   r   r    s   z4TestArrayMethods.test_arange_1_arg.<locals>.check_okr   r   r   g      @)r]   r   r;   r   rE  )r   all_pyfuncsr  r   r  r   test_arange_1_argy  s   z"TestArrayMethods.test_arange_1_argc                 C   s0  dd }t tttdd dd f}|D ]F}tdd|}|dd	|| |d
d|| |dd|| |dd|| |tddtdd|| |tddtdd|| |dd || qt}tdd|}|d	tj|| |dtj	|| |dtj
|| |tdtj
|| |dd || |tdd || d S )Nc                 S   s&   || |}|| |}t j|| d S r   r  )r\   r^   r  r  r  r	  r   r   r   r    s   

z4TestArrayMethods.test_arange_2_arg.<locals>.check_okc                 S   s   t | |dS )Nr   rZ   r   r   r   r   r   r        z4TestArrayMethods.test_arange_2_arg.<locals>.<lambda>c                 S   s   t jd|| dS )NrA  rl   rZ   r  r   r   r   r    s    Tr]  r   r   r         ?r   r          @r   r  r   )r_   rw   rj   rn   r   r;   rq   r   r   r   r   r   rE  )r   r  r  r  r  r   r   r   test_arange_2_arg  s2   	z"TestArrayMethods.test_arange_2_argc                    s  t jdo
t jdkd fdd	}tttfD ]}tdd|}|dd	d
|| |ddd|| |ddd|| |ddd|| |dd
d|| |dtddtd
d
|| |ddd || |dd d || |t	
dt	
d	t	
d
|| |t	
dt	d	t	d
|| t	j
}||d|d	|d
||d |t	d|d	|d
||d qt}tdd|}|d
d	t	j|| |ddt	j|| |ddt	j|| |dt	dt	j|| |d
dd || |t	
dt	d	d ||d d S )Nwin32l        Fc                    sB   || ||}|| ||}t j|| s |j|j d S d S r   )r   r  r  r  r5   )r\   r^   ra   r  r  check_dtyper  r	  r   	windows64r   r   r    s   z4TestArrayMethods.test_arange_3_arg.<locals>.check_okTr]  r   r   r   r  r   r   r  r  r  r   rA  皙?   r  r?  r   r  r  )rm  platform
startswithmaxsizerb   rs   ry   r   r;   r   rE  r=  r   rJ  rt   r   r   r   )r   r  r  r  i8r   r  r   test_arange_3_arg  s2   
""""z"TestArrayMethods.test_arange_3_argc                    s   t tfD ]Stdd  fdd}|dddtj |dd	d
tj |dddtj |dddd  |dddtj |dtddtddtj |d
dd d  |d
d d d  qd S )NTr]  c                    s.   | |||} | |||}t j|| d S r   r  )r\   r^   ra   rd   r  r	  r  r   r   r    s   z4TestArrayMethods.test_arange_4_arg.<locals>.check_okr   r   r   r  r   r   r  r  r  r   rA  r  r  )	re   r|   r   r   r   r   r   r   r;   )r   r  r   r  r   test_arange_4_arg  s   z"TestArrayMethods.test_arange_4_argc           	      C   s  |    dd dd dd g}dd dd g}|D ]"}| t}tdd|}|d	 W d    n1 s6w   Y  q|D ]#}| t}tdd|}|d	d
 W d    n1 s\w   Y  q>t}tdd|}||fD ]N}dtd	dfdfD ]A}ttf}| |.}t	
  t	d ||  W d    n1 sw   Y  | dt|j W d    n1 sw   Y  q{qod S )Nc                 S      t j| dS rh   rZ   r  r   r   r   r    r  z5TestArrayMethods.test_arange_throws.<locals>.<lambda>c                 S   r  rk   rZ   r  r   r   r   r    r  c                 S   r  ro   rZ   r  r   r   r   r    r  c                 S   rg   )N)ri   rm   rZ   r  r   r   r   r    r  c                 S   rg   )N)ri   r5   rZ   r  r   r   r   r    r  Tr]  rA  r  r   r   )r   rA  r   ignorezMaximum allowed size exceeded)r#  r  r	   r   rb   r   r=  ZeroDivisionErrorr  warningscatch_warningssimplefilterrd  r  r  )	r   bad_funcs_1bad_funcs_2r  r  r  finputspermitted_errorsr   r   r   test_arange_throws  sJ   



z#TestArrayMethods.test_arange_throwsc                 C   s0   t dddd }d}| |||| d S )NTr]  c                 S   s   t dd|  | S )Nr   r   rZ   rl   r   r   r   r`    r}  z2TestArrayMethods.test_arange_accuracy.<locals>.foog[R֯?)r   r   py_func)r   r`  r   r   r   r   test_arange_accuracy  s   
z%TestArrayMethods.test_arange_accuracyc                    s   t tdd  fdd} fdd}  |tdg |tdgg |td |td |td |td	d
g |tg  d S )NTr]  c                    s    | } | } || d S r   r  )r2   r  r	  r  r   r   r  %  r  z,TestArrayMethods.test_item.<locals>.check_okc                    sH    t} |  W d    n1 sw   Y  dt|j d S )Nz>item(): can only convert an array of size 1 to a Python scalarr  r  rd  r  r  )r2   r  r  r   r   r   r0  *  s   
z-TestArrayMethods.test_item.<locals>.check_errr                 ?r   rA  )r   r   r#  r   r   r   r"  r  r   r  r0  r   r  r   	test_item!  s   zTestArrayMethods.test_itemc                    s   t tdd  fdd} fdd}  |tdgd |td	ggd |tdd |td
dg |tg  d S )NTr]  c                    s4   |   }|   }||  || || d S r   )rE   r   )r   r   r  r	  r  r   r   r  A  s
   

z/TestArrayMethods.test_itemset.<locals>.check_okc                    sJ    t} | d W d    n1 sw   Y  dt|j d S )NrC  z/itemset(): can only write to an array of size 1r  )r   r  r  r   r   r0  H  s   z0TestArrayMethods.test_itemset.<locals>.check_errr   rC  r  r   rA  )r   r   r#  r   r   r   r"  r  r   r  r   test_itemset=  s   zTestArrayMethods.test_itemsetc              
   C   s   t }tdd|}tjtjtjtjtjtjtj	tj
tjg	}dd |D }|D ]*}|D ]%}| d|j | |||| W d   n1 sJw   Y  q*q&dS )zK test sum over a whole range of dtypes, no axis or dtype parameter
        Tr]  c                 S   2   g | ]}t d |t d|t d|d gqS r  r  r   r   r   r   )r  r   r   r   	arr_dtyper   r   r   r   `      

z-TestArrayMethods.test_sum.<locals>.<listcomp>zTest np.sum with {} input N)r   r   r   r   r   rJ  r   r   r   rI  rH  timedelta64subTestformatr5   r   )r   r  r  
all_dtypesall_test_arraysarr_listr   r   r   r   test_sumY  s    zTestArrayMethods.test_sumc                 C   s   t }tdd|}tjtjtjtjtjtjt	g}dd |D }|D ]=}|D ]8}dD ]3}|t
|jd kr5q)| d|j | |||d|||d W d	   n1 sWw   Y  q)q%q!d	S )
z< test sum with axis parameter over a whole range of dtypes  Tr]  c                 S   r  r  r   r  r   r   r   r   q  r  z7TestArrayMethods.test_sum_axis_kws1.<locals>.<listcomp>r   r   rA  r   #Testing np.sum(axis) with {} input rV   N)r   r   r   r   r   rJ  rH  r   r   TIMEDELTA_Mlenr   r  r  r5   r   )r   r  r  r  r  r  r   rW   r   r   r   test_sum_axis_kws1k  s0   
z#TestArrayMethods.test_sum_axis_kws1c                 C   s"  t }tdd|}tjtjg}tdtjtdtjtdtjtttti}dd |D }|D ]Z}|D ]U}dD ]P}|t	|j
d	 krHq<| d
|j3 |||d}	|||d}
t|
tjrw| |	||j |
||j  n| |	|
 W d   n1 sw   Y  q<q8q4dS )a    testing uint32 and int32 separately

        uint32 and int32 must be tested separately because Numpy's current
        behaviour is different in 64bits Windows (accumulates as int32)
        and 64bits Linux (accumulates as int64), while Numba has decided to always
        accumulate as int64, when the OS is 64bits. No testing has been done
        for behaviours in 32 bits platforms.
        Tr]  r   rI  rJ  c                 S   r  r  r   r  r   r   r   r     r  z7TestArrayMethods.test_sum_axis_kws2.<locals>.<listcomp>r	  r   r
  rV   N)r   r   r   r   rI  r5   rJ  rH  r  r  r   r  r  r:   ndarrayr   r   r  )r   r  r  r  
out_dtypesr  r  r   rW   npy_res	numba_resr   r   r   test_sum_axis_kws2  s@   	z#TestArrayMethods.test_sum_axis_kws2c           
      C   sp  t }tdd|}tjtjtjtjtjtjtj	tj
tg	}dd |D }tdtjgtdtjtjgtdtjtjtjgtdtjtjtjtjgtd	tjtjtjgtd
tjtjgtdtj	tj
gtdtj
gttttgi	}|D ]9}|D ]4}||j D ],}d|j|}	| |	 | |||d|||d W d   n1 sw   Y  qqq|dS )z< test sum with dtype parameter over a whole range of dtypes Tr]  c                 S   r  r  r   r  r   r   r   r     r  z7TestArrayMethods.test_sum_dtype_kws.<locals>.<listcomp>r   r   rJ  r   rI  rH  r   r   z*Testing np.sum with {} input and {} outputrp   N)r   r   r   r   r   rJ  r   rI  rH  r   r   r  r5   r  r  r   )
r   r  r  r  r  r  r  r   	out_dtypesubtest_strr   r   r   test_sum_dtype_kws  sB   


z#TestArrayMethods.test_sum_dtype_kwsc                 C   s  t }tdd|}tjtjtjtjtjtjtj	tj
tg	}dd |D }tdtjgtdtjtjgtdtjtjtjgtdtjtjtjtjgtd	tjtjtjgtd
tjtjgtdtj	tj
gtdtj
gttttgttttgi
}|D ]N}|D ]I}||j D ]A}dD ]<}	|	t|jd krqd|j|}
| |
 |||	|d}|||	|d}| || W d   n1 sw   Y  qqqqdS )zF test sum with axis and dtype parameters over a whole range of dtypes Tr]  c                 S   r  r  r   r  r   r   r   r     r  z<TestArrayMethods.test_sum_axis_dtype_kws.<locals>.<listcomp>r   r   rJ  r   rI  rH  r   r   r	  r   z+Testing np.sum with {} input and {} output r   N)r   r   r   r   r   rJ  r   rI  rH  r   r   r  r5   TIMEDELTA_Yr  r   r  r  r   )r   r  r  r  r  r  r  r   r  rW   r  py_resnb_resr   r   r   test_sum_axis_dtype_kws  sL   
z(TestArrayMethods.test_sum_axis_dtype_kwsc                 C   s^   t }tdd|}tj}td}| ||d|||d| | ||d|||d| dS )zC testing that axis and dtype inputs work when passed as positional Tr]  r  r   rA  N)r   r   r   r   r   r   )r   r  r  r5   r   r   r   r   test_sum_axis_dtype_pos_arg  s   


z,TestArrayMethods.test_sum_axis_dtype_pos_argc                 C   st   t }tdd|}td}| ||dd||dd t}tdd|}td}| ||dd||dd d S )NTr]  g      $@r   rV   r   )r   r   r   r[   r   r   r   r  r  r   r   r   r   test_sum_1d_kws  s   

 z TestArrayMethods.test_sum_1d_kwsc                 C   sX   t }tdd|}td}d}| |||||| d}| |||||| d S )NTr]  )r   r   r   r  r  r?  r   rA  )r   r   r   r   r   )r   r  r  r   rW   r   r   r   test_sum_const  s   
zTestArrayMethods.test_sum_constc                 C   s   |    t}tdd|}td}td}| t ||d W d    n1 s,w   Y  | t ||d W d    n1 sFw   Y  | t ||d W d    d S 1 saw   Y  d S )NTr]  r  r   r   rA  r   r   )r#  r   r   r   r   r  r  r   r  r  r   r   r   r   r   test_sum_exceptions  s   

"z$TestArrayMethods.test_sum_exceptionsc                 C   s   |    tdddd }td}| |||| td}| |||| td}| t}|| W d    n1 sFw   Y  d}| |t	|j
 | t}|| W d    n1 skw   Y  | d	t	|j
 d S )
NTr]  c                 S   r   )Nr  rV   r   r>   r   r   r   r`  "  s   z5TestArrayMethods.test_sum_const_negative.<locals>.foo)r   rA  r   r   )r   rA  r   )r   rA  z"'axis' entry (-1) is out of boundszout of bounds)r#  r   r   r   r   r  r  r   rd  r  r  r  )r   r`  r   r  errmsgr   r   r   test_sum_const_negative  s"   




z(TestArrayMethods.test_sum_const_negativec                 C   s   t }tdd|}td}| |||| | t ||d W d    n1 s-w   Y  t}tdd|}| t ||dd W d    d S 1 sRw   Y  d S )NTr]  )rA  r   r   rV   )r   r   r   r   r   r  r	   r   r  r   r   r   test_cumsum6  s   
"zTestArrayMethods.test_cumsumc              	      s  t tdd  fdd}g }|d |d |d |d |tg d	 |tjg d
g dgdd |tg d
g dgg |tddggddggddgggg |g d	 |d
 |d |d tg d}tjtjtjfD ]}tj	d|dj
dt|d}|D ]}||| qqtj	d|dj
dt|d}|j}|| d t|t| d |g| d gg}|D ]}	t  ||	 W d    n1 sw   Y  qЈt  |dg W d    n	1 sw   Y  t tddt}
|
|dd W d    n	1 s'w   Y  t tddt}
|
|ddd W d    n	1 sKw   Y    d S )NTr]  c                    sD   | |} | |} || t|dr |j|jk d S d S )Nr\  )r   hasattrr  r\  )r   indr  r	  r  r   r   r/  I  s   


z)TestArrayMethods.test_take.<locals>.checkr   r      r  )r   r   r   r&  r   r   r   r   )r&  r   r   r  r[  r   rA  )r'  )r&  r   rA  ))r   )r   r(  ))r&  )r   )rA  r  rs  rp   r  333333?rV   )rT   r   appendr   r"  r   r   rJ  r   r[   rF  r  sizer  
IndexErrorr	   rX   r#  )r   r/  test_indicesr  re  r  r%  szAillegal_indicesr   take_kwsr   r  r   	test_takeE  sX   



 *


 zTestArrayMethods.test_takec                    s   t tdd  fdd}td}tjtjfD ]	}|||d qtddd	}tjtjfD ]	}|||d q5tjd
tjdddd	d}tjtjtjfD ]	}|||d qUd S )NTr]  c                    sT   t | }||}|d u  t | } ||}|d u  || d S r   )r   rE   
assertTruer   )r   r#   r  ervr	  grvr  r   r   r/    s   



z)TestArrayMethods.test_fill.<locals>.checkr   r   rs  r   r   0   rp   rA  )	r~   r   r   r[   r   r  rF  r   r   )r   r/  r  r   r   r  r   	test_fill  s   
zTestArrayMethods.test_fillc                 C   j   t }tdd|}tdd}tj|||| t||\}}|d|  }tj|||| d S NTr]  r  r   r  )r   r   r   r  r  assert_equalmeshgridr   r  r  r   r   zr   r   r   	test_real     zTestArrayMethods.test_realc                 C   r7  r8  )r   r   r   r  r  r9  r:  r;  r   r   r   	test_imag  r>  zTestArrayMethods.test_imagc                    s4    fdd}t j||tdd|| d S )Nc                    s   t |  S r   )r   expm1r   r   r   r|  r   r   lower_clip_result  r    zHTestArrayMethods._lower_clip_result_test_util.<locals>.lower_clip_resultTr]  )r   r  assert_almost_equalr   )r   r|  r   r   r   rB  r   rA  r   _lower_clip_result_test_util  s
   z-TestArrayMethods._lower_clip_result_test_utilc           	   
   C   sR  t tttf}ttf}tdddtddddddfD ]}|| D ]}t	dd	|}d
}| 
t| ||d d  W d    n1 sEw   Y  tj||dd ||dd  tj||d d||d d tj||dd||dd ||v rt|}t|}tj||dd|||dd| tj|| | ||dd q#qd S )Nr  r   e   (   r   rA  r   Tr]  &array_clip: must set either max or minr   r  )r   r   r   r   r   r   r   r  rF  r   assertRaisesRegexr  r  r9  
empty_likerD  )	r   has_out
has_no_outr   r  r  r4  r  coutr   r   r   	test_clip  s0   

zTestArrayMethods.test_clipc                 C   sx  t tttf}ttf}tdddddd}t	dd
|jdd}t	dd	
|jdd}dd
|d g}dd|d g}|| D ]w}tdd|}	|D ]k}
|D ]f}|
d u rz|d u rzd}| t| |	|d d  W d    n1 stw   Y  qQtj|||
||	||
| ||v rt|}t|}tj|||
|||	||
|| tj|| | |	||
| qQqMqBd S )Nr  r   rF  r   rA  r   r  r   r?  r  Tr]  rG  )r   r   r   r   r   r   r   r  rF  r[   r   r5   r   rH  r  r  r9  rI  rD  )r   rJ  rK  r   	a_min_arr	a_max_arrminsmaxsr  r  r   r   r4  r  rL  r   r   r   test_clip_array_min_max  s:   

z(TestArrayMethods.test_clip_array_min_maxc                 C   sP   t ddt}d}| t| |d dd W d    d S 1 s!w   Y  d S )NTr]  z'.*The argument "a" must be array-like.*r   r   r   r   rH  r	   r   r  r4  r   r   r   test_clip_bad_array  
   "z$TestArrayMethods.test_clip_bad_arrayc                 C   sP   t ddt}d}| t| |ddd W d    d S 1 s!w   Y  d S )NTr]  z).*The argument "a_min" must be a number.*r   r   r   rS  rT  r   r   r   test_clip_bad_min  rV  z"TestArrayMethods.test_clip_bad_minc                 C   sP   t ddt}d}| t| |ddd W d    d S 1 s!w   Y  d S )NTr]  z).*The argument "a_max" must be a number.*r   r   rS  rT  r   r   r   test_clip_bad_max	  rV  z"TestArrayMethods.test_clip_bad_maxc                 C   sT   t ddt}d}| t| |ddddd W d    d S 1 s#w   Y  d S )	NTr]  z9.*The argument "out" must be an array if it is provided.*r   r   r   r  r   rS  rT  r   r   r   test_clip_bad_out  s
   "z"TestArrayMethods.test_clip_bad_outc           	   	   C   s   |    tddt}d}tdddddd	}td
d|jdd}tdd|jdd}d|fd
|f||f|df|dfg}|D ] \}}| 	t
| |||| W d    n1 scw   Y  qHd S )NTr]  zA.*shape mismatch: objects cannot be broadcast to a single shape.*r  r   rF  r   rA  r   r  r   r   )r#  r   r   r   r  rF  r[   r   r5   rH  r  )	r   r  r4  r   rN  rO  min_maxr   r   r   r   r   test_clip_no_broadcast  s    z'TestArrayMethods.test_clip_no_broadcastc                 C   st   t tfD ]3}tdd|}tdd}tj|||| t||\}}|d|  }tj|||| qd S r8  )r   r   r   r   r  r  r9  r:  r;  r   r   r   	test_conj#  s   zTestArrayMethods.test_conjc                    s   t tdd  fdd}|tg dg dg |ttd |tddgd	d
gdd	gg |tg  d S )NTr]  c                    s   t j|  |  d S r   )r   r  r9  r   r  r   r   r/  2  s   z+TestArrayMethods.test_unique.<locals>.check)r   r   r   )r   r   r   r   g@r)  gRQ@gffffff
@)r   r   r   r"  rG  )r   r/  r   r  r   test_unique.  s    zTestArrayMethods.test_uniquec                 C   s   t }tdd|}tddd}td}tj|||||| t}tdd|}tddd}tj|||||| d S )NTr]  g      4@r   r   g      @g      0@)r   r   r   r[   rF  r  r9  r   r  r   r   r   test_array_dot:  s   
zTestArrayMethods.test_array_dotc                 C   s   t }tdd|}d}|tjf}tj|| ||  |tdf}tj|| ||  |tjf}tj|| ||  |tdf}tj|| ||  d S )NTr]  rA  r   f4)r   r   r   r   r  assert_array_equalr5   r   )r   r  r  r   r   r   r   r   test_array_ctor_with_dtype_argJ  s   

z/TestArrayMethods.test_array_ctor_with_dtype_arg)L__name__
__module____qualname____doc__r   r
  r  r  r$  r&  r'  rU  rZ  rg  rx  ry  rz  r{  r  r   r[   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r#  r1  r6  r=  r?  rD  rM  rR  rU  rW  rX  rY  r[  r\  r]  r   r^  ra  __classcell__r   r   r   r   r     s    , 0$	"C&$)'
'$
A
 
r   c                   @   s   e Zd Zdd ZdS )TestArrayComparisonsc                    s    fdd}t  tjdtjdd}|||d |||d d  d ||| d |||dd |||jd |||d d	 d d S )
Nc                    s4   t  t| t|f}|| ||| f d S r   r  )r   r   r  r  rk  r   r   r/  [  s   z1TestArrayComparisons.test_identity.<locals>.checkr   rp   )rA  r   TFrI  r   )r   r   rG  r   rF  rE   rN   r=   )r   r/  r   r   rk  r   test_identityZ  s   z"TestArrayComparisons.test_identityN)rb  rc  rd  rh  r   r   r   r   rg  X  s    rg  __main__)r   Nr   )NNN)h	itertoolsr   r   r   ro  rm  r  numpyr   numbar   r   
numba.corer   numba.core.compilerr   numba.core.errorsr	   r
   r   numba.np.numpy_supportr   r   numba.tests.supportr   r   r   r   r   r   unittestr  r  r   r$   r(   r,   r-   r.   r7   r?   rB   rF   rG   rI   rK   rP   rT   rX   r]   r_   rb   re   rj   rn   rq   rs   rt   rw   ry   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg  rb  mainr   r   r   r   <module>   s     




          Q
