
    xKg                         d dl Z d dlZd dlmZmZ d dlmZmZm	Z	 d dl
Z
 G d de
j                        Zedk(  r e
j                          yy)    N)captured_stdoutoverride_config)njit	vectorizeguvectorizec                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestFastMathc                    d } t        d      |      }t        |      }| j                   |d       |d             |j                  |j                  d         }|j                  |j                  d         }| j	                  d|       | j	                  d|       | j                  d|       | j                  d|       y )Nc                 2    | t        j                  |       z   S Nmathsinxs    ]/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_fastmath.pyfooz"TestFastMath.test_jit.<locals>.foo       txx{?"    Tfastmath      ?r   	fadd fast	call fast)r   assertEqualinspect_llvm
signaturesassertInassertNotInselfr   fastfooslowfoofastllvmslowllvms         r   test_jitzTestFastMath.test_jit
   s    	#%$%c*s)ws|4''(:(:1(=>''(:(:1(=>k8,k8,h/h/r   c                    d } t        ddh      |      } t        dh      |      }| j                   |dt        j                        d       | j	                  t        j
                   |dt        j                                     y )Nc                     | |z
  |z   S r    )r   ys     r   r   z3TestFastMath.test_jit_subset_behaviour.<locals>.foo   s    EQ;r   reassocnszr   r   )r   r   npinf
assertTrueisnan)r!   r   r"   r#   s       r   test_jit_subset_behaviourz&TestFastMath.test_jit_subset_behaviour   sk    	3$E 23C8,$,S1bff-s3bff!567r   c                 F   d } t        ddh      |      } t               |      }| j                   |d       |d             |j                  |j                  d         }|j                  |j                  d         }| j	                  d|       | j	                  d|       | j	                  d	|       | j	                  d
|       | j	                  d|       | j	                  d|       | j                  d|v xs d	|v |       | j                  d|v xs d
|v |       y )Nc                 2    | t        j                  |       z   S r   r   r   s    r   r   z.TestFastMath.test_jit_subset_code.<locals>.foo!   r   r   r+   r,   r   r   r   r   r   zfadd reassoc nszzcall reassoc nszzfadd nsz reassoczcall nsz reassoc)r   r   r   r   r   r/   r    s         r   test_jit_subset_codez!TestFastMath.test_jit_subset_code    s&   	#3$E 23C8$&+ws|4''(:(:1(=>''(:(:1(=>h/h/+X6+X6+X6+X68+ -8+	

 	8+ -8+	
r   c                 z   | j                  t              5 }  t        dh      d       d       d d d        | j                  dt	        j
                               | j                  t              5 }  t        ddi      d       d       d d d        | j                  dt	        |j
                               | j                  t              5 }  t        d      d	       d       d d d        | j                  d
t	        |j
                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   GxY w)Nspqrr   c                     | dz   S N   r)   r   s    r   <lambda>z5TestFastMath.test_jit_subset_errors.<locals>.<lambda><   s    a!er   r9   zUnrecognized fastmath flags:Fc                     | dz   S r8   r)   r   s    r   r:   z5TestFastMath.test_jit_subset_errors.<locals>.<lambda>C   s    QUr   i9  c                     | dz   S r8   r)   r   s    r   r:   z5TestFastMath.test_jit_subset_errors.<locals>.<lambda>J   s    !a%r   z!Expected fastmath option(s) to be)assertRaises
ValueErrorr   r   str	exception)r!   raisess     r   test_jit_subset_errorsz#TestFastMath.test_jit_subset_errors:   s   z*f4#D6(#O4Q7 +*  !	

 z*f;*D65/*?;A> +*  !	

 z*f0D$03 +/  !	
! +* +* +*s#   D3D%D1D"%D.1D:c                    d } t        d      |      }t        |      }t        j                  j                  d      j                  t        j                        }t        dd      5  t               5 } ||      }d d d        j                         }t               5 } ||      }	d d d        j                         }
d d d        t        j                  j                  	       | j                  d
       | j                  d|
       | j                  d       | j                  d|       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                 2    | t        j                  |       z   S r   r   r   s    r   r   z(TestFastMath.test_vectorize.<locals>.fooQ   r   r   Tr      DUMP_OPTIMIZEDr   r   )r   r-   randomastypefloat32r   r   getvaluetestingassert_almost_equalr   r   )r!   r   r"   r#   r   slow_capexpectr%   fast_capgotr$   s              r   test_vectorizezTestFastMath.test_vectorizeP   s	   	#*)T*3/C.IIQ&&rzz2-t4 "h  #((*H "haj #((*H 5 	

&&vs3k8,k8,h/h/ #" #"	 54s<   )E	4	D1="E		D=(E	1D:	6E	=E	E		Ec                    d }t         j                  j                  d      j                  t         j                        }t	        dd      5  dg}d}t               5 } t        ||d      |      }d d d        j                         }t               5 } t        ||      |      }	d d d        j                         }
d d d         	|      } |      }t         j                  j                  ||       | j                  d       | j                  d	|       | j                  d
       | j                  d	|
       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)
Nc                 :    | t        j                  |       z   |d<   y )Nr   r   )r   outs     r   r   z*TestFastMath.test_guvectorize.<locals>.fooe   s    !_CFr   rE   rF   Tz(float32, float32[:])z()->()r   r   r   )r-   rG   rH   rI   r   r   r   rJ   rK   rL   r   r   )r!   r   r   typessigrO   r"   r$   rM   r#   r%   rN   rP   s                r   test_guvectorizezTestFastMath.test_guvectorized   s$   	%IIQ&&rzz2-t4,-EC "h@+eS4@E #((*H "h1+eS1#6 #((*H 5 aj


&&vs3k8,k8,h/h/ #" #" 54s<   ED?1"EE&E?E	EE	EE N)	__name__
__module____qualname__r&   r1   r4   rB   rQ   rW   r)   r   r   r	   r	   	   s     08
4
,0(0r   r	   __main__)r   numpyr-   numba.tests.supportr   r   numbar   r   r   unittestTestCaser	   rX   mainr)   r   r   <module>rb      sF      @ . . n08$$ n0b zHMMO r   