
    bIg%                        d dl mZ d dlZd dl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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y)    )annotationsN)TensorProto)float8e4m3fnfloat8e4m3fnuz
float8e5m2float8e5m2fnuzint4uint4)np_dtype_to_tensor_dtype)float8e4m3_to_float32float8e5m2_to_float32)OpRun)reshape_inputc                  6    e Zd ZddZ	 	 	 d	 	 	 	 	 	 	 	 	 ddZy)_CommonDequantizeLinearc                d   d }|j                   t        k(  r1|j                   j                  d   d   dk(  rt        j                  }|S |j                   t
        k(  r1|j                   j                  d   d   dk(  rt        j                  }|S |j                   t        k(  r1|j                   j                  d   d   dk(  rt        j                  }|S |j                   t        k(  r1|j                   j                  d   d   dk(  rt        j                  }|S |j                   t        k(  r1|j                   j                  d   d   dk(  rt        j                  }|S |j                   t        k(  r1|j                   j                  d   d   dk(  rt        j                  }|S t        |j                         }|S )Nr   e4m3fne4m3fnuze5m2e5m2fnuzr
   r	   )dtyper   descrr   FLOAT8E4M3FNr   FLOAT8E4M3FNUZr   
FLOAT8E5M2r   FLOAT8E5M2FNUZr
   UINT4r	   INT4r   )selfxtensor_dtypes      d/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/reference/ops/op_dequantize_linear.py
get_x_typez"_CommonDequantizeLinear.get_x_type   sv   77l"qww}}Q'7':h'F&33L  WW&177==+;A+>*+L&55L  WW
"qww}}Q'7':f'D&11L  WW&177==+;A+>*+L&55L  WW!''--"21"5"@&,,L
 	 WW_q!1!!4!>&++L  4AGG<L    Nc                   | j                  |      }|t        j                  t        j                  t        j                  t        j
                  hv }|d|sb| j                  |      }||k7  rt        d| d| d      |j                  t        j                        t        ||j                  ||      z
  }	n|ri|g|j                  t        j                        }
|
j                         }|
j                         }||k7  s|t        j                  d      k7  rt        d      |t        j                  k(  rt        |      }	n|t        j                  k(  rt        |d      }	n`|t        j                  k(  rt!        |      }	nA|t        j
                  k(  rt!        |dd      }	n|j                  t        j                        }	|	t        ||j                  ||      z  }|j                  |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    x_scalex_zero_pointaxis
block_sizex_typefp8_type	zero_typedxu_x_zero_pointumiumays                 r"   _runz_CommonDequantizeLinear._run*   s    #$$&&""&&	
 
 #H5I" $VHD;PQ  "**%aggtZ) B L4!-!4!4RXX!>$((*$((*#:!3$W  111*1-;555*16;111*1-;555*1$?XXbjj)wzBB'))r$   )r    
np.ndarrayreturnint)NNN)
r    r=   r0   r=   r1   znp.ndarray | Noner2   
int | Noner3   r@   )__name__
__module____qualname__r#   r<    r$   r"   r   r      sG    , +/!%-*-* -* (	-*
 -* -*r$   r   c                        e Zd Zd fd	Z xZS )DequantizeLinear_19c                n    t        |j                        dkD  rt        d      t        |   ||||      S )N   z%Input 2 must be a vector or a number.)lenr,   r(   superr<   )r   r    r0   r1   r2   	__class__s        r"   r<   zDequantizeLinear_19._run[   s5    w}}!DEEw|Awd;;r$   )NNrA   rB   rC   r<   __classcell__rK   s   @r"   rF   rF   Z   s    < <r$   rF   c                  &     e Zd Zddd fd
Z xZS )DequantizeLinear_21Nr2   r3   c               $    t        |   |||dS )NrQ   )rJ   r<   )r   r2   r3   argsrK   s       r"   r<   zDequantizeLinear_21._runb   s    w|TDDr$   rL   rN   s   @r"   rP   rP   a   s    # E Er$   rP   )
__future__r   numpyr*   onnxr   onnx._custom_element_typesr   r   r   r   r	   r
   onnx.helperr   onnx.numpy_helperr   r   onnx.reference.op_runr   %onnx.reference.ops.op_quantize_linearr   r   rF   rP   rD   r$   r"   <module>r\      sS    #    1 J ' ?@*e @*F<1 <E1 Er$   