U
    rh&                     @  s   d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZ G dd	 d	e	ZdS )
    )annotationsN)TensorProtohelper)Base)expect)float32_to_float8e4m3float32_to_float8e5m2make_tensor)float8e4m3_to_float32float8e5m2_to_float32c                   @  s   e Zd ZeddddZdS )CastLikeNone)returnc                  C  s8  d} dddddddd	d
dddddddddg}t t}t t}|D ]\}}d }d }|dksh|dkrt jdddddddddddd gt jd!}tjd"k}	|jt j	d!}
|	r|
d#d d$ n|
d%d d$ }|dkr(|d&kst
|d'd(g}|d'd(g}tjttj|j}tjttj|j}n|d&ks6t
|d'd(g}t jt|d$ ft j	d!}|	rt||d#d d$< n||d%d d$< |jt jd!}|d'd(g}tjttj|j}tjttj|j}| d%d# }n|d)ks|d)krt jdddddddddddd gt jd!}|d*krdt||}td+tjd'd(g| }td+tjd#g|d d# }n|d,krt||d-d.d-d.}td+tjd'd(g| }td+tjd#g|d d# }n|d/kr t||}td+tjd'd(g| }td+tjd#g|d d# }nT|d0krTt||d-d-d1d-d-d1}td+tjd'd(g| }td+tjd#g|d d# }|d&krr|d}|}|}n,|d&kst
|}|d}| d d# }n|d2krNt j | !t"t#t|}|d2kr&g }| D ](}t$|%d3}|&d3}|'| qt |!t(d'd(g}n|!t"t#t|}| d%d# }n\t jdddddddddddd gt )t(d!d'd(g}|!t"t#t|}| d%d# }tjj*d4d5d6gd7gd8}|r|rtj|j+j,|j}t-|||g|gd9| d: | ||g|gd; qDt-|||g|gd9| d: | d< qDd S )=N)      )FLOATFLOAT16)r   DOUBLE)r   r   )r   r   )r   r   )r   r   )r   STRING)r   r   )r   BFLOAT16)r   r   )r   FLOAT8E4M3FN)r   FLOAT8E4M3FNUZ)r   r   )r   r   )r   
FLOAT8E5M2)r   FLOAT8E5M2FNUZ)r   r   )r   r   r   z
0.47892547z
0.48033667z
0.49968487z
0.81910545z
0.47031248z0.816468z
0.21087195z	0.7229038NaNZINFz+INFz-INF)dtypelittle      r   r   r   r   )r   r   r   r   r   xr   T)uzr   r   )fnr    r   zutf-8r   inputlikeoutput)inputsoutputsZtest_castlike_Z_to_)r%   r&   nameZinput_type_protosZoutput_type_protos)r%   r&   r'   ).npZ	vectorizer   r   arrayZfloat32sys	byteorderviewZuint16AssertionErrorZreshapeonnxr   Zmake_tensor_type_protointr   r   shaper   zeroslenflattenr
   r	   r   tolistr   r   r   r   randomZrandom_sampleZastypeZtensor_dtype_to_np_dtypegetattrstrencodedecodeappendobjectr   Z	make_nodeZtensor_typeZ	elem_typer   )r0   Z
test_casesZvect_float32_to_float8e4m3Zvect_float32_to_float8e5m2Z	from_typeZto_typeZinput_type_protoZoutput_type_protoZnp_fp32Zlittle_endisanZnp_uint16_viewZnp_bfp16r"   r$   Znp_fp32_zerosZnp_fp32_from_bfloatr#   expectedZexpected_tensorZlike_tensorssisZsunodeZlike_type_proto rA   H/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/castlike.pyexport   s   



    

      


       

      

      






 	zCastLike.exportN)__name__
__module____qualname__staticmethodrC   rA   rA   rA   rB   r      s   r   )
__future__r   r*   Znumpyr(   r.   r   r   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   Zonnx.helperr   r   r	   Zonnx.numpy_helperr
   r   r   rA   rA   rA   rB   <module>   s   