
    /j5                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ  eh d          Z eh d	          Z ed
dh          Z G d de          ZdS )    )annotationsN)TensorProto)Base)expect)make_tensortensor_dtype_to_np_dtype)to_float8e8m0>   
FLOAT8E5M2FLOAT8E4M3FNFLOAT8E4M3FNUZFLOAT8E5M2FNUZ>   INT4UINT4
FLOAT4E2M1UINT2INT2c                  V    e Zd Zedd            Zedd            Zedd            ZdS )CastreturnNonec            
        g d} | D ];\  }}||k    rt          t          |          }t          t          |          }t          |          }t          |          }|dk    s|dk    r&t          j        g dt          j                  }d}n|t          v s	|t          v r%t          j        g dt          j                  }d}n|dv s|dv r5t          j        d	d
                              t          j                  }d}n|dv s|dv r5t          j        dd                              t          j                  }d}nj|dk    s|dk    r%t          j        g dt          j                  }d}n9t          j        g dt          j                  	                    ddg          }d}|t          v r5t          j                            ||          }	t          d|||	d          }
n|t          v r[|                    |          }	t          j                            |	          }t          d|||                                d          }
n|t"          v r[|                    |          }	t          j                            |	          }t          d|||                                d          }
n)|                    |          }	t          d|||	d          }
|t          v r3t          d||t          j                            |	|          d          }n|t          v rYt          j                            |	                    |                    }t          d|||                                d          }n|t"          v rYt          j                            |	                    |                    }t          d|||                                d          }n't          d|||	                    |          d          }t          j                            ddgdg|          }t+          ||
g|gd|z   dz   |z              =d S )N)0)FLOATFLOAT16)r   DOUBLE)r   r   )r   r   )r   r   )r   r   )r   BFLOAT16)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r
   )r   r
   )r   r   )r   r   )r
   r   )r
   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   UINT8)r   r   )r   r   )r   INT8)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )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)      r   r   r    r!   r"   r#   10000001e-7r$   r%   r&   r'   z
-0.0000001z	0.0000001z-1000000r*      )r   r   i   )r0   r0   )r   r   r+   )      r   )z0.480.25z1.05z-3.5z-89r-   r.   r$   r%   r&   r'   z-4z0.01z-0.0r*   inputTvalsrawoutputr   inputsoutputsto
test_cast__to_r=   r>   name)getattrr   r   nparrayfloat32F8_TYPESarangeastypereshapeonnxnumpy_helpersaturate_castr   FOUR_BIT_TYPES_pack_4bitx2tobytesTWO_BIT_TYPES_pack_2bitx4helper	make_noder   )
test_cases	from_typeto_type
from_dtypeto_dtypefrom_np_dtypeto_np_dtypenp_fp32input_shapenp_fromr7   packedr;   nodes                 e/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/cast.pyexportzCast.export   s   1
 1
 1

f #- i	 i	IwG## i88J{G44H4Z@@M28<<KJ&&'Z*?*?(   *  " %h&&'X*=*=(  " *%  ( %///7>O3O3O)B++222:>>$///7>O3O3O)B**11"*==$l**g.E.E(  " *%  ( % (   *    '1a&//! " %H$$+99'=QQ#    n,,!..77*77@@ $Z6>>;K;KQU   m++!..77*77@@#Z6>>;K;KQU   "..77#Z7   (""$*88+NN   N***77{8S8STT %h&..:J:JPT   M))*77{8S8STT$h&..:J:JPT   % 44   ;((y!
	 )  D w!I-6@	    Ii	 i	    c            	     n   t          j        ddgg d          } d}| D ]\  }}t          t          |          }t          t          |          }t	          |          }t	          |          }t          j        g dt
          j                  }t          d|||	                    |          d	          }	t          d
|||	                    |          	                    |          d	          }
t          j                            ddgd
g|d          }t          ||	g|
gd|z   dz   |z              d S )Nr   r   )r   r   r
   r   r/   r,   r(   r7   Tr8   r;   r   r   )r=   r>   r?   saturatetest_cast_no_saturate_rA   rB   )	itertoolsproductrD   r   r   rE   rF   rG   r   rJ   rL   rT   rU   r   )rV   r^   rW   rX   rY   rZ   r[   r\   r]   r7   r;   ra   s               rb   export_saturate_falsezCast.export_saturate_false   s   &  
 

 ", 5	 5	Iw i88J{G44H4Z@@M28<<Kh  " j%  G*  ^^M22  E !^^M2299+FF  F ;((y!
 )  D w-	9FBWL	    a5	 5	rd   c            
        t          j        g dt           j                  } g d}|D ]\  }}|dk    r| }t          |           }n|dk    r/|                     t           j                  }t          |          }n|dk    rqt          |           }|dk    r |                    t           j                  }nR|dk    r |                    t           j                  }n,t          d| d| d	          t          d| d| d	          t          d
t          t          |          ddg|d          }t          dt          t          |          ddg|d          }|dk    r;t          j                            dd
gdgt          t          |          dd          }n8t          j                            dd
gdgt          t          |                    }t          ||g|gd|z   dz   |z              d S )N)z0.0z0.124r5   z0.5z1.1z2.0z4.0z8.0r(   ))r   
FLOAT8E8M0)r   rl   )rl   r   )rl   r   r   r   rl   zConversion from z to z is not tested.r7      r+   T)r:   r;   r   r4   up)r=   r>   r?   rf   
round_moder<   test_cast_e8m0_rA   rB   )rE   rF   rG   r	   rJ   float16
ValueErrorr   rD   r   rL   rT   rU   r   )	r]   rV   rW   rX   input_np	output_npr7   r;   ra   s	            rb   export_e8m0zCast.export_e8m0@  s|   (	 	 	 *
 
 

 
 

 #- 9	 9	IwG##")'22		i''">>"*55)(33		l**(11g%% (
 ; ;II	)) (
 ; ;II$R9RR'RRR   !NyNNgNNN    Y//A  E !W--A  F ,&&{,,#9%J{G44# -   {,,#9%J{G44	 -   w&2V;gE	    i9	 9	rd   N)r   r   )__name__
__module____qualname__staticmethodrc   rj   ru    rd   rb   r   r      s        ] ] ] \]~ C C C \CJ M M M \M M Mrd   r   )
__future__r   rh   numpyrE   rL   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   onnx.helperr   r   onnx.numpy_helperr	   	frozensetrH   rO   rR   r   rz   rd   rb   <module>r      s*   # " " " " "                , , , , , , . . . . . .        , + + + + +9WWWXX:::;;	7F+,,u u u u u4 u u u u urd   