§
    1�ÅjB  ã                  ó^   — 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„Z	 G d„ de¦  «        Z
dS )é    )ÚannotationsN)ÚBase)ÚexpectÚdataú
np.ndarrayÚindicesÚ
batch_dimsÚintÚreturnc                ó®  — t          | j        ¦  «        }|j        d         |k    sJ ‚g }d}t          |¦  «        D ]2}|                     |j        |         ¦  «         ||j        |         z  }Œ3|j        d         ||z
  k    r|t	          |j        ¦  «        |d…         z   nI|t	          |j        ¦  «        |d…         z   t	          | j        ¦  «        ||j        d         z   d …         z   }g }|                     |d|j        d         ¦  «        }	|                      |g| j        |d …         ¢R ¦  «        }
t          |	j        d         ¦  «        D ]Y}t          |	j        d         ¦  «        D ]<}t          |	|         |         ¦  «        }|                     |
|g|¢R          ¦  «         Œ=ŒZt          j        || j	        ¬¦  «                             |¦  «        S )Néÿÿÿÿé   r   ©Údtype)
ÚlenÚshapeÚrangeÚappendÚlistÚreshapeÚtupleÚnpÚasarrayr   )r   r   r	   Ú	data_rankÚbatch_dims_shapeÚbatch_dims_sizeÚiÚoutput_shapeÚoutput_data_bufferÚreshaped_indicesÚreshaped_dataÚ	batch_dimÚ	outer_dimÚgather_indexs                 úUC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/gathernd.pyÚgather_nd_implr&      s	  € õ �D”J‘”€Ið Œ=˜Ô 	Ò)Ð)Ð)Ð)ð Ðð €Oõ �:ÑÔð ,ð ,ˆØ×Ò ¤¨aÔ 0Ñ1Ô1Ð1Ø˜7œ=¨Ô+Ñ+ˆˆð ŒM˜"Ô ¨ZÑ!7Ò7Ð7ð 	�4 ¤Ñ.Ô.¨z¸"¨}Ô=Ñ=Ð=àÝ
ˆwŒ}Ñ
Ô
˜j¨˜mÔ
,ñ-å
ˆtŒzÑ
Ô
˜:¨¬°bÔ(9Ñ9Ð;Ð;Ô
<ñ=ð ð Ðð —’ ¸¸G¼MÈ"Ô<MÑNÔNÐð —L’L /Ð!L°D´J¸z¸{¸{Ô4KÐ!LÐ!LÑMÔM€Mõ Ð+Ô1°!Ô4Ñ5Ô5ð Qð Qˆ	ÝÐ/Ô5°aÔ8Ñ9Ô9ð 	Qð 	QˆIÝ Ð!1°)Ô!<¸YÔ!GÑHÔHˆLØ×%Ò% m°YÐ4NÀÐ4NÐ4NÔ&OÑPÔPÐPÐPð	Qõ Œ:Ð(°´
Ð;Ñ;Ô;×CÒCÀLÑQÔQÐQó    c                  óV   — e Zd Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )ÚGatherNDr   ÚNonec                 ó¨  — t           j                             dddgdg¬¦  «        } t          j        ddgdd	ggt          j        ¬
¦  «        }t          j        ddgddggt          j        ¬
¦  «        }t          ||d¦  «        }t          j        dd	gt          j        ¬
¦  «        }t          j        ||¦  «        sJ ‚t          | ||g|gd¬¦  «         d S )Nr)   r   r   Úoutput©ÚinputsÚoutputsr   r   é   é   r   Útest_gathernd_example_int32©r.   r/   Úname©
ÚonnxÚhelperÚ	make_noder   ÚarrayÚint32Úint64r&   Úarray_equalr   ©Únoder   r   r,   Úexpected_outputs        r%   Úexport_int32zGatherND.export_int32>   sì   € åŒ{×$Ò$ØØ˜IÐ&Ø�Jð %ñ 
ô 
ˆõ Œx˜!˜Q˜ ! Q Ð(µ´Ð9Ñ9Ô9ˆÝ”(˜Q ˜F Q¨ FÐ+µ2´8Ð<Ñ<Ô<ˆÝ  g¨qÑ1Ô1ˆÝœ( A q 6µ´Ð:Ñ:Ô:ˆÝŒ~˜f oÑ6Ô6Ð6Ð6Ð6ÝØØ˜'�?Ø�HØ.ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r'   c                 óÈ  — t           j                             dddgdg¬¦  «        } t          j        ddgdd	ggd
dgddgggt          j        ¬¦  «        }t          j        ddggddgggt          j        ¬¦  «        }t          ||d¦  «        }t          j        dd	ggd
dgggt          j        ¬¦  «        }t          j        ||¦  «        sJ ‚t          | ||g|gd¬¦  «         d S )Nr)   r   r   r,   r-   r   r   r0   r1   é   é   é   é   r   Útest_gathernd_example_float32r3   )
r6   r7   r8   r   r9   Úfloat32r;   r&   r<   r   r=   s        r%   Úexport_float32zGatherND.export_float32R   s  € åŒ{×$Ò$ØØ˜IÐ&Ø�Jð %ñ 
ô 
ˆõ Œx˜1˜a˜& 1 a &Ð)¨Q°¨F°Q¸°FÐ+;Ð<ÅBÄJÐOÑOÔOˆÝ”(˜a ˜V˜H¨¨1 v hÐ/µr´xÐ@Ñ@Ô@ˆÝ  g¨qÑ1Ô1ˆÝœ( a¨ V H°°1¨v¨hÐ#7½r¼zÐJÑJÔJˆÝŒ~˜f oÑ6Ô6Ð6Ð6Ð6ÝØØ˜'�?Ø�HØ0ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r'   c                 ó¾  — t           j                             dddgdgd¬¦  «        } t          j        ddgdd	ggd
dgddgggt          j        ¬¦  «        }t          j        dgdggt          j        ¬¦  «        }t          ||d¦  «        }t          j        dd	gd
dggt          j        ¬¦  «        }t          j        ||¦  «        sJ ‚t          | ||g|gd¬¦  «         d S )Nr)   r   r   r,   r   )r.   r/   r	   r   r0   r1   rB   rC   rD   rE   r   Ú&test_gathernd_example_int32_batch_dim1r3   r5   r=   s        r%   Úexport_int32_batchdim_1z GatherND.export_int32_batchdim_1f   s  € åŒ{×$Ò$ØØ˜IÐ&Ø�JØð	 %ñ 
ô 
ˆõ Œx˜1˜a˜& 1 a &Ð)¨Q°¨F°Q¸°FÐ+;Ð<ÅBÄHÐMÑMÔMˆÝ”(˜Q˜C ! ˜:­R¬XÐ6Ñ6Ô6ˆÝ  g¨qÑ1Ô1ˆÝœ( Q¨ F¨Q°¨FÐ#3½2¼8ÐDÑDÔDˆÝŒ~˜f oÑ6Ô6Ð6Ð6Ð6ÝØØ˜'�?Ø�HØ9ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r'   N)r   r*   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr@   rH   rK   © r'   r%   r)   r)   =   sr   € € € € € Øð
ð 
ð 
ñ „\ð
ð& ð
ð 
ð 
ñ „\ð
ð& ð
ð 
ð 
ñ „\ð
ð 
ð 
r'   r)   )r   r   r   r   r	   r
   r   r   )Ú
__future__r   Únumpyr   r6   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r&   r)   rP   r'   r%   ú<module>rU      sŸ   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð-Rð -Rð -Rð -Rð`<
ð <
ð <
ð <
ð <
ˆtñ <
ô <
ð <
ð <
ð <
r'   