
    
Ng2                         d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZ d dlmZ d dlmZ  G d	 d
e          Z G d de          Z G d de          ZdS )    )OptionalN)TensorProto)np_dtype_to_tensor_dtype)float8e4m3_to_float32float8e5m2_to_float32)float8e4m3fnfloat8e4m3fnuz
float8e5m2float8e5m2fnuzint4uint4)OpRun)reshape_inputc                       e Zd Zdej        defdZ	 	 	 d
dej        dej        deej                 dee         dee         f
d	ZdS )_CommonDequantizeLinearxreturnc                    d }|j         t          k    r*|j         j        d         d         dk    rt          j        }n1|j         t
          k    r)|j         j        d         d         dk    rt          j        }n|j         t          k    r)|j         j        d         d         dk    rt          j        }n|j         t          k    r)|j         j        d         d         dk    rt          j
        }n|j         t          k    r)|j         j        d         d         dk    rt          j        }nM|j         t          k    r)|j         j        d         d         dk    rt          j        }nt          |j                   }|S )Nr   e4m3fne4m3fnuze5m2e5m2fnuzr   r   )dtyper   descrr   FLOAT8E4M3FNr	   FLOAT8E4M3FNUZr
   
FLOAT8E5M2r   FLOAT8E5M2FNUZr   UINT4r   INT4r   )selfr   tensor_dtypes      c/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/reference/ops/op_dequantize_linear.py
get_x_typez"_CommonDequantizeLinear.get_x_type   s4   7l""qw}Q'7':h'F'F&3LLW&&17=+;A+>*+L+L&5LLW
""qw}Q'7':f'D'D&1LLW&&17=+;A+>*+L+L&5LLW!'-"21"5"@"@&,LLW__q!1!!4!>!>&+LL3AG<<L    Nx_scalex_zero_pointaxis
block_sizec                 
   |                      |          }|t          j        t          j        t          j        t          j        hv }|l|sj|                      |          }||k    rt          d| d| d          |                    t          j	                  t          ||j        ||          z
  }	n|rv|t|                    t          j                  }
|
                                }|
                                }||k    s|t          j        d          k    rt          d          |t          j        k    rt          |          }	n|t          j        k    rt          |d          }	nb|t          j        k    rt!          |          }	nB|t          j        k    rt!          |dd          }	n|                    t          j	                  }	|	t          ||j        ||          z  }|                    |j                  fS )	NzType mismatch z != z in DequantizeLinear.r   z=x_zero_point is not null but should be zero for float8 types.T)uz)fnr+   )r$   r   r   r   r   r   
ValueErrorastypenpfloat32r   shapeuint8minmaxr   r   r   )r!   r   r&   r'   r(   r)   x_typefp8_type	zero_typedxu_x_zero_pointumiumays                 r#   _runz_CommonDequantizeLinear._run,   s    ##$&"&	
 
 #H#55I"" QVQQQQQ   "*%%agtZ) ) BB  L4!-!4!4RX!>!>$((**$((**#::!3!3$W   111*1--;555*1666;111*1--;555*1$???XXbj))wzBBB''))r%   )NNN)	__name__
__module____qualname__r/   ndarrayintr$   r   r=    r%   r#   r   r      s        BJ 3    , .2"$(-* -*:-* -* rz*	-*
 sm-* SM-* -* -* -* -* -*r%   r   c                         e Zd Zd fd	Z xZS )DequantizeLinear_19Nc                     t          |j                  dk    rt          d          t                                          ||||          S )N   z%Input 2 must be a vector or a number.)lenr1   r-   superr=   )r!   r   r&   r'   r(   	__class__s        r#   r=   zDequantizeLinear_19._run]   sC    w}!!DEEEww||Awd;;;r%   )NNr>   r?   r@   r=   __classcell__rJ   s   @r#   rE   rE   \   s=        < < < < < < < < < <r%   rE   c                   &     e Zd Zddd fd
Z xZS )DequantizeLinear_21Nr(   r)   c                8     t                      j        |||dS )NrP   )rI   r=   )r!   r(   r)   argsrJ   s       r#   r=   zDequantizeLinear_21._rund   s     uww|TDDDDr%   rK   rM   s   @r#   rO   rO   c   sR        # E E E E E E E E E E Er%   rO   )typingr   numpyr/   onnxr   onnx.helperr   onnx.numpy_helperr   r   #onnx.reference.custom_element_typesr   r	   r
   r   r   r   onnx.reference.op_runr   %onnx.reference.ops.op_quantize_linearr   r   rE   rO   rC   r%   r#   <module>r[      st                   0 0 0 0 0 0 J J J J J J J J                ( ' ' ' ' ' ? ? ? ? ? ?@* @* @* @* @*e @* @* @*F< < < < <1 < < <E E E E E1 E E E E Er%   