o
    q::j"  ã                   @  sV   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d„Z	G dd„ deƒZ
dS )é    )ÚannotationsN)ÚBase)ÚexpectÚnoneÚdataú
np.ndarrayÚindicesÚupdatesÚ	reductionÚstrÚreturnc                 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)r   r   r	   r
   ÚoutputÚi© r   úl/home/nk/hobo-godmode/plappi-mvp/.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 )Ú	ScatterNDr   Ú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/   r0   r1   r   r3   r4   r5   r6   r7   r8   r9   r:   ©r
   Útest_scatternd_addr<   r>   rE   r   r   r   Úexport_scatternd_addK   ó8   üüù	þû
üzScatterND.export_scatternd_addc               	   C  rH   )Nr   r!   r"   r   rI   r%   r*   r/   r0   r1   r   r3   r4   r5   r6   r7   r8   r9   r:   rJ   Útest_scatternd_multiplyr<   r>   rE   r   r   r   Úexport_scatternd_multiplyq   rM   z#ScatterND.export_scatternd_multiplyc               	   C  rH   )Nr   r!   r"   r   rI   r%   r*   r/   r0   r1   r   r3   r4   r5   r6   r7   r8   r9   r:   rJ   Útest_scatternd_maxr<   r>   rE   r   r   r   Úexport_scatternd_max—   rM   zScatterND.export_scatternd_maxc               	   C  rH   )Nr   r!   r"   r   rI   r%   r*   r/   r0   r1   r   r3   r4   r5   r6   r7   r8   r9   r:   rJ   Útest_scatternd_minr<   r>   rE   r   r   r   Úexport_scatternd_min½   rM   zScatterND.export_scatternd_minN)r   r    )	Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodrG   rL   rO   rQ   rS   r   r   r   r   r   %   s    $%%%r   )r   )
r   r   r   r   r	   r   r
   r   r   r   )Ú
__future__r   Únumpyr   r?   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r   r   r   r   r   r   Ú<module>   s   ÿ