
    Si5                        S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJr  \" 1 Sk5      r\" 1 S	k5      r\" S
S15      r " S S\5      rg)    )annotationsN)TensorProto)Base)expect)make_tensortensor_dtype_to_np_dtype)to_float8e8m0>   
FLOAT8E5M2FLOAT8E4M3FNFLOAT8E4M3FNUZFLOAT8E5M2FNUZ>   INT4UINT4
FLOAT4E2M1UINT2INT2c                  P    \ rS rSr\SS j5       r\SS j5       r\SS j5       rSrg)Cast   c            
        / SQn U  GH  u  pX:X  a  M  [        [        U5      n[        [        U5      n[        U5      n[        U5      nUS:X  d  US:X  a)  [        R                  " / SQ[        R
                  S9nSnGO.U[        ;   d
  U[        ;   a(  [        R                  " / SQ[        R
                  S9nSnOUS;   d  US;   a7  [        R                  " S	S
5      R                  [        R
                  5      nSnOUS;   d  US;   a7  [        R                  " SS5      R                  [        R
                  5      nSnOlUS:X  d  US:X  a(  [        R                  " / SQ[        R
                  S9nSnO8[        R                  " / SQ[        R
                  S9R                  SS/5      nSnU[        ;   a-  [        R                  R                  Xu5      n	[        SUUU	SS9n
OU[        ;   aK  UR                  U5      n	[        R                  R                  U	5      n[        SX8UR!                  5       SS9n
OrU["        ;   aK  UR                  U5      n	[        R                  R%                  U	5      n[        SX8UR!                  5       SS9n
OUR                  U5      n	[        SX8U	SS9n
U[        ;   a+  [        SUU[        R                  R                  X5      SS9nOU[        ;   aI  [        R                  R                  U	R                  U5      5      n[        SXHUR!                  5       SS9nOoU["        ;   aI  [        R                  R%                  U	R                  U5      5      n[        SXHUR!                  5       SS9nO[        SUUU	R                  U5      SS9n[        R&                  R)                  SS/S/US9n[+        UU
/U/SU-   S-   U-   S9  GM     g )N)0)FLOATFLOAT16)r   DOUBLE)r   r   )r   r   )r   r   )r   r   )r   BFLOAT16)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   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   UINT8)r   r   )r   r   )r   INT8)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   )
0.47892547
0.48033667
0.49968487
0.81910545
0.47031248z0.816468z
0.21087195	0.7229038NaNINF+INF-INFdtype)      r   r   r   r    r!   r"   10000001e-7r#   r$   r%   r&   z
-0.0000001z	0.0000001z-1000000r)      )r   r   i   )r/   r/   )r   r   r*   )      r   )z0.480.25z1.05z-3.5z-89r,   r-   r#   r$   r%   r&   z-4z0.01z-0.0r)   inputTvalsrawoutputr   inputsoutputsto
test_cast__to_r<   r=   name)getattrr   r   nparrayfloat32F8_TYPESarangeastypereshapeonnxnumpy_helpersaturate_castr   FOUR_BIT_TYPES_pack_4bitx2tobytesTWO_BIT_TYPES_pack_2bitx4helper	make_noder   )
test_cases	from_typeto_type
from_dtypeto_dtypefrom_np_dtypeto_np_dtypenp_fp32input_shapenp_fromr6   packedr:   nodes                 _/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/cast.pyexportCast.export   s   1

f #-I# i8J{G4H4Z@M28<KJ&'Z*?(( **" %h&'X*=((" **%( %//7>O3O))B+222::>$//7>O3O))B*11"**=$l*g.E((" **%( % (( **  '1a&/! " %H$++99'Q#  n,!..7**77@ $Z6>>;KQU m+!..7**77@#Z6>>;KQU "..7#Z7 ("$**88N N***77{8ST %h&..:JPT M)**77{8ST$h&..:JPT % 4 ;;((y!
	 ) D w!I-6@	I #-    c            	        [         R                  " SS// SQ5      n SnU  H  u  p#[        [        U5      n[        [        U5      n[	        U5      n[	        U5      n[
        R                  " / SQ[
        R                  S9n[        SUUUR                  U5      SS	9n	[        S
UUUR                  U5      R                  U5      SS	9n
[        R                  R                  SS/S
/USS9n[        UU	/U
/SU-   S-   U-   S9  M     g )Nr   r   )r   r   r
   r   r.   r+   r'   r6   Tr7   r:   r   r   )r<   r=   r>   saturatetest_cast_no_saturate_r@   rA   )	itertoolsproductrC   r   r   rD   rE   rF   r   rI   rK   rS   rT   r   )rU   r]   rV   rW   rX   rY   rZ   r[   r\   r6   r:   r`   s               ra   export_saturate_falseCast.export_saturate_false   s)   &&

 ",I i8J{G4H4Z@M28<Khh" jj%G*  ^^M2E !^^M299+FF ;;((y!
 ) D w-	9FBWL	a #-rd   c            
     p   [         R                  " / SQ[         R                  S9n / SQnU GH  u  p#US:X  a  U n[        U 5      nOUS:X  a+  U R	                  [         R
                  5      n[        U5      nOUS:X  ai  [        U 5      nUS:X  a   UR	                  [         R                  5      nOJUS:X  a   UR	                  [         R
                  5      nO$[        SU SU S	35      e[        SU SU S	35      e[        S
[        [        U5      SS/USS9n[        S[        [        U5      SS/USS9nUS:X  a3  [        R                  R                  SS
/S/[        [        U5      SSS9nO0[        R                  R                  SS
/S/[        [        U5      S9n[        UU/U/SU-   S-   U-   S9  GM     g )N)z0.0z0.124r4   z0.5z1.1z2.0z4.0z8.0r'   ))r   
FLOAT8E8M0)r   rm   )rm   r   )rm   r   r   r   rm   zConversion from z to z is not tested.r6      r*   T)r9   r:   r   r3   up)r<   r=   r>   rf   
round_moder;   test_cast_e8m0_r@   rA   )rD   rE   rF   r	   rI   float16
ValueErrorr   rC   r   rK   rS   rT   r   )	r\   rU   rV   rW   input_np	output_npr6   r:   r`   s	            ra   export_e8m0Cast.export_e8m0@  s   ((	 **


 #-IG#")'2	i'">>"**5)(3	l*(1g% (

 ;I	) (

 ;I$*9+T'/R  !&ykgYoN   Y/AE !W-AF ,&{{,,#9%J{G4# -  {{,,#9%J{G4	 -  w&2V;gE	i #-rd    N)returnNone)	__name__
__module____qualname____firstlineno__staticmethodrb   rj   rv   __static_attributes__rx   rd   ra   r   r      sD    ] ]~ C CJ M Mrd   r   )
__future__r   rh   numpyrD   rK   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r   onnx.numpy_helperr	   	frozensetrG   rN   rQ   r   rx   rd   ra   <module>r      sY    #     , . ,WX:;7F+,u4 urd   