
    bIg*                    f    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y)	    )annotationsN)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y)QuantizeLinearc                    t         j                  j                  dg ddg      } t        j                  g d      j                  t        j                        }t        j                  d      }t        j                  d      }t        j                  g d      j                  t        j                        }t        | |||g|gd	
       y )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        g/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/backend/test/case/node/quantizelinear.pyexportzQuantizeLinear.export   s    {{$$3E % 
 HH1299"**E**Q-xx}HH/077Aw-C&		
    c                 *   t         j                  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                        }||j                  dddd      z  |j                  dddd      z   j                  t        j                        }t        | |||g|gd       y )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$   s   {{$$3E % 
 HH BZ$sCj91X3x"c34[4,t= **	
 ((9BJJ7xxRXX>Aq!,,|/C/CAq!Q/OOWWHH
 	w-C+		
r)   c                    t         j                  j                  dg ddg      } t        j                  g d      j                  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       y )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_e4m3fnC   s    {{$$3E % 
 HH56==bjjI**Q-">;3K3KaSSTRUV[55s<PQw-C-		
r)   c                    t         j                  j                  dg ddg      } t        j                  g d      j                  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       y )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_e5m2W   s    {{$$3E % 
 HH56==bjjI**Q-">;3I3IA3QTPUV[33aS:PQw-C+		
r)   c                    t         j                  j                  dg ddg      } t        j                  g d      j                  t        j                        }t        j                  d      }t        j                  d      }t        j                  g d      j                  t        j                        }t        | |||g|gd	
       y )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_uint16k   s    {{$$3E % 
 HH
 &
 	
  **S/yy'HH
 &
 	
" 	w-C-		
r)   c                    t         j                  j                  dg ddg      } t        j                  g d      j                  t        j                        }t        j                  d      }t        j                  d      }t        j                  g d      j                  t        j                        }t        | |||g|gd	
       y )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E % 
 HH
& &
' 	
( **S/xx}HH
& &
' 	
* 	w-C,		
r)   c                    t         j                  j                  dg ddgd      } t        j                  g dg dg dg      j                  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       y )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E	 % 
 HH$  
 &
 	
 **_BJJ?"K--w}}bll7>S
 ""AGG-T
 	w-C,		
r)   c                    t         j                  j                  dg ddgd      } t        j                  g dg dg dg      j                  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       y )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E	 % 
 HH$  
 &
 	
 **_BJJ?"K,,gmmR\\'=R
 !!177,R
 	w-C+		
r)   c                    t         j                  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         j                  t        j                        }t        | |g|gd       y )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  f   K   | ](  }|k7  r!j                   |   j                   |   k(   * y wNru   .0i
block_axisr   r   s     r'   	<genexpr>z;QuantizeLinear.export_blocked_asymmetric.<locals>.<genexpr>>  6      
J GGAJ'--**
   .1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E % 
 HH&$&
 **
 ((c
c
c

 **
 xxAAA
 ((
 }} 2 2222
 
3qww<(
 
 	
 

 wwz"W]]:%>>!CCC''*%z)BB !iizR#%99'
$
  GGA++.FFGNNrxxXw-C9		
r)   c                 V   t         j                  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      j                  t
        j                         }t#        dt        j                  j                  |      }t%        | g|gd       y )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  f   K   | ](  }|k7  r!j                   |   j                   |   k(   * y wr   r   r   s     r'   r   z:QuantizeLinear.export_blocked_symmetric.<locals>.<genexpr>w  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_symmetricU  s   {{$$#E$** % 
 HH#$&
 **
 ((c
c
c

 **
 
 
3qww<(
 
 	
 

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

&
 	 GG	
 	w<C8		
r)   N)returnNone)__name__
__module____qualname__staticmethodr(   r:   rD   rH   rX   ra   rw   r}   r   r    r)   r'   r	   r	      s    
 
& 
 
< 
 
& 
 
& /
 /
b 7
 7
r 
 
> 
 
> ;
 ;
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*    #    , . #A
T A
r)   