
    J/Ph                         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                     dS dS )    N)captured_stdoutoverride_config)njit	vectorizeguvectorizec                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestFastMathc                    d } t          d          |          }t          |          }|                      |d           |d                     |                    |j        d                   }|                    |j        d                   }|                     d|           |                     d|           |                     d|           |                     d|           d S )Nc                 0    | t          j        |           z   S Nmathsinxs    Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_fastmath.pyfooz"TestFastMath.test_jit.<locals>.foo       tx{{?"    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))wws||444''(:1(=>>''(:1(=>>k8,,,k8,,,h///h/////r   c                 @   d } t          ddh          |          } t          dh          |          }|                      |dt          j                  d           |                     t          j         |dt          j                                       d S )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   s    	 	 	3$E 2333C88,$,,,S11bf--s333bf!5!56677777r   c                    d } t          ddh          |          } t                      |          }|                      |d           |d                     |                    |j        d                   }|                    |j        d                   }|                     d|           |                     d|           |                     d	|           |                     d
|           |                     d|           |                     d|           |                     d|v pd	|v |           |                     d|v pd
|v |           d S )Nc                 0    | 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333C88$&&++wws||444''(:1(=>>''(:1(=>>h///h///+X666+X666+X666+X6668+ -8+	
 	
 	

 	8+ -8+	
 	
 	
 	
 	
r   c                    |                      t                    5 }  t          dh          d           d           d d d            n# 1 swxY w Y   |                     dt	          |j                             |                      t                    5 }  t          ddi          d           d           d d d            n# 1 swxY w Y   |                     dt	          |j                             |                      t                    5 }  t          d          d	           d           d d d            n# 1 swxY w Y   |                     d
t	          |j                             d S )Nspqrr   c                     | dz   S N   r)   r   s    r   <lambda>z5TestFastMath.test_jit_subset_errors.<locals>.<lambda><   s
    a!e r   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U r   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:   s5   z** 	8f4#D6(###OO44Q777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8* !!	
 	
 	

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

 z** 	4f0D$00333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4/ !!	
 	
 	
 	
 	
s5   %AAA&CCC$EEEc                 (   d } t          d          |          }t          |          }t          j                            d                              t          j                  }t          dd          5  t                      5 } ||          }d d d            n# 1 swxY w Y   |                                }t                      5 } ||          }	d d d            n# 1 swxY w Y   |                                }
d d d            n# 1 swxY w Y   t          j        	                    ||	           | 
                    d|
           | 
                    d|
           |                     d|           |                     d|           d S )Nc                 0    | 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..IQ&&rz22-t44 	+ 	+ "" $h $ $ $ $ $ $ $ $ $ $ $ $ $ $ $((**H "" !hgajj! ! ! ! ! ! ! ! ! ! ! ! ! ! !((**H	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	
&&vs333k8,,,k8,,,h///h/////sZ   8DBDB#	#D&B#	'%DC$D$C(	(D+C(	,DDDc                 J   d }t           j                            d                              t           j                  }t	          dd          5  dg}d}t                      5 } t          ||d          |          }d d d            n# 1 swxY w Y   |                                }t                      5 } t          ||          |          }	d d d            n# 1 swxY w Y   |                                }
d d d            n# 1 swxY w Y    |	|          } ||          }t           j        	                    ||           | 
                    d|           | 
                    d	|           |                     d|
           |                     d	|
           d S )
Nc                 :    | t          j        |           z   |d<   d S )Nr   r   )r   outs     r   r   z*TestFastMath.test_guvectorize.<locals>.fooe   s    !_CFFFr   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\   	% 	% 	%IQ&&rz22-t44 	+ 	+,-EC "" Fh@+eS4@@@EEF F F F F F F F F F F F F F F((**H "" 7h1+eS11#667 7 7 7 7 7 7 7 7 7 7 7 7 7 7((**H	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ gajj

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