a
    
d                     @   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   b/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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|v pd
|v | | d|v pd|v | 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 d    n1 s80    Y  | dt|j |  t*}tddiddd d W d    n1 s0    Y  | dt|j |  t&}td	dd
d d W d    n1 s0    Y  | 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$    684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 sb0    Y  | }t }||}	W d    n1 s0    Y  | }
W d    n1 s0    Y  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g}d}t "}t||dd|}W d    n1 s`0    Y  | }t }t|||}	W d    n1 s0    Y  | }
W d    n1 s0    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>.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$    0,&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