o
    wÖiæ!  ã                   @  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J ‚|j |j d d… | j |j d d …  ks"J ‚t | ¡}t |j d d… ¡D ]`}|dkrF|t|| ƒ  || 7  < q1|dkrY|t|| ƒ  || 9  < q1|dkrpt |||  || ¡|t|| ƒ< q1|dkr‡t |||  || ¡|t|| ƒ< q1|| |t|| ƒ< q1|S )NéÿÿÿÿÚaddÚmulÚmaxÚmin)ÚshapeÚlenÚnpÚcopyÚndindexÚtupleÚmaximumÚminimum)ÚdataÚindicesÚupdatesÚ	reductionÚoutputÚi© r   úb/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/scatternd.pyÚscatter_nd_impl   s   ,
&&r   c                   @  sR   e Zd Zeddd„ƒZeddd„ƒZeddd„ƒZedd	d
„ƒZeddd„ƒZdS )Ú	ScatterNDÚreturnÚNonec               	   C  s  t jjdg d¢dgd} tjg d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢ggtjd	}tjd
gdggtjd	}tjg d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢ggtjd	}t|||ƒ}t| |||g|gdd d S )Nr   ©r   r   r   Úy)ÚinputsÚoutputs©é   é   é   é   ©é   é   é   é   ©r,   r+   r*   r)   ©r'   r&   r%   r$   ©Údtyper   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'   Útest_scatternd©r!   r"   Úname©	ÚonnxÚhelperÚ	make_noder   ÚarrayÚfloat32Úint64r   r   ©Únoder   r   r   r   r   r   r   Úexport_scatternd$   s6   ýüù	þû
üzScatterND.export_scatterndc               	   C  ó  t jjdg d¢dgdd} tjg d¢g d¢g d¢g d	¢gg d¢g d¢g d¢g d	¢gg d¢g d	¢g d¢g d¢gg d¢g d	¢g d¢g d¢ggtjd
}tjdgdggtjd
}tjg d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢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   r1   r2   r3   r4   r5   r6   r7   r8   ©r   Útest_scatternd_addr:   r<   rC   r   r   r   Úexport_scatternd_addI   ó8   üüù	þû
üzScatterND.export_scatternd_addc               	   C  rF   )Nr   r   r    r   rG   r#   r(   r-   r.   r/   r   r1   r2   r3   r4   r5   r6   r7   r8   rH   Útest_scatternd_multiplyr:   r<   rC   r   r   r   Úexport_scatternd_multiplyo   rK   z#ScatterND.export_scatternd_multiplyc               	   C  rF   )Nr   r   r    r	   rG   r#   r(   r-   r.   r/   r   r1   r2   r3   r4   r5   r6   r7   r8   rH   Útest_scatternd_maxr:   r<   rC   r   r   r   Úexport_scatternd_max•   rK   zScatterND.export_scatternd_maxc               	   C  rF   )Nr   r   r    r
   rG   r#   r(   r-   r.   r/   r   r1   r2   r3   r4   r5   r6   r7   r8   rH   Útest_scatternd_minr:   r<   rC   r   r   r   Úexport_scatternd_min»   rK   zScatterND.export_scatternd_minN)r   r   )	Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodrE   rJ   rM   rO   rQ   r   r   r   r   r   #   s    $%%%r   )r   )Ú
__future__r   Únumpyr   r=   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r   r   r   r   r   r   Ú<module>   s   
