o
    soi,                     @  s   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ eh dZeh dZed	d
hZG dd deZdS )    )annotationsN)TensorProto)Base)expect)make_tensortensor_dtype_to_np_dtype   
FLOAT8E5M2FLOAT8E4M3FNFLOAT8E4M3FNUZFLOAT8E5M2FNUZ>   INT4UINT4
FLOAT4E2M1UINT2INT2c                   @  s(   e Zd ZedddZedddZdS )	CastLikereturnNonec               	   C  s  g d} h d}| D ]g\}}||krq
t t|}t t|}t|}t|}|dks.|dkr;tjg dtjd}d}	ne||v sC||v rPtjg dtjd}d}	nP|d	v sX|d	v retd
dtj}d}	n;|dv sm|dv rztddtj}d}	n&|dks|dkrtjg dtjd}d}	ntjg dtjdddg}d}	|t	v rt
j||}
td||	|
dd}nD|tv r||}
t
j|
}td||	| dd}n)|tv r||}
t
j|
}td||	| dd}n||}
td||	|
dd}|t	v rtd||	t
j|
|dd}n@|tv r't
j|
|}td||	| dd}n&|tv rAt
j|
|}td||	| dd}ntd||	|
|dd}td|dg d}t
jjdddgdgd}t|||g|gd| d | d q
d S ) 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   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.48z0.25z1.05z-3.5z-89r*   r+   r!   r"   r#   r$   z-4z0.01z-0.0r'   inputTvalsrawoutputliker   r5   r   )inputsoutputstest_castlike__to_r;   r<   name)getattrr   r   nparrayfloat32arangeastypereshapeF8_TYPESonnxnumpy_helpersaturate_castr   FOUR_BIT_TYPES_pack_4bitx2tobytesTWO_BIT_TYPES_pack_2bitx4helper	make_noder   )
test_casesf8_types	from_typeto_type
from_dtypeto_dtypefrom_np_dtypeto_np_dtypenp_fp32input_shapenp_fromr3   packedr7   r8   node r`   X/home/ubuntu/.local/lib/python3.10/site-packages/onnx/backend/test/case/node/castlike.pyexport   s   3









 zCastLike.exportc                  C  s   t ddgg d} d}| D ]a\}}tt|}tt|}t|}t|}tjg dtjd}td|||	|dd	}	td
|||	|	|dd	}
td|dg d}t
jjdddgd
gdd}t||	|g|
gd| d | d qd S )Nr   r   )r
   r   r	   r   r,   r)   r%   r3   Tr4   r7   r8   r9   r:   r   r   )r;   r<   saturatetest_castlike_no_saturate_r>   r?   )	itertoolsproductrA   r   r   rB   rC   rD   r   rF   rI   rQ   rR   r   )rS   r\   rU   rV   rW   rX   rY   rZ   r[   r3   r7   r8   r_   r`   r`   ra   export_saturate_false   sX   

zCastLike.export_saturate_falseN)r   r   )__name__
__module____qualname__staticmethodrb   rg   r`   r`   r`   ra   r      s     hr   )
__future__r   re   numpyrB   rI   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r   	frozensetrH   rL   rO   r   r`   r`   r`   ra   <module>   s   