
    bIg                    B    d dl mZ d dlZd dlmZ ddZ G d de      Zy)    )annotationsN)OpRunc                N   |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(  r?|dk(  r:t        j                  |       }t        ||      D ]  \  }} |||   |      ||<    |S t        |j                        d
k(  rt        j                  |       }|dk(  r^t        |j                  d         D ]A  }	t        |j                  d	         D ]$  }
 ||||	|
f   |
f   ||	|
f         |||	|
f   |
f<   & C |S t        |j                  d         D ]A  }	t        |j                  d	         D ]$  }
 |||	||	|
f   f   ||	|
f         ||	||	|
f   f<   & C |S t        |j                        dk(  rt        j                  |       }|dk(  rt        |j                  d         D ]c  }	t        |j                  d	         D ]F  }
t        |j                  d
         D ])  } ||||	|
|f   |
|f   ||	|
|f         |||	|
|f   |
|f<   + H e |S |d	k(  rt        |j                  d         D ]c  }	t        |j                  d	         D ]F  }
t        |j                  d
         D ])  } |||	||	|
|f   |f   ||	|
|f         ||	||	|
|f   |f<   + H e |S |d
k(  r~t        |j                  d         D ]c  }	t        |j                  d	         D ]F  }
t        |j                  d
         D ])  } |||	|
||	|
|f   f   ||	|
|f         ||	|
||	|
|f   f<   + H e |S t        |j                        dk(  rt        j                  |       }t        |j                  d         D ]  }t        |j                  d	         D ]o  }	t        |j                  d
         D ]R  }
t        |j                  d         D ]5  }||	|
|g}|||	|
|f   ||<   t        |      } |||   |||	|
|f         ||<   7 T q  |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     c/var/www/html/answerous/venv/lib/python3.12/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!9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               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_elementsr2      s    E	 
e		 
e		
	 axyy4
4::!	GGDM	7G, 	3GCy~r2IcN	3
7==QGGDM	197==+, w}}Q/0 A23!'!Q$-"23WQT]3IgadmQ./  7==+, w}}Q/0 A23!!WQT]"23WQT]3IaA./
 
7==QGGDM	197==+, w}}Q/0 A"7==#34 <=%gaAg&61&<=wq!Qw?O=	'!Q'"2Aq"89(  QY7==+, w}}Q/0 A"7==#34 <=%aAq)91&<=wq!Qw?O=	!WQ1W%5q"89  QY7==+, w}}Q/0 A"7==#34 <=%aGAq!G,<&<=wq!Qw?O=	!Q1a(8"89 
7==QGGDM	w}}Q'( 
	A7==+, 	w}}Q/0 A"7==#34 !"Aq!&-aAqj&9d&+El12%k2#Aq!QJ/2	+.		
	 

7jQUPVVWX r   c                      e Zd ZddZy)ScatterElementsNc                (    t        |||||      }|fS )N)r'   r(   )r2   )selfr$   r%   r&   r'   r(   ress          r   _runzScatterElements._runp   s    tWgDIVvr   )NN)__name__
__module____qualname__r8   r	   r   r   r4   r4   o   s    r   r4   )r   N)
__future__r   numpyr   onnx.reference.op_runr   r2   r4   r	   r   r   <module>r?      s#    #  'aHe r   