o
    wi&                     @  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ZdS )CastLikereturnNonec               	   C  s  d} g d}t t}t t}|D ]R\}}d }d }|dks#|dkrt jg dt jd}tjdk}	|jt j	d}
|	rB|
dd d n|
d	d d }|dkrx|d
ksSJ |
ddg}|
ddg}tjttj|j}tjttj|j}nO|d
ks~J |
ddg}t jt|d ft j	d}|	r||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 }nP|dv s|dv rt jg dt jd}|dkr	t||}tdtjddg| }tdtjdg|d d }nx|dkr2t||dddd}tdtjddg| }tdtjdg|d d }nO|dkrWt||}tdtjddg| }tdtjdg|d d }n*|dkrt||dddddd}tdtjddg| }tdtjdg|d d }|d
kr|
d}|}|}n|d
ksJ |}|
d}| d d }nz|dkrt j|  t!t"t|}|dkrg }| D ]}t#|$d}|%d}|&| qt | t'
ddg}n| t!t"t|}| d	d }n$t jg dt (t'd
ddg}| t!t"t|}| d	d }tjj)dddgdgd}|rT|rTtj|j*j+|j}t,|||g|gd| d | ||g|gd qt,|||g|gd| d | d  qd 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NaN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outputstest_castlike__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lenflattenr
   r	   r   tolistr   r   r   r   randomrandom_sampleastypetensor_dtype_to_np_dtypegetattrstrencodedecodeappendobjectr   	make_nodetensor_type	elem_typer   )r9   
test_casesvect_float32_to_float8e4m3vect_float32_to_float8e5m2	from_typeto_typeinput_type_protooutput_type_protonp_fp32little_endisannp_uint16_viewnp_bfp16r#   r%   np_fp32_zerosnp_fp32_from_bfloatr$   expectedexpected_tensorlike_tensorssissunodelike_type_proto ra   a/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/castlike.pyexport   s&  















	 zCastLike.exportN)r   r   )__name__
__module____qualname__staticmethodrc   ra   ra   ra   rb   r      s    r   )
__future__r   r1   numpyr-   r6   r   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r   r	   onnx.numpy_helperr
   r   r   ra   ra   ra   rb   <module>   s   