
    h                         S SK rS SKrS SKJr  S SKJr  S\R                  S\R                  S\S\R                  4S jr	 " S	 S
\5      r
g)    N)Base)expectdataindices
batch_dimsreturnc                 r   [        U R                  5      nUR                  S   U::  d   e/ nSn[        U5       H2  nUR                  UR                  U   5        XQR                  U   -  nM4     UR                  S   X2-
  :X  a  U[	        UR                  5      US -   OBU[	        UR                  5      US -   [	        U R                  5      X!R                  S   -   S  -   n/ nUR                  USUR                  S   5      n	U R                  U4U R                  US  -   5      n
[        U	R                  S   5       HI  n[        U	R                  S   5       H*  n[        X   U   5      nUR                  X/UQ7   5        M,     MK     [        R                  " XR                  S9R                  U5      $ )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                 ^/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/gathernd.pygather_nd_implr#      s    DJJI ==	)))  O :a 01==++  MM"!77 	4.z"==
w}}
j
,-
tzz
:b(99;
<=   GMM"<MN LL/!3djj6M!MNM +11!45	/55a89I !1!<Y!GHL%%m4N4N&OP : 6 ::(

;CCLQQ    c                   P    \ rS rSr\SS j5       r\SS j5       r\SS j5       rSrg)GatherND<   Nc                     [         R                  R                  SSS/S/S9n [        R                  " SS/SS	//[        R
                  S
9n[        R                  " SS/SS//[        R                  S
9n[        XS5      n[        R                  " SS	/[        R
                  S
9n[        R                  " X45      (       d   e[        U X/U/SS9  g )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_int32GatherND.export_int32=   s    {{$$I&J % 
 xx!Q!Q(9((QFQF+288<q1((Aq6:~~f6666?H.		
r$   c                     [         R                  R                  SSS/S/S9n [        R                  " SS/SS	//S
S/SS///[        R
                  S9n[        R                  " SS//SS///[        R                  S9n[        XS5      n[        R                  " SS	//S
S///[        R
                  S9n[        R                  " X45      (       d   e[        U X/U/SS9  g )Nr&   r   r   r)   r*   r   r   r-   r.               r   test_gathernd_example_float32r0   )
r3   r4   r5   r   r6   float32r8   r#   r9   r   r:   s        r"   export_float32GatherND.export_float32Q   s    {{$$I&J % 
 xx1a&1a&)QFQF+;<BJJO((aVH1vh/rxx@q1((aVH1vh#7rzzJ~~f6666?H0		
r$   c                     [         R                  R                  SSS/S/SS9n [        R                  " SS/SS	//S
S/SS///[        R
                  S9n[        R                  " S/S//[        R                  S9n[        XS5      n[        R                  " SS	/S
S//[        R
                  S9n[        R                  " X45      (       d   e[        U X/U/SS9  g )Nr&   r   r   r)   r   )r+   r,   r   r   r-   r.   r@   rA   rB   rC   r   &test_gathernd_example_int32_batch_dim1r0   r2   r:   s        r"   export_int32_batchdim_1 GatherND.export_int32_batchdim_1e   s    {{$$I&J	 % 
 xx1a&1a&)QFQF+;<BHHM((QC!:RXX6q1((QFQF#3288D~~f6666?H9		
r$    )r   N)	__name__
__module____qualname____firstlineno__staticmethodr=   rF   rJ   __static_attributes__rL   r$   r"   r&   r&   <   s<    
 
& 
 
& 
 
r$   r&   )numpyr   r3   onnx.backend.test.case.baser   onnx.backend.test.case.noder   ndarrayintr#   r&   rL   r$   r"   <module>rX      sV   
   , .-R
**-R!zz-R7:-RZZ-R`<
t <
r$   