
    Ng%                         d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZ  G d de          ZdS )	    N)TensorProtohelper)Base)expect)float32_to_float8e4m3float32_to_float8e5m2make_tensor)float8e4m3_to_float32float8e5m2_to_float32c                   &    e Zd Zedd            ZdS )CastLikereturnNc            	      D   d} g d}t          j        t                    }t          j        t                    }|D ]c\  }}d }d }|dk    s|dk    rPt          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                  }|                                d	d         }n_|dv s|dv rZt          j        g dt           j                  }|dk    rot-           ||                    }t/          dt          j        ddg|                                          }t/          dt          j        dg|d d                   }ne|dk    rrt-           ||d          d          }t/          dt          j        ddg|                                          }t/          dt          j        dg|d d                   }n|dk    rnt7           ||                    }t/          dt          j        ddg|                                          }t/          dt          j        dg|d d                   }ny|dk    rst7           ||dd          dd          }t/          dt          j        ddg|                                          }t/          dt          j        dg|d d                   }|d
k    r|
                    d          }|}|}n9|d
k    sJ |}|
                    d          }|                                d d         }n|dk    r[t           j                            |                                t          j!        tE          t          |                              }|dk    rg }|                                D ]N}tG          |          $                    d          }|%                    d          }|&                    |           Ot          j        |                               tN                    
                    ddg          }n:|                     t          j!        tE          t          |                              }|                                d	d         }nt          j        g dt          j(        tN                              
                    ddg          }|                     t          j!        tE          t          |                              }|                                d	d         }t          j        )                    dddgdg          }|rW|rUt          j                            |j*        j+        |j                  }tY          |||g|gd|z   dz   |z   ||g|g           DtY          |||g|gd|z   dz   |z               ed 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   FLOAT8E4M3FNUZ)r   r   )r   r   )r   
FLOAT8E5M2)r   FLOAT8E5M2FNUZ)r   r   )r   r   r   )z
0.47892547z
0.48033667z
0.49968487z
0.81910545z
0.47031248z0.816468z
0.21087195z	0.7229038NaNINFz+INFz-INF)dtypelittle      r   r   r   r   )r   r   r   r   r   xr   T)uzr   r   )fnr"   r   zutf-8r   inputlikeoutput)inputsoutputstest_castlike__to_)r'   r(   nameinput_type_protosoutput_type_protos)r'   r(   r+   )-np	vectorizer   r   arrayfloat32sys	byteorderviewuint16reshapeonnxr   make_tensor_type_protointr   r   shaper   zeroslenflattenr
   r	   r   tolistr   r   r   r   randomrandom_sampleastypetensor_dtype_to_np_dtypegetattrstrencodedecodeappendobjectr   	make_nodetensor_type	elem_typer   )r:   
test_casesvect_float32_to_float8e4m3vect_float32_to_float8e5m2	from_typeto_typeinput_type_protooutput_type_protonp_fp32little_endisannp_uint16_viewnp_bfp16r$   r&   np_fp32_zerosnp_fp32_from_bfloatr%   expectedexpected_tensorlike_tensorssissunodelike_type_protos                             `/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/backend/test/case/node/castlike.pyexportzCastLike.export   s*   
 
 

* &(\2G%H%H"%'\2G%H%H"", E	 E	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-..) )% ~~''!,   
     (   *  " n,,4227;;   H '2[51vx?P?P' 'O #.[5sHRaRL# #KK  0004227tDDD     H '2[7!QARAR' 'O #.[7!hrrl# #KK ,,4227;;   H '2[3aVX__=N=N' 'O #.[3aS(2A2,# #KK  0004227tMMM     H
 '2[7!QARAR' 'O #.[7!hrrl# #K ''#OOF33E,F&DD"g----+E%--f55F!>>++BQB/DD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 F ~~''!,   (6**    '1a&//! " 3GK4Q4QRR  ~~''!,;(((!
 )  D
   $5 "&+"D"D%1;TZ# # !4=#H)I5>H'7&I(9':     !4=#H)I5>H	    AE	 E	    )r   N)__name__
__module____qualname__staticmethodrc    rd   rb   r   r      s8        _ _ _ \_ _ _rd   r   )r2   numpyr.   r7   r   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r   r	   onnx.numpy_helperr
   r   r   ri   rd   rb   <module>ro      s   
 


      $ $ $ $ $ $ $ $ , , , , , , . . . . . . Q Q Q Q Q Q Q Q Q Q J J J J J J J Ja a a a at a a a a ard   