o
    ۾i                     @   st   d dl mZmZmZ d dlZd dlZd dlmZ d dl	m
Z
 dd Zdd ZG d	d
 d
e
Zedkr8e  dS dS )    )print_functionabsolute_importdivisionN)guvectorize)TestCasec                 C   s(   t d| jd dD ]}|d | |< q	d S )Nr      rangeshape)x_ty_1t r   \/home/ubuntu/.local/lib/python3.10/site-packages/numba/tests/npyufunc/test_update_inplace.pypy_replace_2nd   s   r   c                 C   sF   t d| jd D ]}|d | |< d|d  ||< d|d  ||< qd S )Nr   r      r   )x0_tx1_tx2_tr   r   r   r   r   py_update_3   s
   r   c                   @   sB   e Zd Z		dddZdd Zdd Zd	d
 Zdd Zdd ZdS )TestUpdateInplaceTr   c                    s   dd|ffD ]X\ } fddt |jd D }dd |D }|g ||R   |g |t|gR   tt||D ]!\}\}	}
|rPtjj|	|
d| d q<| j|	|
k	 d| d	 q<qd S )
N)f8Tf4c                    s   g | ]}t d  qS )
   )npzeros).0_dtyper   r   
<listcomp>   s    z:TestUpdateInplace._run_test_for_gufunc.<locals>.<listcomp>   c                 S   s   g | ]}|  qS r   )copy)r   r   r   r   r   r       s    zinput %s)err_msg)msg)
r	   ninr   array	enumerateziptestingassert_equalassertFalseall)selfgufuncpy_funcexpect_f4_to_passzexpect_to_passinputs	ex_inputsir   ex_x_tr   r   r   _run_test_for_gufunc   s   z&TestUpdateInplace._run_test_for_gufuncc                 C   l   t dgdddt}| j|tdd t dgddddt}| |t t dgddd	dt}| |t d S )
Nvoid(f8[:], f8[:])(t),()TnopythonFr0   r   r<   writable_args)r   r   r   r7   r-   r.   r   r   r   test_update_inplace(   s(   
z%TestUpdateInplace.test_update_inplacec                 C   s@   t dgdddddt}t dgdddddt}| |t d S )Nr9   r:   Tr>   )r<   r@   cacherA   rB   r   r   r   test_update_inplace_with_cache9   s   z0TestUpdateInplace.test_update_inplace_with_cachec                 C   s(   t dgdddddt}| |t d S )Nr9   r:   Tr>   parallelr<   r@   targetrA   rB   r   r   r   test_update_inplace_parallelD   s   z.TestUpdateInplace.test_update_inplace_parallelc                 C   r8   )
Nz void(f8[:], f8[:], f8[:], f8[:])z(t),(t),(t),()Tr;   Fr=   )r   r!   r   r?   )r   r   r   )r   r   r7   rB   r   r   r   test_update_inplace_3K   s*   z'TestUpdateInplace.test_update_inplace_3c                 C   sH  |  t tdgddddt W d    n1 sw   Y  |  t tdgddddt W d    n1 s;w   Y  |  t tdgddddt W d    n1 s[w   Y  |  t tdgddddt W d    n1 s{w   Y  |  t tdgddd	d
dt W d    d S 1 sw   Y  d S )Nr9   r:   T)r   r!   r      r?   )rK   ))z_tr>   cudarG   )assertRaises
ValueErrorr   r   RuntimeError	TypeError)r-   r   r   r   test_exceptions^   sH   
"z!TestUpdateInplace.test_exceptionsN)Tr   )	__name__
__module____qualname__r7   rC   rE   rI   rJ   rS   r   r   r   r   r      s    
r   __main__)
__future__r   r   r   unittestnumpyr   numbar   numba.tests.supportr   r   r   r   rT   mainr   r   r   r   <module>   s   b