
    Si5                    f    S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr   " S S\5      rg)	    )annotationsN)TensorProto)Base)expect)make_tensorc                     \ rS rSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)QuantizeLinear   c                    [         R                  R                  S/ SQS/S9n [        R                  " / SQ5      R                  [        R                  5      n[        R                  " S5      n[        R                  " S5      n[        R                  " / SQ5      R                  [        R                  5      n[        U XU/U/S	S
9  g )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        i/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/quantizelinear.pyexportQuantizeLinear.export   s    {{$$3E % 
 HH1299"**E**Q-xx}HH/077A-C&		
    c                    [         R                  R                  S/ SQS/S9n [        R                  " SS/SS/S	S
//SS/SS/SS//SS/SS/SS////[        R
                  S9n[        R                  " / SQ[        R
                  S9n[        R                  " / SQ[        R                  S9nXR                  SSSS5      -  UR                  SSSS5      -   R                  [        R                  5      n[        U XU/U/SS9  g )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_axis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
 	-C+		
r+   c                 v   [         R                  R                  S/ SQS/S9n [        R                  " / SQ5      R                  [        R                  5      n[        R                  " S5      n[        S[        R                  S/S	/5      n[        S[        R                  S
// SQ5      n[        U XU/U/SS9  g )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_e4m3fnQuantizeLinear.export_e4m3fnC   s    {{$$3E % 
 HH56==bjjI**Q-">;3K3KaSSTRUV[55s<PQ-C-		
r+   c                 v   [         R                  R                  S/ SQS/S9n [        R                  " / SQ5      R                  [        R                  5      n[        R                  " S5      n[        S[        R                  S/S	/5      n[        S[        R                  S
// SQ5      n[        U XU/U/SS9  g )Nr	   r   r   r   r?   r   r   r   r@   r6   )r   rC   r   i   rD   test_quantizelinear_e5m2r   )r   r   r    r!   r"   r#   r$   r   r   
FLOAT8E5M2r   r&   s        r(   export_e5m2QuantizeLinear.export_e5m2W   s    {{$$3E % 
 HH56==bjjI**Q-">;3I3IA3QTPUV[33aS:PQ-C+		
r+   c                    [         R                  R                  S/ SQS/S9n [        R                  " / SQ5      R                  [        R                  5      n[        R                  " S5      n[        R                  " S5      n[        R                  " / SQ5      R                  [        R                  5      n[        U XU/U/S	S
9  g )Nr	   r   r   r   )r@   g      `      @      333333@333333@g      @g         @     rB     )rW   i      i   i  rX   rY     r   rZ   r   test_quantizelinear_uint16r   )	r   r   r    r!   r"   r#   r$   uint16r   r&   s        r(   export_uint16QuantizeLinear.export_uint16k   s    {{$$3E % 
 HH
 &
 	
  **S/yy'HH
 &
 	
" 	-C-		
r+   c                    [         R                  R                  S/ SQS/S9n [        R                  " / SQ5      R                  [        R                  5      n[        R                  " S5      n[        R                  " S5      n[        R                  " / SQ5      R                  [        R                  5      n[        U XU/U/S	S
9  g )Nr	   r   r   r   )r@   g     rO   rP   rQ   rR   rS   rT   g    @g    g    @g    g     @g      rU   rV   rB      )r`        i  r   rb   rc   rW   irW    rW   rd   rW   rd   test_quantizelinear_int16r   )	r   r   r    r!   r"   r#   r$   int16r   r&   s        r(   export_int16QuantizeLinear.export_int16   s    {{$$3E % 
 HH
& &
' 	
( **S/xx}HH
& &
' 	
* 	-C,		
r+   c                    [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/5      R                  [        R                  5      n[        R                  " / S	Q[        R                  S
9n[        S[        R                  UR                  [        R                  " U5      5      n[        S[        R                  UR                  / SQ5      n[        U XU/U/SS9  g )Nr	   r   r   r   r   r   axisr@         @g333333@g333333!@ir/      	      r
      (   rB   rO         @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_uint4QuantizeLinear.export_uint4   s    {{$$3E	 % 
 HH$  
 &
 	
 **_BJJ?"K--w}}bll7>S
 ""AGG-R
 	-C,		
r+   c                    [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/5      R                  [        R                  5      n[        R                  " / S	Q[        R                  S
9n[        S[        R                  UR                  [        R                  " U5      5      n[        S[        R                  UR                  / SQ5      n[        U XU/U/SS9  g )Nr	   r   r   r   rj   rl   rn   rq   ru   r3   r   )r   r   r   r6   r   r5   r5   r6   r6      test_quantizelinear_int4r   )r   r   r    r!   r"   r#   r$   ry   r   r   INT4r{   r|   r   r&   s        r(   export_int4QuantizeLinear.export_int4   s    {{$$3E	 % 
 HH$  
 &
 	
 **_BJJ?"K,,gmmR\\'=R
 !!177,R
 	-C+		
r+   c                    [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/[        R
                  S	9n[        R                  " / S
Q[        R
                  S	9n[        S[        R                  UR                  [        R                  " U5      5      n[        S[        R                  UR                  / SQ5      n[        U XU/U/SS9  g )Nr	   r   r   r   rj   rl   )g       g      rA   rO   )rv         @      @g      @r3   ru   r   )r   r   r   r   r   r   r   r   r   r   r   r   test_quantizelinear_uint2r   )r   r   r    r!   r"   r$   ry   r   r   UINT2r{   
zeros_liker   r&   s        r(   export_uint2QuantizeLinear.export_uint2  s    {{$$3E	 % 
 HH$&$
 **
 **_BJJ?"K--w}}bmmG>T
 ""AGG-Q
 	-C,		
r+   c                    [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/[        R
                  S	9n[        R                  " / S
Q[        R
                  S	9n[        S[        R                  UR                  [        R                  " U5      5      n[        S[        R                  UR                  / SQ5      n[        U XU/U/SS9  g )Nr	   r   r   r   rj   rl   )g      rP   rA   rB   g       g      g333333g333333!r3   ru   r   )r   r   r   r   ra   ra   r   r   r   ra   ra   test_quantizelinear_int2r   )r   r   r    r!   r"   r$   ry   r   r   INT2r{   r   r   r&   s        r(   export_int2QuantizeLinear.export_int26  s    {{$$3E	 % 
 HH$&(
 **
 **_BJJ?"K,,gmmR]]7=S
 !!177,U
 	-C+		
r+   c                    [         R                  R                  S/ SQS/SS9n [        R                  " / SQ/ SQ/ SQ/5      R                  [        R                  5      n[        R                  " / S	Q[        R                  S
9n[        S[        R                  UR                  [        R                  " U5      5      n[        S[        R                  UR                  / SQ5      n[        U XU/U/SS9  g )Nr	   r   r   r   rj   rl   rn   r   ru   r3   r   )r   r   r   r5   r   r   r   r   r   g      ra   r   test_quantizelinear_float4e2m1r   )r   r   r    r!   r"   r#   r$   ry   r   r   
FLOAT4E2M1r{   r   r   r&   s        r(   export_float4e2m1 QuantizeLinear.export_float4e2m1T  s    {{$$3E	 % 
 HH$ (
 &
 	
 **_BJJ?"""MMMM'"	
 ""GG7	
 	-C1		
r+   c                 z  ^^^ [         R                  R                  S/ SQS/SSS9n [        R                  " / SQ/ SQ/ S	Q/[        R
                  S
9m[        R                  " SS/SS/SS//[        R
                  S
9m[        R                  " SS/SS/SS//[        R                  S
9nTR                  UR                  :X  d   eSm[        UUU4S j[        [        TR                  5      5       5       5      (       d   eTR                  T   TR                  T   -  S:X  d   eTR                  T   TR                  T   -  n[        R                  " TUTS9n[        R                  " XTS9n[        R                  " TU-  U-   5      R                  [        R                  5      n[        U TTU/U/SS9  g )Nr	   r   r   r   r   )r   r   rk   
block_size)r   g      (@g      I@r   rA   g       @rv   r   r@   g      4@g      $@rv   r3         ?rm   rO   皙@ffffff@皙@r   r   c              3  r   >#    U  H,  nUT:w  d  M  TR                   U   TR                   U   :H  v   M.     g 7fNr{   .0i
block_axisr   r   s     r(   	<genexpr>;QuantizeLinear.export_blocked_asymmetric.<locals>.<genexpr>  7      
(J +AGGAJ'--**(   
7&7repeatsrk   &test_quantizelinear_blocked_asymmetricr   )r   r   r    r!   r"   r$   r%   r{   allrangelenrepeatrintr#   r   )	r'   r   r   y_scale_elementwisey_zero_point_elementwiser   r   r   r   s	         @@@r(   export_blocked_asymmetric(QuantizeLinear.export_blocked_asymmetricz  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            	     J  ^^^ [         R                  R                  SSS/S/SS[        R                  S9n [
        R                  " / SQ/ S	Q/ S
Q/[
        R                  S9m[
        R                  " SS/SS/SS//[
        R                  S9mSm[        UUU4S j[        [        TR                  5      5       5       5      (       d   eTR                  T   TR                  T   -  S:X  d   eTR                  T   TR                  T   -  n[
        R                  " TUTS9n[
        R                  " [
        R                  " TU-  5      SSS9R                  [
        R                   5      n[#        S[        R                  TR                  U5      n[%        U TT/U/SS9  g )Nr	   r   r   r   r   r   )r   r   rk   r   output_dtype)r   r   ir   r   r   r3   r   rm   rO   r   r   r   c              3  r   >#    U  H,  nUT:w  d  M  TR                   U   TR                   U   :H  v   M.     g 7fr   r   r   s     r(   r   :QuantizeLinear.export_blocked_symmetric.<locals>.<genexpr>  r   r   r   r   rd   rW   )a_mina_max%test_quantizelinear_blocked_symmetricr   )r   r   r    r   INT16r!   r"   r$   r   r   r   r{   r   clipr   r#   rf   r   r   )r'   r   r   y_valr   r   r   r   s        @@@r(   export_blocked_symmetric'QuantizeLinear.export_blocked_symmetric  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____firstlineno__staticmethodr)   r<   rG   rL   r]   rg   r}   r   r   r   r   r   r   __static_attributes__r   r+   r(   r	   r	      s   
 
& 
 
< 
 
& 
 
& /
 /
b 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
T d
r+   