U
    rh!                     @  sR   d dl mZ d dlZd dlZd dlmZ d dlmZ d
ddZ	G dd	 d	eZ
dS )    )annotationsN)Base)expectnonec                 C  s*  |j d t| j kst|j |j d d | j |j d d   ksDtt| }t|j d d D ]}|dkr|t||   || 7  < qb|dkr|t||   || 9  < qb|dkrt|||  || |t|| < qb|dkrt|||  || |t|| < qb|| |t|| < qb|S )Naddmulmaxmin)	shapelenAssertionErrornpcopyZndindextuplemaximumZminimum)dataindicesupdates	reductionoutputi r   I/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/scatternd.pyscatter_nd_impl   s    ,
&
&r   c                   @  sf   e Zd ZeddddZeddddZeddddZeddd	d
ZeddddZdS )	ScatterNDNone)returnc                  C  sv  t jjddddgdgd} tjddd	d
gddddgddddgd
d	ddggddd	d
gddddgddddgd
d	ddggddddgd
d	ddgddd	d
gddddggddddgd
d	ddgddd	d
gddddgggtjd}tjdgdggtjd}tjddddgddddgddddgddddggddddgddddgd	d	d	d	gd
d
d
d
gggtjd}t|||}t| |||g|gdd d S )Nr   r   r   r   y)inputsoutputs                        Zdtyper   Ztest_scatterndr   r    name	onnxhelperZ	make_noder   arrayZfloat32Zint64r   r   noder   r   r   r   r   r   r   export_scatternd$   s6    ****	**zScatterND.export_scatterndc                  C  s|  t jjddddgdgdd} tjdd	d
dgddddgddddgdd
d	dggdd	d
dgddddgddddgdd
d	dggddddgdd
d	dgdd	d
dgddddggddddgdd
d	dgdd	d
dgddddgggtjd}tjdgdggtjd}tjddddgddddgddddgddddggddddgd	d	d	d	gd
d
d
d
gddddgggtjd}t|||dd}t| |||g|gdd d S )Nr   r   r   r   r   r   r   r    r   r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r   Ztest_scatternd_addr*   r,   r0   r   r   r   export_scatternd_addI   s8    ****	**zScatterND.export_scatternd_addc                  C  s|  t jjddddgdgdd} tjdd	d
dgddddgddddgdd
d	dggdd	d
dgddddgddddgdd
d	dggddddgdd
d	dgdd	d
dgddddggddddgdd
d	dgdd	d
dgddddgggtjd}tjdgdggtjd}tjddddgddddgddddgddddggddddgd	d	d	d	gd
d
d
d
gddddgggtjd}t|||dd}t| |||g|gdd d S )Nr   r   r   r   r   r   r3   r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r4   Ztest_scatternd_multiplyr*   r,   r0   r   r   r   export_scatternd_multiplyo   s8    ****	**z#ScatterND.export_scatternd_multiplyc                  C  s|  t jjddddgdgdd} tjdd	d
dgddddgddddgdd
d	dggdd	d
dgddddgddddgdd
d	dggddddgdd
d	dgdd	d
dgddddggddddgdd
d	dgdd	d
dgddddgggtjd}tjdgdggtjd}tjddddgddddgddddgddddggddddgd	d	d	d	gd
d
d
d
gddddgggtjd}t|||dd}t| |||g|gdd d S )Nr   r   r   r   r   r	   r3   r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r4   Ztest_scatternd_maxr*   r,   r0   r   r   r   export_scatternd_max   s8    ****	**zScatterND.export_scatternd_maxc                  C  s|  t jjddddgdgdd} tjdd	d
dgddddgddddgdd
d	dggdd	d
dgddddgddddgdd
d	dggddddgdd
d	dgdd	d
dgddddggddddgdd
d	dgdd	d
dgddddgggtjd}tjdgdggtjd}tjddddgddddgddddgddddggddddgd	d	d	d	gd
d
d
d
gddddgggtjd}t|||dd}t| |||g|gdd d S )Nr   r   r   r   r   r
   r3   r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r4   Ztest_scatternd_minr*   r,   r0   r   r   r   export_scatternd_min   s8    ****	**zScatterND.export_scatternd_minN)	__name__
__module____qualname__staticmethodr2   r5   r6   r7   r8   r   r   r   r   r   #   s   $%%%r   )r   )
__future__r   Znumpyr   r-   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r   r   r   r   r   <module>   s   
