§
    3�Å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  — |dk    rd„ }n!|dk    rd„ }n|dk    rd„ }n|dk    rd„ }nd	„ }|d
k     r
| j         |z   }t          j        | ¦  «        }t          j        |j        ¦  «        D ]F}t          |¦  «        }||         ||<   t          |¦  «        } |||         ||         ¦  «        ||<   ŒG|S )zÝScatter 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     úWC:\Projects\Historical\venv\Lib\site-packages\onnx/reference/ops/op_scatter_elements.pyÚfzscatter_elements.<locals>.f   ó   € Ø�q‘5ˆLó    Úmulc                ó   — | |z  S r   r	   r
   s     r   r   zscatter_elements.<locals>.f   r   r   Úminc                ó"   — t          | |¦  «        S r   )r   r
   s     r   r   zscatter_elements.<locals>.f!   ó   € Ý�q˜!‘9”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   )ÚndimÚnpÚcopyÚndindexÚshapeÚlistÚtuple)	ÚdataÚindicesÚupdatesÚaxisÚ	reductionr   Ú	scatteredÚupdate_indexÚoutput_indexs	            r   Úscatter_elementsr(      s(  € ð �EÒÐð	ð 	ð 	ð 	ð 
�eÒ	Ð	ð	ð 	ð 	ð 	ð 
�eÒ	Ð	ð	ð 	ð 	ð 	ð 
�eÒ	Ð	ð	ð 	ð 	ð 	ð
	ð 	ð 	ð ˆa‚x€xØŒy˜4Ñˆå”˜‘”€IÝœ
 7¤=Ñ1Ô1ð Tð TˆÝ˜LÑ)Ô)ˆØ$ \Ô2ˆ�TÑÝ˜\Ñ*Ô*ˆØ"# ! I¨lÔ$;¸WÀ\Ô=RÑ"SÔ"Sˆ	�,ÑÐØÐr   c                  ó   — e Zd Zdd„ZdS )ÚScatterElementsNc                ó0   — t          |||||¬¦  «        }|fS )N)r#   r$   )r(   )Úselfr    r!   r"   r#   r$   Úress          r   Ú_runzScatterElements._run;   s!   € Ý˜t W¨g¸DÈIÐVÑVÔVˆØˆvˆr   )NN)Ú__name__Ú
__module__Ú__qualname__r.   r	   r   r   r*   r*   :   s(   € € € € € ðð ð ð ð ð r   r*   )r   N)Ú
__future__r   Únumpyr   Úonnx.reference.op_runr   r(   r*   r	   r   r   ú<module>r5      s€   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð,ð ,ð ,ð ,ð^ð ð ð ð �eñ ô ð ð ð r   