
    NgD                         d dl Z d dlZd dlZd dlmc mZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ d dlmZmZ  G d de          ZdS )	    N)TensorProtohelpersubbyte)Base)expect)float32_to_float8e4m3float32_to_float8e5m2make_tensortensor_dtype_to_field)float8e4m3_to_float32float8e5m2_to_float32c                   >    e Zd Zedd            Zedd            ZdS )CastreturnNc            
      J   d} g d}t          j        t                    }t          j        t                    }t          j        d           }t          j        d           }d}|D 
]\  }}d }	d }
|dk    s|dk    r4t          j        g dt           j                  }t          j        d	k    }|                    t           j	                  }|r|d
d d         n
|dd d         }|dk    r|dk    sJ |
                    ddg          }|
                    ddg          }t          j                            t          t          j                  |j                  }	t          j                            t          t          j                  |j                  }
	n|dk    sJ |
                    ddg          }t          j        t)          |          dz  ft           j	                  }|r	||d
d d<   n||dd d<   |                    t           j                  }|
                    ddg          }t          j                            t          t          j                  |j                  }	t          j                            t          t          j                  |j                  }
n||v s||v rDt          j        g dt           j                  }|dk    r4|}t+          dt          j        ddg|                                          }n|dk    rn|                    t           j                                      t           j                  }t+          dt          j        ddg|                                          }nV|dk    rJt5           ||                    }t+          dt          j        ddg|                                          }n|dk    rMt5           ||d          d          }t+          dt          j        ddg|                                          }n|dk    rIt;           ||                    }t+          dt          j        ddg|                                          }nd|dk    rOt;           ||dd          dd          }t+          dt          j        ddg|                                          }ntA          d          |dk    rt5           ||                    }n|dk    rt5           ||d          d          }n|dk    rt;           ||                    }n|dk    rt;           ||dd          dd          }n[|dk    r=|                    t           j                                      t           j                  }n|dk    r|}ntA          d          t+          dtC          t          |          ddg|                                          }|}n|dv s|dv rt          j"        dd                              t           j                  }d}|dk    r1|}t+          dt          j        ||                                          }n|dk    rN|                    t           j                  }t+          dt          j        ||                                          }n|d k    r: ||          }t+          dt          j#        ||                                          }nO|d!k    r: ||          }t+          dt          j$        ||                                          }ntA          d          |d k    r) ||                              tJ          j&                  }n|d!k    r) ||                              tJ          j'                  }n|dk    r |                    t           j                  }nd|dk    r|}n[|d"k    r |                    t           j(                  }n5|d#k    r |                    t           j)                  }ntA          d          t+          d$tC          t          |          ||                                          }|}t          j                            tC          t          |          |          }	t          j                            tC          t          |          |          }
n|d%k    r?t           j*        +                    |                               t          j,        tC          t          |                              }|d%k    rg }|-                                D ]N}t]          |          /                    d&          }|0                    d&          }|1                    |           Ot          j        |                              td                    
                    ddg          }n|                    t          j,        tC          t          |                              }n~t          j        g dt          j3        td                              
                    ddg          }|                    t          j,        tC          t          |                              }t          j        4                    d'd(gd)gtC          t          |          *          }|	r&|
r$tk          ||g|gd+|z   d,z   |z   |	g|
g-           
tk          ||g|gd+|z   d,z   |z   .           
d S )/N)      )$)FLOATFLOAT16)r   DOUBLE)r   r   )r   r   )r   r   )r   r   )r   STRING)r   r   )r   BFLOAT16)r   r   r   FLOAT8E4M3FNr   r   r   FLOAT8E4M3FNUZr   r   )r   r   )r   r   )r   r   )r   r   r   
FLOAT8E5M2r   r    r   FLOAT8E5M2FNUZr   r#   )r    r   )r    r   )r#   r   )r#   r   )r   UINT4)r   r%   )r   INT4)r   r&   )r%   r   )r%   r   )r%   UINT8)r&   r   )r&   r   )r&   INT8c                 .    t          j        | d          S )NFsignedr   float32_to_4bit_unpackedxs    \/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/backend/test/case/node/cast.py<lambda>zCast.export.<locals>.<lambda>E   s    g6qGGG     c                 .    t          j        | d          S )NTr*   r,   r.   s    r0   r1   zCast.export.<locals>.<lambda>H   s    g6qFFF r2   )r   r   r    r#   r   )
0.47892547
0.48033667
0.49968487
0.81910545
0.47031248z0.816468z
0.21087195	0.7229038NaNINF+INF-INFdtypelittle      r   r   r   r   r4   r5   r6   r7   r8   r9   1000000z1e-7r:   r;   r<   r=   z
-0.0000001z	0.0000001z-1000000r/      r   r   r   T)uzr    r#   )fnrF   7Conversion from {from_type} to {to_type} is not tested.)r%   r&   i   )rE   rE   r%   r&   r'   r(   yr   zutf-8r   inputoutput)inputsoutputsto
test_cast__to_)rM   rN   nameinput_type_protosoutput_type_protosrM   rN   rR   )6np	vectorizer   r	   arrayfloat32sys	byteorderviewuint16reshapeonnxr   make_tensor_type_protointr   r   shaper   zeroslenr
   tolistastypefloat16r   r   r   r   r   r    r#   
ValueErrorgetattraranger%   r&   customuint4int4uint8int8randomrandom_sampletensor_dtype_to_np_dtypeflattenstrencodedecodeappendobjectr?   	make_noder   )rb   
test_casesvect_float32_to_float8e4m3vect_float32_to_float8e5m2vect_float32_to_uint4vect_float32_to_int4f8_types	from_typeto_typeinput_type_protooutput_type_protonp_fp32little_endisannp_uint16_viewnp_bfp16rK   rL   np_fp32_zerosnp_fp32_from_bfloatinput_valuesexpectedexpected_tensorinput_shapessissunodes                               r0   exportzCast.export   s   %
 %
 %

N &(\2G%H%H"%'\2G%H%H" "GG!
 !
  "|FF 
  
 V", G	 G	Iw# $J&&'Z*?*?(   *  " "%(!:!(BI!>!>,:TN14a4((qtRSt@T  j(($////#OOQF33E%--q!f55F'+{'I'IK-..( ($ )-(J(JK0116<) )%% #g----$,,aV44E$&Hc(mma.?-A$S$S$SM% 7.6add++.6add+*7*<*<2:*<*N*N'088!Q@@F'+{'I'IK0115;( ($ )-(J(JK-..) )%% h&&'X*=*=(  " *%  * ''#*L'[.A8H8H EE )++#*>>"*#=#=#D#DRZ#P#PL'[01a&,:M:M:O:O EE .00#8227;;$ $L ([51v|?R?R?T?T EE "222#8227tDDD$ $ $L ([7!QATATAVAV EE ,..#8227;;$ $L ([3aV\=P=P=R=R EE "222#8227tMMM$ $ $L
 ([7!QATATAVAV EE %Q   n,,422<@@   HH  000422<DIIId     HH ,,422<@@   HH  000422<DTRRR     HH
 	))+222:>>EEbjQQHH''+HH$Q   #.g66A@Q@Q# # )///7>O3O3O)B++222:>>$''#*L'[.\=P=P=R=R EE )++#*>>"*#=#=L'[0+|?R?R?T?T EE '))#8#8#A#AL'[.\=P=P=R=R EE &((#7#7#@#@L'[-{L<O<O<Q<Q EE %Q   g%%44\BBII&,WWHH&&33LAAHHUUHH	))+222:>>HH''+HH''+2228<<HH&&+2227;;HH$Q   #.g66X__EVEV# # )#';#E#EK33[$ $  %)K$F$FK11;% %!! h&&	//66==3GK4S4STT  h&&B"]]__ & &FFMM'22XXg..		"Xb\\0088@@!QHHFF"\\7W8U8UVV FF    (6**    '1a&//! " 3GK4Q4QRR  ;((y!
;00	 )  D   $5 !7#H%	1F:WD'7&8(9':     !7#H%	1F:WD	    EG	 G	r2   c            
         g d} t          j        t                    }t          j        t                    }| D ]9\  }}t          j        g dt           j                  }|dk    r3|}t          dt          j        ddg|	                                          }n|dk    rm|
                    t           j                  
                    t           j                  }t          dt          j        ddg|	                                          }nt          d	          |d
k    r ||d          }nN|dk    r ||dd          }n9|dk    r ||d          }n%|dk    r ||ddd          }nt          d	          t          d |D                       }	t                      }
t          t          |          |
_        d|
_        |
j                            ddg           t)          |
j                  }t          |
|                              |	           |
}t*          j                            ddgdgt          t          |          d          }t1          ||g|gd|z   dz   |z              ;d S )N)r   r   r   r   r   r!   r"   r$   rC   r>   r   r/   r   rE   r   rH   r   F)saturater   T)rF   r   r    r#   )rG   rF   r   c                 ,    g | ]}t          |          S  )ra   ).0r   s     r0   
<listcomp>z.Cast.export_saturate_false.<locals>.<listcomp>  s    444a3q66444r2   r   rK   rL   r   )rM   rN   rO   r   test_cast_no_saturate_rQ   rU   )rV   rW   r   r	   rX   rY   r
   r   r   re   rf   rg   r   rh   bytesri   	data_typerR   dimsextendr   r_   r   ry   r   )rz   r{   r|   r   r   r   r   rK   r   ivalstensorfieldrL   r   s                 r0   export_saturate_falsezCast.export_saturate_falseV  s   	
 	
 	

 &(\2G%H%H"%'\2G%H%H"", J	 J	Iwh  " j%  G* G##&#C):QFGNNDTDTUUi''&~~bj99@@LL#,q!fl6I6I6K6K  !M   .((55lUSSS,,,55 TE   L((55lUSSS,,,55 TdU   !M   44844455E ]]F&{G<<FFKK1v&&&)&*:;;EFE""))%000F;((y!
;00 )  D w-	9FBWL	    KJ	 J	r2   )r   N)__name__
__module____qualname__staticmethodr   r   r   r2   r0   r   r      s]        { { { \{z	 X X X \X X Xr2   r   )rZ   numpyrV   r_   #onnx.reference.custom_element_types	referencecustom_element_typesrk   r   r   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r	   r
   r   onnx.numpy_helperr   r   r   r   r2   r0   <module>r      s  
 


      4 4 4 4 4 4 4 4 4 - - - - - - - - - - , , , , , , . . . . . .            K J J J J J J JX X X X X4 X X X X Xr2   