B
     \%
                 @   sv   d dl mZmZ d dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZmZmZ G dd dejZedkrre  dS )	    )print_functionabsolute_importN)unittest_support)captured_stdoutoverride_config)njit	vectorizeguvectorizec               @   s$   e Zd Zdd Zdd Zdd ZdS )TestFastMathc             C   s   dd }t dd|}t |}| |d|d ||jd }||jd }| d| | d| | d| | d| d S )	Nc             S   s   | t |  S )N)mathsin)x r   8lib/python3.7/site-packages/numba/tests/test_fastmath.pyfoo   s    z"TestFastMath.test_jit.<locals>.fooT)fastmathg      ?r   z	fadd fastz	call fast)r   ZassertEqualZinspect_llvmZ
signaturesassertInassertNotIn)selfr   fastfooslowfoofastllvmslowllvmr   r   r   test_jit   s    zTestFastMath.test_jitc          
   C   s   dd }t dd|}t |}tjdtj}tddJ t }||}W d Q R X | }t }||}	W d Q R X | }
W d Q R X tj	||	 | 
d|
 | 
d|
 | d| | d| d S )	Nc             S   s   | t |  S )N)r   r   )r   r   r   r   r      s    z(TestFastMath.test_vectorize.<locals>.fooT)r      DUMP_OPTIMIZEDz	fadd fastz	call fast)r   nprandomastypefloat32r   r   getvaluetestingassert_almost_equalr   r   )r   r   r   r   r   slow_capexpectr   fast_capgotr   r   r   r   test_vectorize   s     zTestFastMath.test_vectorizec          
   C   s   dd }t jdt j}tddd dg}d}t }t||dd|}W d Q R X | }t }t|||}	W d Q R X | }
W d Q R X |	|}||}t j	|| | 
d	| | 
d
| | d	|
 | d
|
 d S )Nc             S   s   | t |  |d< d S )Nr   )r   r   )r   outr   r   r   r   /   s    z*TestFastMath.test_guvectorize.<locals>.foor   r   Tz(float32, float32[:])z()->())r   z	fadd fastz	call fast)r   r   r   r   r   r   r	   r    r!   r"   r   r   )r   r   r   typesZsigr%   r   r   r#   r   r   r$   r&   r   r   r   test_guvectorize.   s$    zTestFastMath.test_guvectorizeN)__name__
__module____qualname__r   r'   r*   r   r   r   r   r
      s   r
   __main__)Z
__future__r   r   r   Znumpyr   Znumbar   ZunittestZnumba.tests.supportr   r   r   r   r	   ZTestCaser
   r+   mainr   r   r   r   <module>   s   9