
    hg6                         S SK r S SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
JrJrJrJr  S SKJrJr   " S S\5      rg)	    N)TensorProtohelper)Base)expect)float32_to_float8e4m3float32_to_float8e5m2make_tensortensor_dtype_to_field)float8e4m3_to_float32float8e5m2_to_float32c                   <    \ rS rSr\SS j5       r\SS j5       rSrg)Cast   Nc            
         Sn / SQn[         R                  " [        5      n[         R                  " [        5      nSnU GH+  u  pVS nS nUS:X  d  US:X  Ga9  [         R                  " / SQ[         R
                  S9n	[        R                  S:H  n
U	R                  [         R                  S9nU
(       a  USS S	2   OUS
S S	2   nUS:X  a  US:X  d   eU	R                  SS/5      nUR                  SS/5      n[        R                  R                  [        [        R                   5      UR"                  5      n[        R                  R                  [        [        R$                  5      UR"                  5      nGO}US:X  d   eUR                  SS/5      n[         R&                  " [)        U5      S	-  4[         R                  S9nU
(       a  XSS S	2'   OXS
S S	2'   UR                  [         R
                  S9nUR                  SS/5      n[        R                  R                  [        [        R$                  5      UR"                  5      n[        R                  R                  [        [        R                   5      UR"                  5      nGOhXT;   d  Xd;   Ga  [         R                  " / SQ[         R
                  S9n	US:X  a0  U	n[+        S[        R                   SS/U	R-                  5       5      nGOUS:X  aj  U	R/                  [         R0                  5      R/                  [         R
                  5      n[+        S[        R2                  SS/UR-                  5       5      nGOUS:X  a>  [5        U" U	5      5      n[+        S[        R6                  SS/UR-                  5       5      nOUS:X  a<  [5        U" U	SS9SS9n[+        S[        R8                  SS/UR-                  5       5      nOUS:X  a>  [;        U" U	5      5      n[+        S[        R<                  SS/UR-                  5       5      nOOUS:X  a>  [;        U" U	SSS9SSS9n[+        S[        R>                  SS/UR-                  5       5      nO[A        S5      eUS:X  a  [5        U" U5      5      nOUS:X  a  [5        U" USS9SS9nOUS:X  a  [;        U" U5      5      nOoUS:X  a  [;        U" USSS9SSS9nOWUS:X  a=  UR/                  [         R0                  5      R/                  [         R
                  5      nOUS:X  a  UnO[A        S5      e[+        S[C        [        U5      SS/UR-                  5       5      nUnGOUS:w  Ga  [         RD                  RG                  U 5      R/                  [        RH                  " [C        [        U5      5      5      nUS:X  a  / nURK                  5        H?  n[M        U5      RO                  S5      nURQ                  S5      nURS                  U5        MA     [         R                  " U5      R/                  [T        5      R                  SS/5      nOUR/                  [        RH                  " [C        [        U5      5      5      nOs[         R                  " / SQ[         RV                  " [T        5      S9R                  SS/5      nUR/                  [        RH                  " [C        [        U5      5      5      n[        R                  RY                  SS/S/[C        [        U5      S9nU(       a%  U(       a  [[        UU/U/SU-   S -   U-   U/U/S!9  GM  [[        UU/U/SU-   S -   U-   S"9  GM.     g )#N)      ))FLOATFLOAT16)r   DOUBLE)r   r   )r   r   )r   r   )r   r   )r   STRING)r   r   )r   BFLOAT16)r   r   r   FLOAT8E4M3FNr   r   r   FLOAT8E4M3FNUZr   r   )r   r   )r   r   )r   r   )r   r   r   
FLOAT8E5M2r   r   r   FLOAT8E5M2FNUZ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little      r   r   r   r   r$   r%   r&   r'   r(   r)   1000000z1e-7r*   r+   r,   r-   xr   r   r   T)uzr   r"   )fnr6   7Conversion from {from_type} to {to_type} is not tested.r   zutf-8r   inputoutput)inputsoutputsto
test_cast__to_)r;   r<   nameinput_type_protosoutput_type_protosr;   r<   r@   ).np	vectorizer   r   arrayfloat32sys	byteorderviewuint16reshapeonnxr   make_tensor_type_protointr   r   shaper   zeroslenr	   tolistastypefloat16r   r   r   r   r   r   r"   
ValueErrorgetattrrandomrandom_sampletensor_dtype_to_np_dtypeflattenstrencodedecodeappendobjectr/   	make_noder   )rP   
test_casesvect_float32_to_float8e4m3vect_float32_to_float8e5m2f8_types	from_typeto_typeinput_type_protooutput_type_protonp_fp32little_endisannp_uint16_viewnp_bfp16r9   r:   np_fp32_zerosnp_fp32_from_bfloatinput_valuesexpectedexpected_tensorssissunodes                            Z/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/cast.pyexportCast.export   s   

: &(\\2G%H"%'\\2G%H"U",I# $J&'Z*?(( **" "%(!:!(BII!>,:N14a4(qtRSt@T  j($///#OOQF3E%--q!f5F'+{{'I'IK--.($ )-(J(JK0016<<)% #g---$,,aV4E$&HHc(ma.?-A$SM%.6add+.6add+*7*<*<2::*<*N'088!Q@F'+{{'I'IK0015;;($ )-(J(JK--.)% &'*=(( **$ '#*L'[..A8HE )+#*>>"**#=#D#DRZZ#PL'[001a&,:M:M:OE .0#827;$L ([551v|?R?R?TE "22#827tD$L ([77!QATATAVE ,.#827;$L ([33aV\=P=P=RE "22#827tM$L
 ([77!QATATAVE %Q  n,42<@ H  0042<DId H ,42<@ H  0042<DTR H
 	)+222::>EEbjjQH'+H$Q  #.g6A@Q# )h&		//6==33GK4ST h&B"]]_FMM'2XXg.		" -
  XXb\008@@!QHF"\\77W8UVF  ((6*  '1a&/! " 33GK4QR ;;((y!
;0	 ) D  $5!7#H%	1F:WD'7&8(9': !7#H%	1F:WD	U #-    c            
         / SQn [         R                  " [        5      n[         R                  " [        5      nU  GH  u  p4[         R                  " / SQ[         R
                  S9nUS:X  a/  Un[        S[        R                  SS/UR                  5       5      nOzUS:X  ai  UR                  [         R                  5      R                  [         R
                  5      n[        S[        R                  SS/UR                  5       5      nO[        S	5      eUS
:X  a  U" USS9nO8US:X  a	  U" USSS9nO)US:X  a  U" USS9nOUS:X  a
  U" USSSS9nO[        S	5      e[        U V	s/ s H  n	[        U	5      PM     sn	5      n
[        5       n[!        [        U5      Ul        SUl        UR&                  R)                  SS/5        [+        UR"                  5      n[!        X5      R)                  U
5        Un[,        R.                  R1                  SS/S/[!        [        U5      SS9n[3        UU/U/SU-   S-   U-   S9  GM     g s  sn	f )N)r   r   r   r   r   r    r!   r#   r3   r.   r   r5   r   r   r   r8   r   F)saturater   T)r6   r}   r   r"   )r7   r6   r}   r   r9   r:   r   )r;   r<   r=   r}   test_cast_no_saturate_r?   rC   )rD   rE   r   r   rF   rG   r	   r   r   rS   rT   rU   r   rV   bytesrO   rW   	data_typer@   dimsextendr
   rM   r   ra   r   )rb   rc   rd   rf   rg   rj   rp   r9   rq   rt   ivalstensorfieldr:   rw   s                  rx   export_saturate_falseCast.export_saturate_false  s6   	

 &(\\2G%H"%'\\2G%H"",Ihh jjG$ G#&#C):):QFGNNDTUi'&~~bjj9@@L#,,q!fl6I6I6K !M  .(5lUS,,5 TE L(5lUS,,5 TdU !M  848a3q6845E ]F&{G<FFKKK1v&)&*:*:;EF"))%0F;;((y!
;0 ) D w-	9FBWL	E #-b 5s   $I
 )returnN)__name__
__module____qualname____firstlineno__staticmethodry   r   __static_attributes__r   r{   rx   r   r      s-    r rh U Ur{   r   )rH   numpyrD   rM   r   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r   r	   r
   onnx.numpy_helperr   r   r   r   r{   rx   <module>r      s7   
    $ , .  KL4 Lr{   