
    h!                     L    S SK rS SKrS SKJr  S SKJr  SS jr " S S\5      rg)    N)Base)expectc                    UR                   S   [        U R                   5      ::  d   eUR                   UR                   S S U R                   UR                   S   S  -   :X  d   e[        R                  " U 5      n[        R                  " UR                   S S 5       H  nUS:X  a  U[        X   5      ==   X%   -  ss'   M%  US:X  a  U[        X   5      ==   X%   -  ss'   MG  US:X  a.  [        R                  " XAU      X%   5      U[        X   5      '   M{  US:X  a.  [        R                  " XAU      X%   5      U[        X   5      '   M  X%   U[        X   5      '   M     U$ )Naddmulmaxmin)shapelennpcopyndindextuplemaximumminimum)dataindicesupdates	reductionoutputis         _/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/scatternd.pyscatter_nd_implr      s;   ==DJJ///==GMM#2.GMM"<M<O1PPPPP WWT]FZZcr*+5$%3%%5$%3%%(*

6!*3Ewz(RF5$%%(*

6!*3Ewz(RF5$%(/
F5$% , M    c                   x    \ rS rSr\S	S j5       r\S	S j5       r\S	S j5       r\S	S j5       r\S	S j5       r	Sr
g)
	ScatterND"   Nc            
         [         R                  R                  S/ SQS/S9n [        R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//[        R
                  S	9n[        R                  " S
/S//[        R                  S	9n[        R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//[        R
                  S	9n[        XU5      n[        U XU/U/SS9  g )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   s        r   export_scatterndScatterND.export_scatternd#   s    {{$$1E % 

 xx|\<H|\<H|\<H|\<H	 **
 ((QC!:RXX6((|\<H|\<H **
 !87+H!		
r   c            
         [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/ S	Q// SQ/ SQ/ SQ/ S	Q// SQ/ S	Q/ SQ/ SQ// SQ/ S	Q/ SQ/ SQ//[        R
                  S
9n[        R                  " S/S//[        R                  S
9n[        R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//[        R
                  S
9n[        XUSS9n[        U XU/U/SS9  g )Nr   r    r!   r   r"   r#   r   r$   r)   r.   r/   r0   r   r2   r3   r4   r5   r6   r7   r8   r9   r   test_scatternd_addr;   r=   rD   s        r   export_scatternd_addScatterND.export_scatternd_addH       {{$$1E	 % 
 xx|\<H|\<H|\<H|\<H	 **
 ((QC!:RXX6((|\<H|\<H **
 !5I7+H%		
r   c            
         [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/ S	Q// SQ/ SQ/ SQ/ S	Q// SQ/ S	Q/ SQ/ SQ// SQ/ S	Q/ SQ/ SQ//[        R
                  S
9n[        R                  " S/S//[        R                  S
9n[        R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//[        R
                  S
9n[        XUSS9n[        U XU/U/SS9  g )Nr   r    r!   r   rI   r$   r)   r.   r/   r0   r   r2   r3   r4   r5   r6   r7   r8   r9   rJ   test_scatternd_multiplyr;   r=   rD   s        r   export_scatternd_multiply#ScatterND.export_scatternd_multiplyn   s    {{$$1E	 % 
 xx|\<H|\<H|\<H|\<H	 **
 ((QC!:RXX6((|\<H|\<H **
 !5I7+H*		
r   c            
         [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/ S	Q// SQ/ SQ/ SQ/ S	Q// SQ/ S	Q/ SQ/ SQ// SQ/ S	Q/ SQ/ SQ//[        R
                  S
9n[        R                  " S/S//[        R                  S
9n[        R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//[        R
                  S
9n[        XUSS9n[        U XU/U/SS9  g )Nr   r    r!   r	   rI   r$   r)   r.   r/   r0   r   r2   r3   r4   r5   r6   r7   r8   r9   rJ   test_scatternd_maxr;   r=   rD   s        r   export_scatternd_maxScatterND.export_scatternd_max   rN   r   c            
         [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/ S	Q// SQ/ SQ/ SQ/ S	Q// SQ/ S	Q/ SQ/ SQ// SQ/ S	Q/ SQ/ SQ//[        R
                  S
9n[        R                  " S/S//[        R                  S
9n[        R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//[        R
                  S
9n[        XUSS9n[        U XU/U/SS9  g )Nr   r    r!   r
   rI   r$   r)   r.   r/   r0   r   r2   r3   r4   r5   r6   r7   r8   r9   rJ   test_scatternd_minr;   r=   rD   s        r   export_scatternd_minScatterND.export_scatternd_min   rN   r    )returnN)__name__
__module____qualname____firstlineno__staticmethodrF   rL   rQ   rU   rY   __static_attributes__r[   r   r   r   r   "   sh    "
 "
H #
 #
J #
 #
J #
 #
J #
 #
r   r   )none)	numpyr   r>   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r   r[   r   r   <module>rg      s&   
   , .,|
 |
r   