§
    1�Åj“6  ã                  óÔ   — 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 d dlmZ  eh d£¦  «        Z eh d	£¦  «        Z ed
dh¦  «        Z G d„ de¦  «        ZdS )é    )ÚannotationsN)ÚTensorProto)ÚBase)Úexpect)Úmake_tensorÚtensor_dtype_to_np_dtype)Úto_float8e8m0>   Ú
FLOAT8E5M2ÚFLOAT8E4M3FNÚFLOAT8E4M3FNUZÚFLOAT8E5M2FNUZ>   ÚINT4ÚUINT4Ú
FLOAT4E2M1ÚUINT2ÚINT2c                  óV   — e Zd Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )ÚCastÚreturnÚNonec            
     óŒ  — g d¢} | D �];\  }}||k    rŒt          t          |¦  «        }t          t          |¦  «        }t          |¦  «        }t          |¦  «        }|dk    s|dk    r&t          j        g d¢t          j        ¬¦  «        }d}�n|t          v s	|t          v r%t          j        g d¢t          j        ¬¦  «        }d}nä|dv s|dv r5t          j        d	d
¦  «                             t          j        ¦  «        }d}n§|dv s|dv r5t          j        dd¦  «                             t          j        ¦  «        }d}nj|dk    s|dk    r%t          j        g d¢t          j        ¬¦  «        }d}n9t          j        g d¢t          j        ¬¦  «         	                    ddg¦  «        }d}|t          v r5t          j                             ||¦  «        }	t          d|||	d¬¦  «        }
nñ|t          v r[|                     |¦  «        }	t          j                             |	¦  «        }t          d|||                     ¦   «         d¬¦  «        }
n�|t"          v r[|                     |¦  «        }	t          j                             |	¦  «        }t          d|||                     ¦   «         d¬¦  «        }
n)|                     |¦  «        }	t          d|||	d¬¦  «        }
|t          v r3t          d||t          j                             |	|¦  «        d¬¦  «        }në|t          v rYt          j                             |	                     |¦  «        ¦  «        }t          d|||                     ¦   «         d¬¦  «        }n‰|t"          v rYt          j                             |	                     |¦  «        ¦  «        }t          d|||                     ¦   «         d¬¦  «        }n't          d|||	                     |¦  «        d¬¦  «        }t          j                             ddgdg|¬¦  «        }t+          ||
g|gd|z   dz   |z   ¬¦  «         �Œ=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   )ú
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÷ÿÿÿé   )r0   r0   )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_fromr7   Úpackedr;   Únodes                 úQC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/cast.pyÚexportzCast.export   sù  € ð1
ð 1
ð 1
ˆ
ðf #-ð i	ñ i	ÑˆI�wØ˜GÒ#Ð#àÝ ¥¨iÑ8Ô8ˆJÝ�{¨GÑ4Ô4ˆHÝ4°ZÑ@Ô@ˆMÝ2°8Ñ<Ô<ˆKà˜JÒ&Ð&¨'°ZÒ*?Ð*?Ýœ(ðð ð õ œ*ðñ ô �ð" %�‘à�hÐ&Ð&¨'µXÐ*=Ð*=Ýœ(ðð ð õ" œ*ð%ñ ô �ð( %��ØÐ/Ð/Ð/°7Ð>OÐ3OÐ3OÝœ) B¨Ñ+Ô+×2Ò2µ2´:Ñ>Ô>�Ø$��ØÐ/Ð/Ð/°7Ð>OÐ3OÐ3OÝœ) B¨Ñ*Ô*×1Ò1µ"´*Ñ=Ô=�Ø$��Ø˜lÒ*Ð*¨g¸Ò.EÐ.EÝœ(ðð ð õ" œ*ð%ñ ô �ð( %��õ œ(ðð ð õ œ*ðñ ô ÷  ’'˜1˜a˜&‘/”/ð! ð" %�à�HÐ$Ð$ÝÔ+×9Ò9¸'À=ÑQÔQ�Ý#ØØØØ Øðñ ô ��ð �nÐ,Ð,Ø!Ÿ.š.¨Ñ7Ô7�ÝÔ*×7Ò7¸Ñ@Ô@�õ $Ø˜Z¨¸6¿>º>Ñ;KÔ;KÐQUðñ ô ��ð �mÐ+Ð+Ø!Ÿ.š.¨Ñ7Ô7�ÝÔ*×7Ò7¸Ñ@Ô@�Ý#Ø˜Z¨¸6¿>º>Ñ;KÔ;KÐQUðñ ô ��ð "Ÿ.š.¨Ñ7Ô7�Ý#Ø˜Z¨¸7Èðñ ô �ð �(Ð"Ð"Ý$ØØØÝÔ*×8Ò8¸À+ÑNÔNØðñ ô ��ð �NÐ*Ð*ÝÔ*×7Ò7¸¿ºÀ{Ñ8SÔ8SÑTÔT�õ %Ø˜h¨¸&¿.º.Ñ:JÔ:JÐPTðñ ô ��ð �MÐ)Ð)ÝÔ*×7Ò7¸¿ºÀ{Ñ8SÔ8SÑTÔT�Ý$Ø˜h¨¸&¿.º.Ñ:JÔ:JÐPTðñ ô ��õ %ØØØØ Ÿš¨Ñ4Ô4Øðñ ô �õ ”;×(Ò(ØØ�yØ!˜
Øð	 )ñ ô ˆDõ ØØ�wØ˜Ø! IÑ-°Ñ6¸Ñ@ð	ñ ô ð ñ ðIi	ð i	ó    c            	     ón  — t          j        ddgg d¢¦  «        } d}| D �]\  }}t          t          |¦  «        }t          t          |¦  «        }t	          |¦  «        }t	          |¦  «        }t          j        g d¢t
          j        ¬¦  «        }t          d||| 	                    |¦  «        d¬	¦  «        }	t          d
||| 	                    |¦  «         	                    |¦  «        d¬	¦  «        }
t          j                             ddgd
g|d¬¦  «        }t          ||	g|
gd|z   dz   |z   ¬¦  «         �Œd S )Nr   r   )r   r   r
   r   r/   r,   r(   r7   Tr8   r;   r   r   )r=   r>   r?   ÚsaturateÚtest_cast_no_saturate_rA   rB   )Ú	itertoolsÚproductrD   r   r   rE   rF   rG   r   rJ   rL   rT   rU   r   )rV   r^   rW   rX   rY   rZ   r[   r\   r]   r7   r;   ra   s               rb   Úexport_saturate_falsezCast.export_saturate_falseú   s–  € åÔ&àØððð ð ñ
ô 
ˆ
ð ˆØ",ð 5	ñ 5	ÑˆI�wÝ ¥¨iÑ8Ô8ˆJÝ�{¨GÑ4Ô4ˆHÝ4°ZÑ@Ô@ˆMÝ2°8Ñ<Ô<ˆKÝ”hðð ð õ" ”jð%ñ ô ˆGõ*  ØØØØ—^’^ MÑ2Ô2Øðñ ô ˆEõ !ØØØØ—^’^ MÑ2Ô2×9Ò9¸+ÑFÔFØðñ ô ˆFõ ”;×(Ò(ØØ�yØ!˜
ØØð )ñ ô ˆDõ ØØ�wØ˜Ø-°	Ñ9¸FÑBÀWÑLð	ñ ô ð ñ ða5	ð 5	rd   c            
     óì  — t          j        g d¢t           j        ¬¦  «        } g d¢}|D �]É\  }}|dk    r| }t          | ¦  «        }nÂ|dk    r/|                      t           j        ¦  «        }t          |¦  «        }n�|dk    rqt          | ¦  «        }|dk    r |                     t           j        ¦  «        }nR|dk    r |                     t           j        ¦  «        }n,t          d|› d|› d	�¦  «        ‚t          d|› d|› d	�¦  «        ‚t          d
t          t          |¦  «        ddg|d¬¦  «        }t          dt          t          |¦  «        ddg|d¬¦  «        }|dk    r;t          j                             dd
gdgt          t          |¦  «        dd¬¦  «        }n8t          j                             dd
gdgt          t          |¦  «        ¬¦  «        }t          ||g|gd|z   dz   |z   ¬¦  «         �ŒËd S )N)z0.0z0.124r5   z0.5z1.1z2.0z4.0z8.0r(   ))r   Ú
FLOAT8E8M0)r   rl   )rl   r   )rl   r   r   r   rl   zConversion from z to z is not tested.r7   é   r+   T)r:   r;   r   r4   Úup)r=   r>   r?   rf   Ú
round_moder<   Útest_cast_e8m0_rA   rB   )rE   rF   rG   r	   rJ   Úfloat16Ú
ValueErrorr   rD   r   rL   rT   rU   r   )	r]   rV   rW   rX   Úinput_npÚ	output_npr7   r;   ra   s	            rb   Úexport_e8m0zCast.export_e8m0@  s|  € å”(ð	ð 	ð 	õ ”*ð
ñ 
ô 
ˆð
ð 
ð 
ˆ
ð #-ð 9	ñ 9	ÑˆI�wØ˜GÒ#Ð#Ø"�Ý)¨'Ñ2Ô2�	�	Ø˜iÒ'Ð'Ø"Ÿ>š>­"¬*Ñ5Ô5�Ý)¨(Ñ3Ô3�	�	Ø˜lÒ*Ð*Ý(¨Ñ1Ô1�Ø˜gÒ%Ð%Ø (§¢µ´
Ñ ;Ô ;�I�IØ 	Ò)Ð)Ø (§¢µ´
Ñ ;Ô ;�I�Iå$ØR¨9ÐRÐR¸'ÐRÐRÐRñô ð õ !ØN yÐNÐN°gÐNÐNÐNñô ð õ  ØÝ� YÑ/Ô/Ø�A�ØØðñ ô ˆEõ !ØÝ� WÑ-Ô-Ø�A�ØØðñ ô ˆFð ˜,Ò&Ð&Ý”{×,Ò,ØØ#˜9Ø%˜JÝ�{¨GÑ4Ô4ØØ#ð -ñ ô ��õ ”{×,Ò,ØØ#˜9Ø%˜JÝ�{¨GÑ4Ô4ð	 -ñ ô �õ ØØ�wØ˜Ø&¨Ñ2°VÑ;¸gÑEð	ñ ô ð ñ ði9	ð 9	rd   N)r   r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodrc   rj   ru   © rd   rb   r   r      s‚   € € € € € Øð]ð ]ð ]ñ „\ð]ð~ ðCð Cð Cñ „\ðCðJ ðMð Mð Mñ „\ðMð Mð Mrd   r   )Ú
__future__r   rh   ÚnumpyrE   rL   r   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   Úonnx.helperr   r   Úonnx.numpy_helperr	   Ú	frozensetrH   rO   rR   r   rz   rd   rb   ú<module>r‚      s*  ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +àˆ9ÐWÐWÐWÑXÔX€Ø�Ð:Ð:Ð:Ñ;Ô;€Ø�	˜7 FÐ+Ñ,Ô,€ðuð uð uð uð uˆ4ñ uô uð uð uð urd   