
    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mZ d dlmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZ d	 Z G d
 de      Z G d de      Zy)    )annotationsN)subbyte)bfloat16float8e4m3fnfloat8e4m3fnuz
float8e5m2float8e5m2fnuzint4uint4)float32_to_bfloat16float32_to_float8e4m3float32_to_float8e5m2tensor_dtype_to_np_dtype)bfloat16_to_float32float8e4m3_to_float32float8e5m2_to_float32)TensorProto)OpRunc           
        | j                   t        k(  r| j                   j                  d   d   dk(  r|t        j                  k(  r| S | j                         }t        j                  |j                  d   t        j                        }t        |j                  d         D ]  }t        ||         }|||<    t        |      }|j                  |      j                  | j                        S t        dt        j                   ft"        t$        dt        j&                  fd t(        dt        j*                  ft,        t.        dt        j0                  fd	 i}|j3                         D ]  \  \  }	}
}}| j                   |	k(  s| j                   j                  d   d   |
k(  s:||k(  r| c S | j                         }t        j                  |j                  d   t        j                        }t        |j                  d         D ]  } |||         }|||<    t        |      }|j                  |      j                  | j                        c S  |t        j                  k(  r| j                  t        j                        j                         }t        j                  |j                  t              j                         }t        |j                  d         D ]  }t5        ||   d
      }|||<    |j                  | j                        S t6        dt        j8                  dft:        dt        j<                  d
fg}|D ]  \  }}}}| j                   |k(  rF| j                   j                  d   d   |k(  r'||k(  r| c S t        |      }| j                  |      c S ||k(  sd| j                  t        j                        j                         }t        j                  |j                  |      j                         }t        |j                  d         D ]!  }t?        j@                  ||   |      }|||<   # |j                  | j                        c S  t        j                   t        fdft        j&                  t$        fdft        j*                  t(        fdft        j0                  t.        fdfi}|j3                         D ]  \  }	\  }}||	k(  s| j                  t        j                        j                         }t        j                  |j                  |      j                         }t        |j                  d         D ]  } |||         }|||<    |j                  | j                        c S  |t        jB                  k(  r| j                  t        jD                        S t        |      }| j                  |      S )Nr   r   )dtypee4m3fne4m3fnuzc                     t        | ddiS )NuzT)r   argss    W/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/reference/ops/op_cast.py<lambda>zcast_to.<locals>.<lambda>3   s    .>>     e5m2e5m2fnuzc                     t        | dddS )NT)fnr   )r   r   s    r   r   zcast_to.<locals>.<lambda>9   s    .$G r   T)truncater   Fr
   )signedc                     t        | diS Nsaturater   r   r(   s    r   r   zcast_to.<locals>.<lambda>g       /II r   c                     t        | ddS )NT)r   r(   r)   r*   s    r   r   zcast_to.<locals>.<lambda>k   s    /$R r   c                     t        | diS r'   r   r*   s    r   r   zcast_to.<locals>.<lambda>o   r+   r   c                     t        | dddS )NT)r#   r   r(   r.   r*   s    r   r   zcast_to.<locals>.<lambda>s   s    /$4( r   )#r   r   descrr   BFLOAT16ravelnpemptyshapefloat32ranger   r   astypereshaper   FLOAT8E4M3FNr   r   FLOAT8E4M3FNUZr   
FLOAT8E5M2r   r	   FLOAT8E5M2FNUZitemsr   r   UINT4r
   INT4r   float32_to_4bit_unpackedSTRINGstr_)xtor(   xrxfielr   f8dtst
proto_typecvtyi4np_typenp_desctensor_typer%   to_typef8backnpdts     `                   r   cast_torW   !   s   ww(qww}}Q/2j@%%%HWWYXXbhhqk4rxx{# 	A$RU+BBqE	 ),yy''00 
x!9!9:<Q&&	
 ?	V[3346K&&	
 H
B &(XXZ 
5!Rc77b=QWW]]1-a0B6ZB"((1+RZZ8B288A;' AZ1 -R0E99U#++AGG44
5 
[!!!XXbjj!'')HHRXXX.446qwwqz" 	A$RUT:BAaD	 yy!! 
**E2	v{''.
B 24 &-+v77g!''--"21"5"@[ .r2G88G$$"**%++-B1779A1771:& 55beFK! 99QWW%%&" 	  I#
 	""R%
 	I!
 	""%
F( "<<> &KT38"**%++-B.446A1771:& AZ! 99QWW%%& 
[xx  $R(E88E?r   c                      e Zd ZddZy)Cast_1Nc                     t        ||d      fS )NT)r(   rW   )selfrD   rE   s      r   _runzCast_1._run   s    2-//r   N__name__
__module____qualname__r]    r   r   rY   rY      s    0r   rY   c                      e Zd ZddZy)Cast_19Nc                    t        |||      fS r^   r[   )r\   rD   rE   r(   s       r   r]   zCast_19._run   s    2x(**r   )NNr_   rc   r   r   re   re      s    +r   re   )
__future__r   numpyr3   onnxr   onnx._custom_element_typesr   r   r   r   r	   r
   r   onnx.helperr   r   r   r   onnx.numpy_helperr   r   r   onnx.onnx_pbr   onnx.reference.op_runr   rW   rY   re   rc   r   r   <module>ro      sZ    #      
 % 'dN0U 0
+e +r   