o
    i                     @   sf   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r1e
  dS 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      | t |  S Nmathsinx r   h/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_fastmath.pyfoo      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|v pYd
|v | | d|v ped|v | d S )Nc                 S   r   r	   r
   r   r   r   r   r   !   r   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 d    n1 sw   Y  | dt|j |  t}tddiddd d W d    n1 sGw   Y  | dt|j |  t}td	dd
d d W d    n1 spw   Y  | dt|j d S )NZspqrr   c                 S      | d S N   r   r   r   r   r   <lambda><       z5TestFastMath.test_jit_subset_errors.<locals>.<lambda>r.   zUnrecognized fastmath flags:Fc                 S   r,   r-   r   r   r   r   r   r/   C   r0   i9  c                 S   r,   r-   r   r   r   r   r   r/   J   r0   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> t }||}W d    n1 s1w   Y  | }t }||}	W d    n1 sLw   Y  | }
W d    n1 s_w   Y  tj	||	 | 
d|
 | 
d|
 | d| | d| d S )	Nc                 S   r   r	   r
   r   r   r   r   r   Q   r   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K dg}d}t }t||dd|}W d    n1 s0w   Y  | }t }t|||}	W d    n1 sNw   Y  | }
W d    n1 saw   Y  |	|}||}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>.foor6   r7   Tz(float32, float32[:])z()->()r   r   r   )r&   r8   r9   r:   r   r   r   r;   r<   r=   r   r   )r   r   r   typessigr@   r   r    r>   r   r!   r?   rA   r   r   r   test_guvectorized   s*   
	zTestFastMath.test_guvectorizeN)	__name__
__module____qualname__r"   r*   r+   r5   rB   rF   r   r   r   r   r   	   s    r   __main__)r   numpyr&   Znumba.tests.supportr   r   Znumbar   r   r   ZunittestZTestCaser   rG   mainr   r   r   r   <module>   s    q