
    hA                     :    S SK rS SKJr  S rS r " S S\5      rg)    N)OpRunc                    [        U 5      S:H  n[        R                  " U 5      n[        R                  " U 5      /n[	        U 5       GH  u  pVUS:X  a$  SUS-
  -  nSnSn	[        R
                  " XU5      n
O&SU-  nSUS-  -   nSn	[        R
                  " XU5      n
US:X  aL  U(       a"  [        R                  " XS45      U-   nU/UQnM  [        R                  " XSS45      U-   nU/UQnM  US:X  aN  U(       a#  [        R                  " U
SU45      U-   nU/UQnM  [        R                  " U
SUS45      U-   nU/UQnM  [        R                  " U
SU45      U-   nU/UQnGM      [        R                  " XB(       a  SS9$ SS9$ )	N      g       @gqh ?r      )axis)lennpzerosones	enumeratearangereshapestack)	data_sizealign_cornersis_2d
size_zerosoriginal_griddimdim_sizestepstartstopayzxs                 [/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_affine_grid.pyconstruct_original_gridr!      s   	NaE)$JWWY'(M"9-A(Q,'DED		%t,A>DMED		%t,A!8JJqQ-0:=!" 3] 3JJqQ"23j@!" 3] 3AXJJq1h-0:=!" 3] 3JJq1h"23j@!" 3] 3

1q(m,z9A//M7 .8 88MU::::    c                    U R                   S:X  d   S5       eUR                   S:X  a  U R                  u  p#nUS:X  a  US:X  d   eUR                  u  pVnUS:X  d   e[        R                  " [        R                  " XU-  U45      5      n[        R
                  " X5      n[        R                  " [        R                  " US5      X%Xc45      n	U	R                  [        R                  5      $ UR                   S:X  d   eU R                  u  p*nU
S:X  a  US:X  d   eUR                  u  ppdUS:X  d   e[        R                  " [        R                  " XU-  U-  U45      5      n[        R
                  " X5      n[        R                  " [        R                  " US5      X+XVU
45      n	U	R                  [        R                  5      $ )Nr   z>theta_n shall have shape of (N, 2, 3) for 2D, (N, 3, 4) for 3Dr   )r   r   r      )ndimshaper   	transposer   matmulastypefloat32)theta_noriginal_grid_homoNdim_2ddim_homoHWoriginal_grid_transposedgrid_ngriddim_3dDs               r    apply_affine_transformr7   .   s    	HGH!#%mm8{x1},,+11h1}}#%<<JJ)E8+<=$
  
 zz",,vy9A!;LM{{2::&&!&&!+++%mm8{x1},,.44a1}}#%<<JJ)EAIx+@A$
  
 zz",,vy9A!;OP{{2::&&r"   c                       \ rS rSrSS jrSrg)
AffineGridU   Nc                 f    U=(       d    U R                   nUt  pE[        XS5      n[        X5      nU4$ N)r   r!   r7   )selfthetasizer   _r   r   r4   s           r    _runAffineGrid._runV   s7    %;););1/	I%e;wr"    r<   )__name__
__module____qualname____firstlineno__rA   __static_attributes__rC   r"   r    r9   r9   U   s    r"   r9   )numpyr   onnx.reference.op_runr   r!   r7   r9   rC   r"   r    <module>rK      s%     ' ;F$'N r"   