§
    1�Åj«7  ã                  ón   — d dl m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  G d„ de¦  «        ZdS )	é    )ÚannotationsN)ÚTensorProto)ÚBase)Úexpect)Úmake_tensorc                  óF  — e Zd Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	edd	„¦   «         Z
edd
„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )ÚQuantizeLinearÚreturnÚNonec                 óš  — t           j                             dg d¢dg¬¦  «        } t          j        g d¢¦  «                             t          j        ¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j        g d¢¦  «                             t          j        ¦  «        }t          | |||g|gd	¬
¦  «         d S )Nr	   ©ÚxÚy_scaleÚy_zero_pointÚy©ÚinputsÚoutputs)r   é   é   iè  iÿÿÿiüÿÿr   é€   )r   é�   é‚   éÿ   é   r   Útest_quantizelinear©r   r   Úname)	ÚonnxÚhelperÚ	make_nodeÚnpÚarrayÚastypeÚfloat32Úuint8r   ©Únoder   r   r   r   s        ú[C:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/quantizelinear.pyÚexportzQuantizeLinear.export   sÍ   € åŒ{×$Ò$ØØ3Ð3Ð3Ø�Eð %ñ 
ô 
ˆõ ŒHÐ1Ð1Ð1Ñ2Ô2×9Ò9½"¼*ÑEÔEˆÝ”*˜Q‘-”-ˆÝ”x ‘}”}ˆÝŒHÐ/Ð/Ð/Ñ0Ô0×7Ò7½¼ÑAÔAˆåØØ�w Ð-Ø�CØ&ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
ó    c                 ó&  — t           j                             dg d¢dg¬¦  «        } t          j        ddgddgd	d
ggddgddgddggddgddgddggggt          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        }||                     dddd¦  «        z  |                     dddd¦  «        z                        t          j        ¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   i^ÿÿÿé
   iœÿÿÿéè   éìÿÿÿiÎÿÿÿi´ÿÿÿr   éü   é    iÔÿÿÿéõ   iþÿÿi@üÿÿiòþÿÿi‰þÿÿi*þÿÿ©Údtype)r   é   é   )éT   é   éÄ   r   r   Útest_quantizelinear_axisr   )
r   r    r!   r"   r#   r%   r&   Úreshaper$   r   r'   s        r)   Úexport_axiszQuantizeLinear.export_axis$   sT  € åŒ{×$Ò$ØØ3Ð3Ð3Ø�Eð %ñ 
ô 
ˆõ ŒHð ˜B�Z $¨ ¨s°C¨jÐ9Ø˜1�X  3˜x¨"¨c¨Ð3Ø˜4�[ 4¨ ,°°t°Ð=ððõ ”*ð	
ñ 	
ô 	
ˆõ ”(˜9˜9˜9­B¬JÐ7Ñ7Ô7ˆÝ”x   µR´XÐ>Ñ>Ô>ˆØ�—’  A q¨!Ñ,Ô,Ñ,¨|×/CÒ/CÀAÀqÈ!ÈQÑ/OÔ/OÑO×WÒWÝŒHñ
ô 
ˆõ 	ØØ�w Ð-Ø�CØ+ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 ó†  — t           j                             dg d¢dg¬¦  «        } t          j        g d¢¦  «                             t          j        ¦  «        }t          j        d¦  «        }t          dt          j	        dgd	g¦  «        }t          dt          j	        d
gg d¢¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   ©ç        ç      ð?ç       @g     jø@g      i@r   r   r   r   r6   )r   ç      à?r   iÀ  é`   Útest_quantizelinear_e4m3fnr   )r   r    r!   r"   r#   r$   r%   r   r   ÚFLOAT8E4M3FNr   r'   s        r)   Úexport_e4m3fnzQuantizeLinear.export_e4m3fnC   sÕ   € åŒ{×$Ò$ØØ3Ð3Ð3Ø�Eð %ñ 
ô 
ˆõ ŒHÐ5Ð5Ð5Ñ6Ô6×=Ò=½b¼jÑIÔIˆÝ”*˜Q‘-”-ˆÝ" >µ;Ô3KÈaÈSÐSTÐRUÑVÔVˆÝ˜�[Ô5¸°sÐ<PÐ<PÐ<PÑQÔQˆåØØ�w Ð-Ø�CØ-ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 ó†  — t           j                             dg d¢dg¬¦  «        } t          j        g d¢¦  «                             t          j        ¦  «        }t          j        d¦  «        }t          dt          j	        dgd	g¦  «        }t          dt          j	        d
gg d¢¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   r>   r   r   r   r?   r6   )r   rB   r   i À  rC   Útest_quantizelinear_e5m2r   )r   r    r!   r"   r#   r$   r%   r   r   Ú
FLOAT8E5M2r   r'   s        r)   Úexport_e5m2zQuantizeLinear.export_e5m2W   sÕ   € åŒ{×$Ò$ØØ3Ð3Ð3Ø�Eð %ñ 
ô 
ˆõ ŒHÐ5Ð5Ð5Ñ6Ô6×=Ò=½b¼jÑIÔIˆÝ”*˜Q‘-”-ˆÝ" >µ;Ô3IÈAÈ3ÐQTÐPUÑVÔVˆÝ˜�[Ô3°a°SÐ:PÐ:PÐ:PÑQÔQˆåØØ�w Ð-Ø�CØ+ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 óš  — t           j                             dg d¢dg¬¦  «        } t          j        g d¢¦  «                             t          j        ¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j        g d¢¦  «                             t          j        ¦  «        }t          | |||g|gd	¬
¦  «         d S )Nr	   r   r   r   )r?   g      `Àç      @ç      Àç333333@ç333333ÀçÍÌÌÌÌÌ@çÍÌÌÌÌÌÀg      ð@g    ÀÿïÀç     ñ@ç     ñÀrA   éÿ  )rT   i¿  é€  éý  i €  iþ  rU   rV   éÿÿ  r   rW   r   Útest_quantizelinear_uint16r   )	r   r    r!   r"   r#   r$   r%   Úuint16r   r'   s        r)   Úexport_uint16zQuantizeLinear.export_uint16k   sï   € åŒ{×$Ò$ØØ3Ð3Ð3Ø�Eð %ñ 
ô 
ˆõ ŒHðð ð ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ  ”*˜S‘/”/ˆÝ”y Ñ'Ô'ˆÝŒHðð ð ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ" 	ØØ�w Ð-Ø�CØ-ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 óš  — t           j                             dg d¢dg¬¦  «        } t          j        g d¢¦  «                             t          j        ¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j        g d¢¦  «                             t          j        ¦  «        }t          | |||g|gd	¬
¦  «         d S )Nr	   r   r   r   )r?   g     €ÀrL   rM   rN   rO   rP   rQ   g    À¿ï@g    àðÀg    à¿ï@g    ððÀg     Àï@g      ðÀrR   rS   rA   é   )r\   éÿÿÿÿé  éþ   i  r   r^   r_   rT   i€ÿÿrT   é €ÿÿrT   r`   rT   r`   Útest_quantizelinear_int16r   )	r   r    r!   r"   r#   r$   r%   Úint16r   r'   s        r)   Úexport_int16zQuantizeLinear.export_int16�   sí   € åŒ{×$Ò$ØØ3Ð3Ð3Ø�Eð %ñ 
ô 
ˆõ ŒHðð ð ñ
ô 
÷& Š&•”Ñ
Ô
ð' 	
õ( ”*˜S‘/”/ˆÝ”x ‘}”}ˆÝŒHðð ð ñ
ô 
÷& Š&•”Ñ
Ô
ð' 	
õ* 	ØØ�w Ð-Ø�CØ,ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 óä  — t           j                             dg d¢dgd¬¦  «        } t          j        g d¢g d¢g d¢g¦  «                             t          j        ¦  «        }t          j        g d	¢t          j        ¬
¦  «        }t          dt          j
        |j        t          j        |¦  «        ¦  «        }t          dt          j
        |j        g d¢¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   ©r   r   Úaxis©r?   ç      @g333333@g333333!@©iâÿÿÿr/   é   é	   ©é   é   é   é(   ©rA   rL   ç      @r3   r   )r   r   r   r6   r   r   r   r5   r5   r6   r6   é   Útest_quantizelinear_uint4r   )r   r    r!   r"   r#   r$   r%   Úasarrayr   r   ÚUINT4ÚshapeÚ	ones_liker   r'   s        r)   Úexport_uint4zQuantizeLinear.export_uint4×   s  € åŒ{×$Ò$ØØ3Ð3Ð3Ø�EØð	 %ñ 
ô 
ˆõ ŒHà$Ð$Ð$Ø Ð Ð Ø Ð Ð ðñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ”*˜_˜_˜_µB´JÐ?Ñ?Ô?ˆÝ"Ø�KÔ-¨w¬}½b¼lÈ7Ñ>SÔ>Sñ
ô 
ˆõ Ø•Ô" A¤GÐ-RÐ-RÐ-Rñ
ô 
ˆõ 	ØØ�w Ð-Ø�CØ,ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 óä  — t           j                             dg d¢dgd¬¦  «        } t          j        g d¢g d¢g d¢g¦  «                             t          j        ¦  «        }t          j        g d	¢t          j        ¬
¦  «        }t          dt          j
        |j        t          j        |¦  «        ¦  «        }t          dt          j
        |j        g d¢¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   re   rg   ri   rl   rq   r3   r   )r   r   r   r6   éøÿÿÿéúÿÿÿr   r5   r5   r6   r6   é   Útest_quantizelinear_int4r   )r   r    r!   r"   r#   r$   r%   ru   r   r   ÚINT4rw   rx   r   r'   s        r)   Úexport_int4zQuantizeLinear.export_int4÷   s  € åŒ{×$Ò$ØØ3Ð3Ð3Ø�EØð	 %ñ 
ô 
ˆõ ŒHà$Ð$Ð$Ø Ð Ð Ø Ð Ð ðñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ”*˜_˜_˜_µB´JÐ?Ñ?Ô?ˆÝ"Ø�KÔ,¨g¬m½R¼\È'Ñ=RÔ=Rñ
ô 
ˆõ Ø•Ô! 1¤7Ð,RÐ,RÐ,Rñ
ô 
ˆõ 	ØØ�w Ð-Ø�CØ+ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 óÂ  — t           j                             dg d¢dgd¬¦  «        } t          j        g d¢g d¢g d¢gt          j        ¬	¦  «        }t          j        g d
¢t          j        ¬	¦  «        }t          dt          j	        |j
        t          j        |¦  «        ¦  «        }t          dt          j	        |j
        g d¢¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   re   rg   )g       Àg      ð¿r@   rL   )rr   ç      @ç      @g      @r3   rq   r   )r   r   r   r   r   r   r   r   r   r   r   r   Útest_quantizelinear_uint2r   )r   r    r!   r"   r#   r%   ru   r   r   ÚUINT2rw   Ú
zeros_liker   r'   s        r)   Úexport_uint2zQuantizeLinear.export_uint2  s  € åŒ{×$Ò$ØØ3Ð3Ð3Ø�EØð	 %ñ 
ô 
ˆõ ŒHà$Ð$Ð$Ø&Ð&Ð&Ø$Ð$Ð$ðõ
 ”*ð
ñ 
ô 
ˆõ ”*˜_˜_˜_µB´JÐ?Ñ?Ô?ˆÝ"Ø�KÔ-¨w¬}½b¼mÈGÑ>TÔ>Tñ
ô 
ˆõ Ø•Ô" A¤GÐ-QÐ-QÐ-Qñ
ô 
ˆõ 	ØØ�w Ð-Ø�CØ,ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 óÂ  — t           j                             dg d¢dgd¬¦  «        } t          j        g d¢g d¢g d¢gt          j        ¬	¦  «        }t          j        g d
¢t          j        ¬	¦  «        }t          dt          j	        |j
        t          j        |¦  «        ¦  «        }t          dt          j	        |j
        g d¢¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   re   rg   )g      ÀrM   r@   rA   ©g       €g      Àg333333Àg333333!Àr3   rq   r   )r   r   r   r   r]   r]   r   r   r   r]   r]   éþÿÿÿÚtest_quantizelinear_int2r   )r   r    r!   r"   r#   r%   ru   r   r   ÚINT2rw   r†   r   r'   s        r)   Úexport_int2zQuantizeLinear.export_int26  s  € åŒ{×$Ò$ØØ3Ð3Ð3Ø�EØð	 %ñ 
ô 
ˆõ ŒHà$Ð$Ð$Ø&Ð&Ð&Ø(Ð(Ð(ðõ
 ”*ð
ñ 
ô 
ˆõ ”*˜_˜_˜_µB´JÐ?Ñ?Ô?ˆÝ"Ø�KÔ,¨g¬m½R¼]È7Ñ=SÔ=Sñ
ô 
ˆõ Ø•Ô! 1¤7Ð,UÐ,UÐ,Uñ
ô 
ˆõ 	ØØ�w Ð-Ø�CØ+ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 óä  — t           j                             dg d¢dgd¬¦  «        } t          j        g d¢g d¢g d¢g¦  «                             t          j        ¦  «        }t          j        g d	¢t          j        ¬
¦  «        }t          dt          j
        |j        t          j        |¦  «        ¦  «        }t          dt          j
        |j        g d¢¦  «        }t          | |||g|gd¬¦  «         d S )Nr	   r   r   r   re   rg   ri   r‰   rq   r3   r   )r   r   r   r5   r|   r|   r   r   r   g      à¿r]   rŠ   Útest_quantizelinear_float4e2m1r   )r   r    r!   r"   r#   r$   r%   ru   r   r   Ú
FLOAT4E2M1rw   r†   r   r'   s        r)   Úexport_float4e2m1z QuantizeLinear.export_float4e2m1T  s  € åŒ{×$Ò$ØØ3Ð3Ð3Ø�EØð	 %ñ 
ô 
ˆõ ŒHà$Ð$Ð$Ø Ð Ð Ø(Ð(Ð(ðñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ”*˜_˜_˜_µB´JÐ?Ñ?Ô?ˆÝ"ØÝÔ"ØŒMÝŒM˜'Ñ"Ô"ñ	
ô 
ˆõ ØÝÔ"ØŒGØ7Ð7Ð7ñ	
ô 
ˆõ 	ØØ�w Ð-Ø�CØ1ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 ód  ‡‡‡— t           j                             dg d¢dgdd¬¦  «        } t          j        g d¢g d¢g d	¢gt          j        ¬
¦  «        Št          j        ddgddgddggt          j        ¬
¦  «        Št          j        ddgddgddggt          j        ¬
¦  «        }‰j        |j        k    sJ ‚dŠt          ˆˆˆfd„t          t          ‰j        ¦  «        ¦  «        D ¦   «         ¦  «        sJ ‚‰j        ‰         ‰j        ‰         z  dk    sJ ‚‰j        ‰         ‰j        ‰         z  }t          j        ‰|‰¬¦  «        }t          j        ||‰¬¦  «        }t          j        ‰|z  |z   ¦  «                             t          j        ¦  «        }t          | ‰‰|g|gd¬¦  «         d S )Nr	   r   r   r   r   )r   r   rf   Ú
block_size)rƒ   g      (@g      I@r‚   ©r@   g       @rr   r‚   ©r?   g      4@g      $@rr   r3   ç      ø?rh   rL   çš™™™™™@çffffff@çš™™™™™@r   r   c              3  ó\   •K  — | ]&}|‰k    ¯‰j         |         ‰j         |         k    V — Œ'd S ©N©rw   ©Ú.0ÚiÚ
block_axisr   r   s     €€€r)   ú	<genexpr>z;QuantizeLinear.export_blocked_asymmetric.<locals>.<genexpr>¡  óG   øè è € ð 
ð 
àØ�JŠˆð ŒG�AŒJ˜'œ-¨Ô*Ò*àˆˆˆð
ð 
r+   ©Úrepeatsrf   Ú&test_quantizelinear_blocked_asymmetricr   )r   r    r!   r"   r#   r%   r&   rw   ÚallÚrangeÚlenÚrepeatÚrintr$   r   )	r(   r   r¤   Úy_scale_elementwiseÚy_zero_point_elementwiser   r    r   r   s	         @@@r)   Úexport_blocked_asymmetricz(QuantizeLinear.export_blocked_asymmetricz  s:  øøø€ åŒ{×$Ò$ØØ3Ð3Ð3Ø�EØØð %ñ 
ô 
ˆõ ŒHà&Ð&Ð&Ø$Ð$Ð$Ø&Ð&Ð&ðõ
 ”*ð
ñ 
ô 
ˆõ ”(à�c�
Ø�c�
Ø�c�
ðõ
 ”*ð
ñ 
ô 
ˆõ ”xà�A�Ø�A�Ø�A�ðõ
 ”(ð
ñ 
ô 
ˆð Œ} Ô 2Ò2Ð2Ð2Ð2Øˆ
åð 
ð 
ð 
ð 
ð 
ð 
å�3˜qœw™<œ<Ñ(Ô(ð
ñ 
ô 
ñ 
ô 
ð 	
ð 	
ð 
ð
 Œw�zÔ" W¤]°:Ô%>Ñ>À!ÒCÐCÐCÐCØ”'˜*Ô%¨¬°zÔ)BÑBˆõ !œi¨¸ÀzÐRÑRÔRÐÝ#%¤9Ø '°
ð$
ñ $
ô $
Ð õ ŒG�AÐ+Ñ+Ð.FÑFÑGÔG×NÒNÍrÌxÑXÔXˆåØØ�w Ð-Ø�CØ9ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   c                 ó:  ‡‡‡— t           j                             dddgdgddt          j        ¬¦  «        } t          j        g d¢g d	¢g d
¢gt
          j        ¬¦  «        Št          j        ddgddgddggt
          j        ¬¦  «        ŠdŠt          ˆˆˆfd„t          t          ‰j        ¦  «        ¦  «        D ¦   «         ¦  «        sJ ‚‰j        ‰         ‰j        ‰         z  dk    sJ ‚‰j        ‰         ‰j        ‰         z  }t          j        ‰|‰¬¦  «        }t          j        t          j        ‰|z  ¦  «        dd¬¦  «                             t
          j        ¦  «        }t#          dt          j        ‰j        |¦  «        }t%          | ‰‰g|gd¬¦  «         d S )Nr	   r   r   r   r   r   )r   r   rf   r“   Úoutput_dtype)rƒ   r{   iöÿÿÿr‚   r”   r•   r3   r–   rh   rL   r—   r˜   r™   c              3  ó\   •K  — | ]&}|‰k    ¯‰j         |         ‰j         |         k    V — Œ'd S r›   rœ   r�   s     €€€r)   r¡   z:QuantizeLinear.export_blocked_symmetric.<locals>.<genexpr>Ú  r¢   r+   r   r£   r`   rT   )Úa_minÚa_maxÚ%test_quantizelinear_blocked_symmetricr   )r   r    r!   r   ÚINT16r"   r#   r%   r¦   r§   r¨   rw   r©   Úcliprª   r$   rb   r   r   )r(   r¤   r«   Úy_valr   r    r   r   s        @@@r)   Úexport_blocked_symmetricz'QuantizeLinear.export_blocked_symmetric¸  s  øøø€ åŒ{×$Ò$ØØ˜Ð#Ø�EØØÝ$Ô*ð %ñ 
ô 
ˆõ ŒHà#Ð#Ð#Ø$Ð$Ð$Ø&Ð&Ð&ðõ
 ”*ð
ñ 
ô 
ˆõ ”(à�c�
Ø�c�
Ø�c�
ðõ
 ”*ð
ñ 
ô 
ˆð ˆ
åð 
ð 
ð 
ð 
ð 
ð 
å�3˜qœw™<œ<Ñ(Ô(ð
ñ 
ô 
ñ 
ô 
ð 	
ð 	
ð 
ð
 Œw�zÔ" W¤]°:Ô%>Ñ>À!ÒCÐCÐCÐCØ”'˜*Ô%¨¬°zÔ)BÑBˆõ !œi¨¸ÀzÐRÑRÔRÐå”ÝŒG�AÐ+Ñ+Ñ,Ô,°FÀ%ð
ñ 
ô 
ç
Š&•”Ñ
Ô
ð 	õ ØÝÔØŒGØñ	
ô 
ˆõ 	ØØ�w�<Ø�CØ8ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r+   N)r
   r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr*   r<   rF   rJ   rZ   rc   ry   r€   r‡   r�   r‘   r­   r·   © r+   r)   r	   r	      s¶  € € € € € Øð
ð 
ð 
ñ „\ð
ð& ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ð& ð
ð 
ð 
ñ „\ð
ð& ð/
ð /
ð /
ñ „\ð/
ðb ð7
ð 7
ð 7
ñ „\ð7
ðr ð
ð 
ð 
ñ „\ð
ð> ð
ð 
ð 
ñ „\ð
ð> ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ð: ð#
ð #
ð #
ñ „\ð#
ðJ ð;
ð ;
ð ;
ñ „\ð;
ðz ð:
ð :
ð :
ñ „\ð:
ð :
ð :
r+   r	   )Ú
__future__r   Únumpyr"   r   r   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   Úonnx.helperr   r	   r¼   r+   r)   ú<module>rÂ      s´   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ø #Ð #Ð #Ð #Ð #Ð #ðd
ð d
ð d
ð d
ð d
�Tñ d
ô d
ð d
ð d
ð d
r+   