
    
NgzV                         d dl Z d dlmZ d dlZd dlZd dlZd dlmZmZ de	defdZ
de	defdZde	defdZ G d	 d
e j                  Zedk    r e j                     dS dS )    N)Any)helpernumpy_helperivalreturnc                     | dk    rt          j        t           j                  S | dz	  }| |dz  z
  }|dz  }|dz  }t          |dz  dz             d|dz
  z  z  }|r| }t          j        |          S )	Ni                 ?          @   )npfloat32nanfloat)r   expoprecsignpowefvals         W/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/test/numpy_helper_test.pybfloat16_to_float32r      s    v~~z"&!!!19D419D#:D#:D	!A%&&)<<D u:d    c                    | dk     s| dk    rt          |  d          | dk    rt          j        t          j                   S | dk    rt          j        t          j                  S | dz  dk    rt          j        d          S | dz  }| dz  } | dz	  }| dz  }|dz  }|dk    r|d	z  }d}n|dz  }d
}t	          |dz  |z             d|z  z  }|r| }t          j        |          S )Nr   r    is not a float8.r         r	         r      r   )
ValueErrorr   r   r   r   r   r   r   mantr   fractionr   s          r   float8e4m3_to_float32r'      s   axx4#::D333444s{{z26'"""s{{z"&!!!tz!}}$;DDLD19D$;D$;Dqyy		H$%%T	1D u:dr   c                 X   | dk     s| dk    rt          |  d          | dv rt          j        t          j                   S | dv rt          j        t          j                  S | dk    rt          j        t          j                   S | dk    rt          j        t          j                  S | dz  dk    rt          j        d          S | d	z  }| dz  } | d
z	  }| dz  }|dz  }|dk    r|dz  }d}n|dz  }d}t          |dz  |z             d|z  z  }|r| }t          j        |          S )Nr   r   r   )r         )r   ~   }      |   r   r      r         r    r      r   )r#   r   r   r   infr   r$   s          r   float8e5m2_to_float32r4   8   sN   axx4#::D333444z26'"""z"&!!!s{{
26""""s{{z"&!!!tz!}}$;DDLD19D$;D$;Dqyy

H$%%T	1D u:dr   c                      e Zd Zdej        ddfdZdej        ddfdZd1dZd1dZd1dZ	d1d	Z
d1d
Zd1dZd1dZd1dZd1dZd1dZd1dZd1dZej                            ddddej        fej        fg          d             Zd Zej                            g d          d             Zd Zd Zd Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'd( Z(d) Z)d* Z*d+ Z+d, Z,d- Z-d. Z.d/ Z/d0 Z0dS )2TestNumpyHelperdtyper   Nc                 4   t           j                            dd                              |          }t	          j        |d          }|                     |j        d           t	          j        |          }t           j	        
                    ||           d S )N   %   test)r   randomrandastyper   
from_arrayassertEqualnameto_arraytestingassert_equalselfr7   a
tensor_def	a_recovers        r   _test_numpy_helper_float_typez-TestNumpyHelper._test_numpy_helper_float_typeX   s}    INN2r""))%00!,Q77
&111 )*55	

9-----r   c                 p   t           j                            t          j        |          j        t          j        |          j        |d          }t          j        |d          }|                     |j	        d           t          j
        |          }t           j                            ||           d S )Nr9   r:   )r7   sizer;   )r   r<   randintiinfominmaxr   r?   r@   rA   rB   rC   rD   rE   s        r   _test_numpy_helper_int_typez+TestNumpyHelper._test_numpy_helper_int_type_   s    IHUOO%!4E  
 
 ",Q77
&111 )*55	

9-----r   c                 D    |                      t          j                   d S NrJ   r   r   rF   s    r   
test_floatzTestNumpyHelper.test_floath       **2:66666r   c                 D    |                      t          j                   d S rT   )rR   r   uint8rV   s    r   
test_uint8zTestNumpyHelper.test_uint8k       ((22222r   c                 D    |                      t          j                   d S rT   )rR   r   int8rV   s    r   	test_int8zTestNumpyHelper.test_int8n   s    ((11111r   c                 D    |                      t          j                   d S rT   )rR   r   uint16rV   s    r   test_uint16zTestNumpyHelper.test_uint16q   s    ((33333r   c                 D    |                      t          j                   d S rT   )rR   r   int16rV   s    r   
test_int16zTestNumpyHelper.test_int16t   r\   r   c                 D    |                      t          j                   d S rT   )rR   r   int32rV   s    r   
test_int32zTestNumpyHelper.test_int32w   r\   r   c                 D    |                      t          j                   d S rT   )rR   r   int64rV   s    r   
test_int64zTestNumpyHelper.test_int64z   r\   r   c                 *   t          j        g d                              t                    }t	          j        |d          }|                     |j        d           t	          j        |          }t           j	        
                    ||           d S )N)AmyBillyCindyDavidr;   )r   arrayr>   objectr   r?   r@   rA   rB   rC   rD   rF   rG   rH   rI   s       r   test_stringzTestNumpyHelper.test_string}   s~    H77788??GG!,Q77
&111 )*55	

9-----r   c                 @   t           j                            dd                              t                    }t          j        |d          }|                     |j        d           t          j	        |          }t           j
                            ||           d S )Nr/   rL   )rM   r;   )r   r<   rN   r>   boolr   r?   r@   rA   rB   rC   rD   rs   s       r   	test_boolzTestNumpyHelper.test_bool   s    Iah//66t<<!,Q77
&111 )*55	

9-----r   c                 D    |                      t          j                   d S rT   rU   rV   s    r   test_float16zTestNumpyHelper.test_float16   rX   r   c                 D    |                      t          j                   d S rT   )rJ   r   	complex64rV   s    r   test_complex64zTestNumpyHelper.test_complex64   s    **2<88888r   c                 D    |                      t          j                   d S rT   )rJ   r   
complex128rV   s    r   test_complex128zTestNumpyHelper.test_complex128   s    **2=99999r   )r   )gA?)i  )gq @>c                    t          j        |          }t          j        |          }t	          |t
                    sJ t          j        t          j        |g                    d         }t          |          }t          j	        |          r.t          j	        |          sJ t          j	        |          sJ d S | 
                    ||           | 
                    ||           d S )Nr   )r   r   r   float32_to_bfloat16
isinstanceintr   r   rq   isnanr@   )rF   ff32bf16f32_1f32_2s         r   test_bfloat16_to_float32z(TestNumpyHelper.test_bfloat16_to_float32   s     jmm)#..$$$$$$04&1A1ABB1E#D))8C== 	)8E??"""8E??"""""S%(((S%(((((r   c                 $   |                      t          j        t          dd                    d           |                      t          j        t          dd                    d           |                      t          j        t          dd                    d           |                      t          j        t          dd                    d	           d
dddddddddddddd	t          j        fD ]}|                     |          5  t	          j        |          }t          j	        |          }t          |t                    sJ t          j        t	          j        |g                    d
         }t          |          }t	          j        |          r-t	          j        |          sJ t	          j        |          sJ n,|                      ||           |                      ||           d d d            n# 1 swxY w Y   d S )N1111110r/     1000g      ?1      `?111g      ?r   r   g      ?g      g      ?g      r   r   )r@   r   r'   r   r   r   subTestr   r   float32_to_float8e4m3r   rq   r   rF   r   r   f8r   r   s         r   test_float8e4m3_to_float32z*TestNumpyHelper.test_float8e4m3_to_float32   s2   ;C	1<M<MNNPSTTT;CNNKKYWWW;CQKKHH)TTT.s5!}}==?P	
 	
 	
 F!
 	1 	1A$ "" 1 1jmm1#66!"c*****$:28RD>>JJ1M-b118C== 18E??***8E??****$$S%000$$S%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1%	1 	1s   C)HH	
H	))g      r?      p?)      x?r   )gSt$w?r   )g333333s?r   )r   r   )g      h?r   )gX`?r   )g333333c?r   )g      ?r   )g333333S?r   )gVb?g      ?c                     t          j        |          }t          j        |          }|                     ||           d S rT   )r   r   r   r'   r@   )rF   valexpectedr   r   s        r    test_float8e4m3_to_float32_roundz0TestNumpyHelper.test_float8e4m3_to_float32_round   s@      )#..044h'''''r   c           
      f   |                      t          j        t          dd                    d           |                      t          j        t          dd                    d           |                      t          j        t          dd                    d           |                      t          j        t          dd                    d	           |                     t          j        t          j        t          d
d                                         |                     t          j        t          j        t          dd                                         |                     t          j        t          j        t          dd                                         |                     t          j        t          j        t          dd                                         |                     t          j        t          j        t          dd                                         |                     t          j        t          j        t          dd                                         |                      t          j        t          dd                    t
          j                   |                      t          j        t          dd                    t
          j                    dddddt
          j        fD ]}| 	                    |          5  t          j
        |          }t          j        |          }t          |t                    sJ t          j        t          j        |g                    d         }t          |          }t          j        |          r-t          j        |          sJ t          j        |          sJ n,|                      ||           |                      ||           d d d            n# 1 swxY w Y   d S )N1111011r/      100g      ?11g      ?r   g      >1111101r   1111111111111011111111011111111111110011111100r   g7  \?i P  r1   i r   )r@   r   r4   r   
assertTruer   r   r3   r   r   r   r   float32_to_float8e5m2r   rq   r   s         r   test_float8e5m2_to_float32z*TestNumpyHelper.test_float8e5m2_to_float32   s   ;C	1<M<MNNPUVVV;CqMMJJJWWW.s4||<<>O	
 	
 	
 	;CQKKHH*UUU!CC	STDUDU!V!VWWXXX!CC	STDUDU!V!VWWXXX!CC	STDUDU!V!VWWXXXH\7J8J8JKKLL	
 	
 	
 	H\7J8J8JKKLL	
 	
 	
 	H\7J8J8JKKLL	
 	
 	
 	;C	1<M<MNNPRPVWWW.s:q/A/ABBRVG	
 	
 	
 F
 	1 	1A "" 1 1jmm1#66!"c*****$:28RD>>JJ1M-b118C== 18E??***8E??****$$S%000$$S%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1s   /C)P$$P(	+P(	c                    t          j        t           j                  }t          j        |          }t          j        |          }|                     |d           t          j        t           j                  }t          j        |d          }t          j        |          }|                     t          j	        |                     t          j        t           j                   }t          j        |          }|                     |dz  d           t          j        |          }|                     |d           t          j        t           j                   }t          j        |d          }|                     |dz  d           t          j        |          }|                     t          j	        |                     d S )Nr   Fsaturater   @
r   r   r3   r   r   r   r'   r@   r   r   rF   xtobacks       r   test_float8_e4m3fn_infz&TestNumpyHelper.test_float8_e4m3fn_inf  sn   Jrv)!,,1"55s###Jrv)!e<<<1"55'''Jw)!,,dD)))1"55t$$$Jw)!e<<<dD)))1"55'''''r   c                 R   t          j        t           j                  }t          j        |d          }t          j        |d          }|                     |d           t          j        t           j                  }t          j        |dd          }t          j        |d          }|                     t          j	        |                     t          j        t           j                   }t          j        |d          }t          j        |d          }|                     |d           t          j        t           j                   }t          j        |dd          }t          j        |d          }|                     t          j	        |                     d S )NTuz   Fr   r   r   r   s       r   test_float8_e4m3fnuz_infz(TestNumpyHelper.test_float8_e4m3fnuz_inf(  s\   Jrv)!5551">>>s###Jrv)!uEEE1">>>'''Jw)!5551">>>t$$$Jw)!uEEE1">>>'''''r   c                    t          j        t           j                  }t          j        |          }t          j        |          }|                     |d           t          j        t           j                  }t          j        |d          }t          j        |          }|                     t          j	        |                     t          j        t           j                   }t          j        |          }|                     |dz  d           t          j        |          }|                     |d           t          j        t           j                   }t          j        |d          }|                     |dz  d           t          j        |          }|                     t          j	        |                     | 
                    |d           d S )Nr   Fr   r     r   )r   r   r3   r   r   r   r4   r@   r   isinf
assertLessr   s       r   test_float8_e5m2_infz$TestNumpyHelper.test_float8_e5m2_inf=  s   Jrv)!,,1"55u%%%Jrv)!e<<<1"55'''Jw)!,,dD)))1"55v&&&Jw)!e<<<dD)))1"55'''a     r   c                 b   t          j        t           j                  }t          j        |dd          }t          j        |dd          }|                     |d           t          j        t           j                  }t          j        |ddd          }t          j        |dd          }|                     t          j	        |                     t          j        t           j                   }t          j        |dd          }t          j        |dd          }|                     |d           t          j        t           j                   }t          j        |ddd          }t          j        |dd          }|                     t          j	        |                     d S )NTfnr   r   Fr   r   r   r   )
r   r   r3   r   r   r   r4   r@   r   r   r   s       r   test_float8_e5m2fnuz_infz(TestNumpyHelper.test_float8_e5m2fnuz_infU  sl   Jrv)!>>>1"$GGGu%%%Jrv)!NNN1"$GGG'''Jw)!>>>1"$GGGv&&&Jw)!NNN1"$GGG'''''r   c                    t          j        d          }t          j        |          }t	          j        |          }|                     |d           t          j        d          }t          j        |d          }t	          j        |          }|                     t          j        |                     t          j        d          }t          j        |          }t	          j        |          }|                     |d           t          j        d          }t          j        |d          }t	          j        |          }|                     t          j        |                     d S )N@B r   Fr   r   	r   r   r   r   r   r'   r@   r   r   r   s       r   test_float8_e4m3fn_out_of_rangez/TestNumpyHelper.test_float8_e4m3fn_out_of_rangej  s.   Jw)!,,1"55s###Jw)!e<<<1"55'''Jx  )!,,1"55t$$$Jx  )!e<<<1"55'''''r   c                    t          j        d          }t          j        |d          }t	          j        |d          }|                     |d           t          j        d          }t          j        |dd          }t	          j        |d          }|                     t          j        |                     t          j        d          }t          j        |d          }t	          j        |d          }|                     |d           t          j        d          }t          j        |dd          }t	          j        |d          }|                     t          j        |                     d S )	Nr   Tr   r   Fr   r   r   r   r   s       r   !test_float8_e4m3fnuz_out_of_rangez1TestNumpyHelper.test_float8_e4m3fnuz_out_of_range  sP   Jw)!5551">>>s###Jw)!uEEE1">>>'''Jx  )!5551">>>t$$$Jx  )!uEEE1">>>'''''r   c                    t          j        d          }t          j        |          }t	          j        |          }|                     |d           t          j        d          }t          j        |d          }t	          j        |          }|                     t          j        |                     t          j        d          }t          j        |          }t	          j        |          }|                     |d           t          j        d          }t          j        |d          }t	          j        |          }|                     t          j        |                     d S )Nr   r   Fr   r   r   )	r   r   r   r   r   r4   r@   r   r   r   s       r   test_float8_e5m2_out_of_rangez-TestNumpyHelper.test_float8_e5m2_out_of_range  s.   Jw)!,,1"55u%%%Jw)!e<<<1"55'''Jx  )!,,1"55v&&&Jx  )!e<<<1"55'''''r   c                    t          j        d          }t          j        |dd          }t	          j        |dd          }|                     |d           t          j        d          }t          j        |ddd          }t	          j        |dd          }|                     t          j        |                     t          j        d          }t          j        |dd          }t	          j        |dd          }|                     |d           t          j        d          }t          j        |ddd          }t	          j        |dd          }|                     t          j        |                     d S )	Nr   Tr   r   Fr   r   r   )	r   r   r   r   r   r4   r@   r   r   r   s       r   !test_float8_e5m2fnuz_out_of_rangez1TestNumpyHelper.test_float8_e5m2fnuz_out_of_range  s`   Jw)!>>>1"$GGGu%%%Jw)!NNN1"$GGG'''Jx  )!>>>1"$GGGv&&&Jx  )!NNN1"$GGG'''''r   c                    t          j        d          }t          j        |          }|                     |d           t          j        |          }|                     |d           t          j        d          }t          j        |d          }|                     |d           t          j        |          }|                     |d           d S Nr   r   Fr   r   r4   r   r   r@   r'   r   s       r    test_float8_e4m3fn_negative_zeroz0TestNumpyHelper.test_float8_e4m3fn_negative_zero      .t44)!,,T"""1"55q!!!.t44)!e<<<T"""1"55q!!!!!r   c                    t          j        d          }t          j        |d          }|                     |d           t          j        |d          }|                     |d           t          j        d          }t          j        |dd          }t          j        |d          }|                     |d           |                     |d           d S )Nr   Tr   r   Fr   r   r   s       r   "test_float8_e4m3fnuz_negative_zeroz2TestNumpyHelper.test_float8_e4m3fnuz_negative_zero  s    .t44)!555Q1">>>q!!!.t44)!uEEE1">>>q!!!Qr   c                    t          j        d          }t          j        |          }|                     |d           t          j        |          }|                     |d           t          j        d          }t          j        |d          }|                     |d           t          j        |          }|                     |d           d S r   r   r4   r   r   r@   r'   r   s       r   test_float8_e5m2_negative_zeroz.TestNumpyHelper.test_float8_e5m2_negative_zero  r   r   c                    t          j        d          }t          j        |dd          }|                     |d           t          j        |dd          }|                     |d           t          j        d          }t          j        |ddd          }|                     |d           t          j        |dd          }|                     |d           d S )Nr   Tr   r   Fr   r   r   s       r   "test_float8_e5m2fnuz_negative_zeroz2TestNumpyHelper.test_float8_e5m2fnuz_negative_zero  s    .t44)!>>>Q1"$GGGq!!!.t44)!NNNQ1"$GGGq!!!!!r   c                    t          j        d          }t          j        |          }|                     |d           t          j        |          }|                     t          j        |                     t          j        d          }t          j        |d          }|                     |d           t          j        |          }|                     t          j        |                     d S Nr   Fr   	r   r4   r   r   r@   r'   r   r   r   r   s       r   test_float8_e4m3fn_negative_nanz/TestNumpyHelper.test_float8_e4m3fn_negative_nan      .s33)!,,S!!!1"55'''.s33)!e<<<S!!!1"55'''''r   c                    t          j        d          }t          j        |d          }|                     |d           t          j        |d          }|                     t          j        |                     t          j        d          }t          j        |dd          }|                     |d           t          j        |d          }|                     t          j        |                     d S )Nr   Tr   r   Fr   r   r   s       r   !test_float8_e4m3fnuz_negative_nanz1TestNumpyHelper.test_float8_e4m3fnuz_negative_nan  s    .s33)!555T"""1">>>'''.s33)!uEEET"""1">>>'''''r   c                    t          j        d          }t          j        |          }|                     |d           t          j        |          }|                     t          j        |                     t          j        d          }t          j        |d          }|                     |d           t          j        |          }|                     t          j        |                     d S r   	r   r4   r   r   r@   r'   r   r   r   r   s       r   test_float8_e5m2_negative_nanz-TestNumpyHelper.test_float8_e5m2_negative_nan  r   r   c                    t          j        d          }t          j        |dd          }|                     |d           t          j        |dd          }|                     t          j        |                     t          j        d          }t          j        |ddd          }|                     |d           t          j        |dd          }|                     t          j        |                     d S )Nr   Tr   r   Fr   r   r   s       r   !test_float8_e5m2fnuz_negative_nanz1TestNumpyHelper.test_float8_e5m2fnuz_negative_nan  s    .s33)!>>>T"""1"$GGG'''.s33)!NNNT"""1"$GGG'''''r   c                    t          j        t          j        d          t          j        d          d          }|                     |t
          j                   |                     t          j        |j	        j
        d                   t          j        d                     |                     t          j        |j	        j
        d                   t          j        d                     d S )N皙??r   r   r   r   r   	from_dictr   rq   assertIsInstanceonnxMapProtor@   rB   valuestensor_valuesrF   	map_protos     r   ,test_from_dict_values_are_np_arrays_of_floatz<TestNumpyHelper.test_from_dict_values_are_np_arrays_of_float&  s     *rx}}#+O+OPP	i777!)"2"@"CDDbhsmm	
 	
 	
 	!)"2"@"CDDbhsmm	
 	
 	
 	
 	
r   c                    t          j        t          j        d          t          j        d          d          }|                     |t
          j                   |                     t          j        |j	        j
        d                   t          j        d                     |                     t          j        |j	        j
        d                   t          j        d                     d S )Nr   	   r   r   r   r   s     r   *test_from_dict_values_are_np_arrays_of_intz:TestNumpyHelper.test_from_dict_values_are_np_arrays_of_int0  s     *rx{{rx{{+K+KLL	i777!)"2"@"CDDbhqkk	
 	
 	
 	!)"2"@"CDDbhqkk	
 	
 	
 	
 	
r   c                 l   t          j        ddg          }t          j        ddg          }t          j        ||d          }|                     |t
          j                   t          j        |j        j	        d                   }| 
                    |d         |d                    | 
                    |d         |d                    t          j        |j        j	        d                   }| 
                    |d         |d                    | 
                    |d         |d                    d S )Nr   r/   r   
   r   r   )r   rq   r   r   r   r   r   rB   r   r   r@   )rF   
zero_array	one_arrayr   
out_tensors        r   +test_from_dict_values_are_np_arrays_of_intsz;TestNumpyHelper.test_from_dict_values_are_np_arrays_of_ints:  s   Xq!f%%
HaW%%	 *zi+H+HII	i777!*9+;+I!+LMM
A
1666A
1666!*9+;+I!+LMM
A	!555A	!55555r   c                     |                      t                    5  t          j        ddd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   )assertRaises	TypeErrorr   r   rV   s    r   >test_from_dict_raises_type_error_when_values_are_not_np_arrayszNTestNumpyHelper.test_from_dict_raises_type_error_when_values_are_not_np_arraysH  s    y)) 	5 	5"ss#3#3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A  AAc                     |                      t                    5  t          j        t	          j        d          t	          j        d          d           d d d            d S # 1 swxY w Y   d S )Nr   r   )r   g?r  r  r   r   r   rq   rV   s    r   "test_from_dict_differing_key_typesz2TestNumpyHelper.test_from_dict_differing_key_typesM  s    y)) 	K 	K"rx}}28C==#I#IJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K   <A$$A(+A(c                     |                      t                    5  t          j        t	          j        d          t	          j        d          d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r
  rV   s    r   $test_from_dict_differing_value_typesz4TestNumpyHelper.test_from_dict_differing_value_typesR  s    y)) 	G 	G"rx{{rx}}#E#EFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gr  )r   N)1__name__
__module____qualname__r   numberrJ   rR   rW   r[   r_   rb   re   rh   rk   rt   rw   ry   r|   r   parameterizedexpandr   r3   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   r6   r6   W   sN       .29 . . . . .. .t . . . .7 7 7 73 3 3 32 2 2 24 4 4 43 3 3 33 3 3 33 3 3 3. . . .. . . .7 7 7 79 9 9 9: : : :  ''VIVI	
	 	) )	 	)$1 $1 $1L  ''	
 	
 	
 ( ( (
*1 *1 *1X( ( (.( ( (*! ! !0( ( (*( ( (*( ( (*( ( (*( ( (*" " "     " " "" " "( ( (( ( (( ( (( ( (
 
 

 
 
6 6 65 5 5
K K K
G G G G Gr   r6   __main__)unittesttypingr   numpyr   r  r   r   r   r   r   r'   r4   TestCaser6   r  mainr  r   r   <module>r     s%  
                 % % % % % % % %c c         6     >~G ~G ~G ~G ~Gh' ~G ~G ~GB zHMOOOOO r   