
    h                     j    S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	  S r
S rS rS r " S	 S
\5      rg)    N)Base)expect)apply_affine_transformconstruct_original_gridc                    [         R                  " [         R                  " U 5      [         R                  " U 5      [         R                  " U 5      [         R                  " U 5      [         R                  " U 5      [         R
                  " U 5      * [         R                  " U 5      [         R
                  " U 5      [         R                  " U 5      /	SS9R                  SSS5      n[         R                  " [         R                  " U5      [         R                  " U5      [         R
                  " U5      [         R                  " U5      [         R                  " U5      [         R                  " U5      [         R
                  " U5      * [         R                  " U5      [         R                  " U5      /	SS9R                  SSS5      n[         R                  " [         R                  " U5      UUU[         R                  " U5      UUU[         R                  " U5      /	SS9R                  SSS5      n[         R                  " U[         R                  " U5      [         R                  " U5      [         R                  " U5      U	[         R                  " U5      [         R                  " U5      [         R                  " U5      U
/	SS9R                  SSS5      n[         R                  " [         R                  " X#U/5      5      R                  SSS5      nX-  U-  U-  n[         R                  " US5      n[         R                  " UU45      n[         R                  " US5      nUR                  [         R                  5      $ )Naxis      r      r   )npstack	ones_like
zeros_likecossinreshape	transposearrayhstackastypefloat32)angle1angle2offset_xoffset_yoffset_zshear_xshear_yshear_zscale_xscale_yscale_zrot_xrot_yshearscaletranslationrotation_matrixaffine_matrixs                     `/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/affinegrid.pycreate_affine_matrix_3dr.      s    HHLL MM&!MM&!MM&!FF6NVVF^OMM&!FF6NFF6N
	
  gb!Q 
 HHFF6NMM&!FF6NMM&!LL MM&!VVF^OMM&!FF6N
	
  gb!Q 
 HHLL!LL!LL!
	
  gb!Q 
 HHMM'"MM'"MM'"MM'"MM'"MM'"
	
  gb!Q 
 ,,rxxX(FGHPP
AqK me+e3Oll?I>OII<=MLL	:M

++    c                    [         R                  " [         R                  " U 5      [         R                  " U 5      * [         R                  " U 5      [         R                  " U 5      /SS9R	                  SSS5      n[         R                  " [         R
                  " U5      X4[         R
                  " U5      /SS9R	                  SSS5      n[         R                  " U[         R                  " U5      [         R                  " U5      U/SS9R	                  SSS5      n	[         R                  " [         R                  " X/5      5      R	                  SSS5      n
Xx-  U	-  n[         R                  " US5      n[         R                  " X45      n[         R                  " US5      nUR                  [         R                  5      $ )Nr   r	   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r    r!   r#   r$   rotr(   r)   r*   r+   r,   s                r-   create_affine_matrix_2dr2   _   sR    ((	"&&."&&."&&.IPRgb!Q  HH	g	",,w2GHrgb!Q 
 HH	"--("--*@'JQSgb!Q 
 ,,rxx(<=>FFr1aPKkE)Oll?I>OII<=MLL	:M

++r/   c            	         [         R                  " [         R                  S-  [         R                  S-  /5      n [         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " S	S
/5      n[         R                  " SS/5      n[         R                  " SS/5      n[        XX#XEU5      nU$ )N   r         @      @ffffff
皙?            ?333333?333333ӿ皙@@?)r   r   pir2   )angler   r   r    r!   r#   r$   theta_2ds           r-   create_theta_2drC   s   s    HHbeeai+,Exxc
#Hxxs$Hhhc{#GhhT{#GhhSz"GhhSz"G&GgH Or/   c                     [         R                  " [         R                  S-  [         R                  S-  /5      n [         R                  " [         R                  S-  [         R                  S-  /5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " S	S
/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " S
S/5      n[         R                  " SS/5      n	[         R                  " SS/5      n
[        U UUUUUUUUU	U
5      nU$ )Nr4   r      r   r5   r6   r7   r8   gr=   r9   r:   r;   r<   gffffff?gɿr>   r?   g      ?)r   r   r@   r.   )r   r   r   r   r   r    r!   r"   r#   r$   r%   theta_3ds               r-   create_theta_3drG      s   XXruuqy"%%!),-FXXruuqy"%%!),-Fxxc
#Hxxs$Hxxs$Hhhc{#GhhT{#GhhT{#GhhSz"GhhSz"GhhSz"G&H Or/   c                   <    \ rS rSr\SS j5       r\SS j5       rSrg)
AffineGrid   Nc                  D   [        5       n [        U 5      SSS4u  pp4X44nS H{  n[        R                  R	                  SSS/S/US	9n[        XV5      n[        X5      n	S
n
US:X  a  U
S-  n
[        UU [        R                  " XX4/[        R                  S9/U	/U
S9  M}     g )Nr      rE   r   r   rI   thetasizegridinputsoutputsalign_cornerstest_affine_grid_2dr   _align_cornersdtyperR   rS   name)rC   lenonnxhelper	make_noder   r   r   r   r   int64)rB   NCHW	data_sizerT   nodeoriginal_gridrP   	test_names              r-    export_2d_no_reference_evaluator+AffineGrid.export_2d_no_reference_evaluator   s    "$]Aq!+
aF	#M;;(((+	 ) D 4IMM)(BD-I!--	 "((A!<rxx"HI	 $r/   c                  L   [        5       n [        U 5      SSSS4u  pp4nX4U4nS H|  n[        R                  R	                  SSS/S	/US
9n[        Xg5      n	[        X	5      n
SnUS:X  a  US-  n[        UU [        R                  " XX4U/[        R                  S9/U
/US9  M~     g )Nr   r4   rL   rE   rM   rI   rN   rO   rP   rQ   test_affine_grid_3dr   rV   rW   rY   )rG   r[   r\   r]   r^   r   r   r   r   r   r_   )rF   r`   ra   Drb   rc   rd   rT   re   rf   rP   rg   s               r-    export_3d_no_reference_evaluator+AffineGrid.export_3d_no_reference_evaluator   s    "$Hq!Q1aA1I	#M;;(((+	 ) D 4IMM)(BD-I!--	 "((A!?"(("KL	 $r/    )returnN)__name__
__module____qualname____firstlineno__staticmethodrh   rm   __static_attributes__ro   r/   r-   rI   rI      s(     2  r/   rI   )numpyr   r\   onnx.backend.test.case.baser   onnx.backend.test.case.noder   !onnx.reference.ops.op_affine_gridr   r   r.   r2   rC   rG   rI   ro   r/   r-   <module>r{      s:   
   , .L,^,(:3 3r/   