U
    9%e                     @   sb   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 de
jZedkr^e
  dS )    N)captured_stdoutoverride_config)njit	vectorizeguvectorizec                   @   s<   e Zd Zdd Zdd Zd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   X/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_fastmath.pyfoo   s    z"TestFastMath.test_jit.<locals>.fooTZfastmath      ?r   	fadd fast	call fast)r   assertEqualinspect_llvm
signaturesassertInassertNotInselfr   fastfooslowfoofastllvmslowllvmr   r   r   test_jit
   s    zTestFastMath.test_jitc                 C   sZ   dd }t ddhd|}t dhd|}| |dtjd | t|dtj d S )Nc                 S   s   | | | S r   r   )r   yr   r   r   r      s    z3TestFastMath.test_jit_subset_behaviour.<locals>.fooreassocnszr   r   )r   r   npinf
assertTrueisnan)r   r   r   r   r   r   r   test_jit_subset_behaviour   s
    z&TestFastMath.test_jit_subset_behaviourc                 C   s   dd }t ddhd|}t  |}| |d|d ||jd }||jd }| d| | d	| | d
| | d| | d| | d| | d|kpd
|k| | d|kpd|k| d S )Nc                 S   s   | t |  S r   r	   r   r   r   r   r   !   s    z.TestFastMath.test_jit_subset_code.<locals>.foor"   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   r   r   r   test_jit_subset_code    s,    
z!TestFastMath.test_jit_subset_codec              	   C   s   |  t}tdhddd d W 5 Q R X | dt|j |  t }tddiddd d W 5 Q R X | dt|j |  t}td	dd
d d W 5 Q R X | dt|j d S )NZspqrr   c                 S   s   | d S N   r   r   r   r   r   <lambda><       z5TestFastMath.test_jit_subset_errors.<locals>.<lambda>r+   zUnrecognized fastmath flags:Fc                 S   s   | d S r*   r   r   r   r   r   r,   C   r-   i9  c                 S   s   | d S r*   r   r   r   r   r   r,   J   r-   z!Expected fastmath option(s) to be)assertRaises
ValueErrorr   r   str	exception)r   Zraisesr   r   r   test_jit_subset_errors:   s$    "$ z#TestFastMath.test_jit_subset_errorsc              
   C   s   dd }t dd|}t |}tjdtj}tddJ t }||}W 5 Q R X | }t }||}	W 5 Q R X | }
W 5 Q R X tj	||	 | 
d|
 | 
d|
 | d| | d| d S )	Nc                 S   s   | t |  S r   r	   r   r   r   r   r   Q   s    z(TestFastMath.test_vectorize.<locals>.fooTr      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   r   r   r   test_vectorizeP   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 5 Q R X | }t }t|||}	W 5 Q R X | }
W 5 Q R X |	|}||}t j	|| | 
d	| | 
d
| | d	|
 | d
|
 d S )Nc                 S   s   | t |  |d< d S )Nr   r	   )r   outr   r   r   r   e   s    z*TestFastMath.test_guvectorize.<locals>.foor3   r4   Tz(float32, float32[:])z()->()r   r   r   )r$   r5   r6   r7   r   r   r   r8   r9   r:   r   r   )r   r   r   typessigr=   r   r   r;   r   r   r<   r>   r   r   r   test_guvectorized   s$    zTestFastMath.test_guvectorizeN)	__name__
__module____qualname__r    r(   r)   r2   r?   rC   r   r   r   r   r   	   s   r   __main__)r
   numpyr$   Znumba.tests.supportr   r   Znumbar   r   r   ZunittestZTestCaser   rD   mainr   r   r   r   <module>   s   q