
    /j                    J    d dl mZ d dlZd dlmZ ddZ G d de          ZdS )    )annotationsN)OpRunc                	   |dk    rd }n|dk    rd }n|dk    rd }nd }|dk     r
| j         |z   }t          | j                  d	k    rI|dk    rCt          j        |           }t          ||d
          D ]\  }} |||         |          ||<   |S t          |j                  dk    rt          j        |           }|dk    rlt          |j        d                   D ]P}	t          |j        d	                   D ]3}
 ||||	|
f         |
f         ||	|
f                   |||	|
f         |
f<   4Qnkt          |j        d                   D ]P}	t          |j        d	                   D ]3}
 |||	||	|
f         f         ||	|
f                   ||	||	|
f         f<   4Q|S t          |j                  dk    rt          j        |           }|dk    rt          |j        d                   D ]r}	t          |j        d	                   D ]U}
t          |j        d                   D ]8} ||||	|
|f         |
|f         ||	|
|f                   |||	|
|f         |
|f<   9Vsn'|d	k    rt          |j        d                   D ]r}	t          |j        d	                   D ]U}
t          |j        d                   D ]8} |||	||	|
|f         |f         ||	|
|f                   ||	||	|
|f         |f<   9Vsn|dk    rt          |j        d                   D ]r}	t          |j        d	                   D ]U}
t          |j        d                   D ]8} |||	|
||	|
|f         f         ||	|
|f                   ||	|
||	|
|f         f<   9Vs|S t          |j                  dk    rt          j        |           }t          |j        d                   D ]}t          |j        d	                   D ]}	t          |j        d                   D ]b}
t          |j        d                   D ]E}||	|
|g}|||	|
|f         ||<   t          |          } |||         |||	|
|f                   ||<   Fc|S t          d|j         d| d          )zScatter elements.

    ::
        for 3-dim and axis=0
            output[indices[i][j][k]][j][k] = updates[i][j][k]
        for axis 1
            output[i][indices[i][j][k]][k] = updates[i][j][k]
        and so on.
    addc                    | |z   S N xys     k/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/reference/ops/op_scatter_elements.pyfzscatter_elements.<locals>.f   s    q5L    minc                "    t          | |          S r   )r   r
   s     r   r   zscatter_elements.<locals>.f       q!99r   maxc                "    t          | |          S r   )r   r
   s     r   r   zscatter_elements.<locals>.f!   r   r   c                    |S r   r	   r
   s     r   r   zscatter_elements.<locals>.f&   s    Hr   r      T)strict         z-ScatterND is not implement for indices.shape=z
 and axis=.)	ndimlenshapenpcopyziprangetupleNotImplementedError)dataindicesupdatesaxis	reductionr   	scatteredposupijkaindextuple_indexs                  r   scatter_elementsr3      s    E	 	 	 	 
e			 	 	 	 
e			 	 	 	
	 	 	 axxy4
4:!		GDMM	7GD999 	3 	3GCQy~r22IcNN
7=QGDMM	1997=+,,  w}Q/00  A23!!'!Q$-"23WQT]3 3IgadmQ.// 7=+,,  w}Q/00  A23!!!WQT]"23WQT]3 3IaA.// 
7=QGDMM	1997=+,,  w}Q/00  A"7=#344  <=A%gaAg&61&<=wq!Qw?O= =	'!Q'"2Aq"899 QYY7=+,,  w}Q/00  A"7=#344  <=A%aAq)91&<=wq!Qw?O= =	!WQ1W%5q"899 QYY7=+,,  w}Q/00  A"7=#344  <=A%aGAq!G,<&<=wq!Qw?O= =	!Q1a(8"899
 
7=QGDMM	w}Q'(( 
	 
	A7=+,, 	 	w}Q/00  A"7=#344  !"Aq!&-aAqj&9d&+Ell12%k2#Aq!QJ/2 2	+..		 
XXXQUXXX  r   c                      e Zd ZddZdS )ScatterElementsNc                0    t          |||||          }|fS )N)r(   r)   )r3   )selfr%   r&   r'   r(   r)   ress          r   _runzScatterElements._runp   s!    tWgDIVVVvr   )NN)__name__
__module____qualname__r9   r	   r   r   r5   r5   o   s(             r   r5   )r   N)
__future__r   numpyr   onnx.reference.op_runr   r3   r5   r	   r   r   <module>r@      s    # " " " " "     ' ' ' ' ' 'a a a aH    e     r   