
    Ng*                     b    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 )    N)TensorProto)Base)expect)make_tensorc                       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dS )QuantizeLinearreturnNc                     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        f/var/www/html/ai-engine/env/lib/python3.11/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   iir          i   ii@iii*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 BZ$sCj91X3x"c34[4,t= *	
 	
 	
 (999BJ777xRX>>>Aq!,,,|/C/CAq!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   r4   )r         ?r   i  `   test_quantizelinear_e4m3fnr   )r   r   r   r    r!   r"   r#   r   r   FLOAT8E4M3FNr   r%   s        r'   export_e4m3fnzQuantizeLinear.export_e4m3fnB   s    {$$333E % 
 
 H55566==bjII*Q--">;3KaSSTRU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=   r4   )r   r@   r   i   rA   test_quantizelinear_e5m2r   )r   r   r   r    r!   r"   r#   r   r   
FLOAT8E5M2r   r%   s        r'   export_e5m2zQuantizeLinear.export_e5m2V   s    {$$333E % 
 
 H55566==bjII*Q--">;3IA3QTPUVV[3aS: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         @     r?     )rR   i      i   i  rS   rT     r   rU   r   test_quantizelinear_uint16r   )	r   r   r   r    r!   r"   r#   uint16r   r%   s        r'   export_uint16zQuantizeLinear.export_uint16j   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     rJ   rK   rL   rM   rN   rO   g    @g    g    @g    g     @g      rP   rQ   r?      )rZ        i  r   r\   r]   rR   irR    rR   r^   rR   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!@ir-      	            (   r?   rJ         @r1   r   )r   r   r   r4   r[   r[   r   r3   r3   r4   r4      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$$$      
 
 &

 	
 *___BJ???"K-w}bl7>S>S
 
 "AG-T-T-T
 
 	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   rc   re   rg   rj   ro   r1   r   )r   r   r   r4   ir   r3   r3   r4   r4      test_quantizelinear_int4r   )r   r   r   r    r!   r"   r#   rs   r   r   INT4ru   rv   r   r%   s        r'   export_int4zQuantizeLinear.export_int4   s   {$$333E	 % 
 
 H$$$      
 
 &

 	
 *___BJ???"K,gmR\'=R=R
 
 !17,R,R,R
 
 	w-C+		
 	
 	
 	
 	
 	
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   rd   
block_size)      @g      (@g      I@      @r>   g       @rp   r   r=   g      4@g      $@rp   r1         ?rf   rJ   皙@ffffff@皙@r   r   c              3   \   K   | ]&}|k    j         |         j         |         k    V  'd S Nru   .0i
block_axisr   r   s     r'   	<genexpr>z;QuantizeLinear.export_blocked_asymmetric.<locals>.<genexpr>=  G       
 
J GAJ'-**
 
r)   repeatsrd   &test_quantizelinear_blocked_asymmetricr   )r   r   r   r    r!   r#   r$   ru   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_asymmetric  s:   {$$333E % 
 
 H&&&$$$&&&
 *
 
 
 (c
c
c

 *
 
 
 xAAA
 (
 
 
 } 22222
 
 
 
 
 
 
3qw<<((
 
 
 
 
 	
 	
 	

 wz"W]:%>>!CCCC'*%z)BB !izRRR#%9'
$
 $
 $
  GA++.FFGGNNrx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   rd   r   output_dtype)r   ry   ir   r   r   r1   r   rf   rJ   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>v  r   r)   r   r   r^   rR   )a_mina_max%test_quantizelinear_blocked_symmetricr   )r   r   r   r   INT16r    r!   r#   r   r   r   ru   r   clipr   r"   r`   r   r   )r&   r   r   y_valr   r   r   r   s        @@@r'   export_blocked_symmetricz'QuantizeLinear.export_blocked_symmetricT  s   {$$#E$* % 
 
 H###$$$&&&
 *
 
 
 (c
c
c

 *
 
 
 
 
 
 
 
 
 
3qw<<((
 
 
 
 
 	
 	
 	

 wz"W]:%>>!CCCC'*%z)BB !izRRRGA++,,F%
 
 

&

 	 G	
 
 	w<C8		
 	
 	
 	
 	
 	
r)   )r	   N)__name__
__module____qualname__staticmethodr(   r:   rD   rH   rX   ra   rw   r}   r   r    r)   r'   r   r      sU       
 
 
 \
& 
 
 
 \
< 
 
 
 \
& 
 
 
 \
& /
 /
 /
 \/
b 7
 7
 7
 \7
r 
 
 
 \
> 
 
 
 \
> ;
 ;
 ;
 \;
z :
 :
 :
 \:
 :
 :
r)   r   )numpyr    r   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r   r   r)   r'   <module>r      s   
            , , , , , , . . . . . . # # # # # #A
 A
 A
 A
 A
T A
 A
 A
 A
 A
r)   