a
    
d-                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZmZ ddlT d dlZe Zde_e ZG dd	 d	eZG d
d deeZG dd deeZedkre  dS )    N)compile_isolatedFlagsutils)types)TestCasetag   )*Tc                   @   sB   e Zd Zdd Zdd Zdd Zddefd	d
ZdefddZdS )BaseComplexTestc              	   C   sJ   ddddddt dt dg}tjd	kr4|t d
g7 }dd t||D S )N               r         ?g      -inf+infwin32nanc                 S   s   g | ]\}}t ||qS  complex.0xyr   r   a/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_complex.py
<listcomp>       z0BaseComplexTest.basic_values.<locals>.<listcomp>)floatsysplatform	itertoolsproductselfZrealsr   r   r   basic_values   s    
zBaseComplexTest.basic_valuesc              	   C   sR   ddddt j t j
 tdtdg}tjdkr<|tdg7 }d	d
 t||D S )Nr   r   r   r   r   r   r   r   c                 S   s   g | ]\}}t ||qS r   r   r   r   r   r   r       r   z/BaseComplexTest.more_values.<locals>.<listcomp>)mathpir   r   r   r    r!   r"   r   r   r   more_values   s    
zBaseComplexTest.more_valuesc              	   C   s:   ddddt j t j
 tdtdg}dd t||D S )	Nr   r   r   r   infr   c                 S   s   g | ]\}}t ||qS r   r   r   r   r   r   r   %   r   z2BaseComplexTest.non_nan_values.<locals>.<listcomp>)r%   r&   r   r    r!   r"   r   r   r   non_nan_values"   s    zBaseComplexTest.non_nan_valuesr   Nc                 C   s   |D ]}t ||g|d}|j}	|tjtjfv r2dnd}
|D ]|}z||}W n@ ty } z(| dt| W Y d }~q:W Y d }~n
d }~0 0 |	|}d||
f }| j|||
|||d q:qd S )Nflagssingledoublemath domain errorfor input %r with prec %r)preculpsabs_tolmsg)	r   entry_pointr   float32	complex64
ValueErrorassertInstrassertPreciseEqual)r#   pyfuncZx_typesZx_valuesr1   r2   r+   txcrcfuncr0   vxexpectedegotr3   r   r   r   	run_unary'   s    "
zBaseComplexTest.run_unaryc                 C   s   |D ]\}}t |||g|d}|j}	t||gttjtjg@ rDdnd}
|D ]\}}z|||}W nT ty } z(| dt| W Y d }~qLW Y d }~nd }~0  t	y   Y qLY n0 |	||}d||f|
f }| j
|||
||d qLqd S )Nr*   r,   r-   r.   r/   )r0   r1   r3   )r   r4   setr   r5   r6   r7   r8   r9   ZeroDivisionErrorr:   )r#   r;   value_typesvaluesr1   r+   r<   tyr=   r>   r0   r?   Zvyr@   rA   rB   r3   r   r   r   
run_binary8   s(     


zBaseComplexTest.run_binary)	__name__
__module____qualname__r$   r'   r)   enable_pyobj_flagsrC   rI   r   r   r   r   r
      s   
r
   c                   @   s\   e Zd ZefddZdd ZefddZdd Zefd	d
Zdd Z	efddZ
dd ZdS )TestComplexc                 C   s^   | j ttjtjg|  |d | j ttjtjgg d|d | j ttjtj	gddg|d d S Nr*   )r   r   r   g      )
rC   Zreal_usecaser   r6   
complex128r$   int8int64r5   float64r#   r+   r   r   r   	test_realP   s    zTestComplex.test_realc                 C   s   | j td d S Nr*   )rV   no_pyobj_flagsr#   r   r   r   test_real_npmX   s    zTestComplex.test_real_npmc                 C   s^   | j ttjtjg|  |d | j ttjtjgg d|d | j ttjtj	gddg|d d S rO   )
rC   Zimag_usecaser   r6   rQ   r$   rR   rS   r5   rT   rU   r   r   r   	test_imag[   s    zTestComplex.test_imagc                 C   s   | j td d S rW   )r[   rX   rY   r   r   r   test_imag_npmc   s    zTestComplex.test_imag_npmc                 C   s^   | j ttjtjg|  |d | j ttjtjgg d|d | j ttjtj	gddg|d d S rO   )
rC   Zconjugate_usecaser   r6   rQ   r$   rR   rS   r5   rT   rU   r   r   r   test_conjugatef   s    zTestComplex.test_conjugatec                 C   s   | j td d S rW   )r]   rX   rY   r   r   r   test_conjugate_npmn   s    zTestComplex.test_conjugate_npmc                 C   sF   t t|  |  }tjtjftjtjfg}| jt|||d dS )zN
        Test complex.__div__ implementation with non-trivial values.
        r*   N)	listr    r!   r'   r   rQ   r6   rI   Zdiv_usecaser#   r+   rG   rF   r   r   r   test_divq   s
    

zTestComplex.test_divc                 C   s   | j td d S rW   )ra   rX   rY   r   r   r   test_div_npm{   s    zTestComplex.test_div_npmN)rJ   rK   rL   rM   rV   rZ   r[   r\   r]   r^   ra   rb   r   r   r   r   rN   N   s   
rN   c                   @   s  e Zd ZdZdd ZddddZdd	 Zd
d Zdd Zdd Z	e
fddZdd Ze
fddZdd Ze
fddZdd Ze
fddZdd Zd d! Zd"d# Zd$d% Zd&d' Ze
fd(d)Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLdM Z)dNdO Z*dPdQ Z+dRdS Z,dTdU Z-dVdW Z.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4dS )e	TestCMathz)
    Tests for cmath module support.
    c                 C   s"   | j |tjtjg|  |d d S rW   )rC   r   rQ   r6   r$   )r#   r;   r+   r   r   r   check_predicate_func   s    zTestCMath.check_predicate_funcr   Nc                 C   sH   | j |tjg|p|  |||d | j |tjg|p8|  |||d d S )N)r+   r1   r2   )rC   r   rQ   r'   r6   r$   )r#   r;   r+   r1   r2   rG   r   r   r   check_unary_func   s    zTestCMath.check_unary_funcc                 C   s   |  tt d S N)re   phase_usecaserM   rY   r   r   r   
test_phase   s    zTestCMath.test_phasec                 C   s   |  tt d S rf   )re   rg   rX   rY   r   r   r   test_phase_npm   s    zTestCMath.test_phase_npmc                 C   s   |  tt d S rf   )re   polar_usecaserM   rY   r   r   r   
test_polar   s    zTestCMath.test_polarc                 C   s   |  tt d S rf   )re   rj   rX   rY   r   r   r   test_polar_npm   s    zTestCMath.test_polar_npmc                    s2    fdd}|t j  |t j  d S )Nc                    s*   dd |D }j t| | fg| d d S )Nc                 S   s.   g | ]&}t |jr|jd kr|j|jfqS )r   )r%   isinfimagreal)r   zr   r   r   r      s   z8TestCMath.test_rect.<locals>.do_test.<locals>.<listcomp>r*   )rI   Zrect_usecase)tpZseed_valuesrG   r+   r#   r   r   do_test   s    z$TestCMath.test_rect.<locals>.do_test)r   rT   r'   r5   r$   )r#   r+   rs   r   rr   r   	test_rect   s    zTestCMath.test_rectc                 C   s   | j td d S rW   )rt   rX   rY   r   r   r   test_rect_npm   s    zTestCMath.test_rect_npmc                 C   s   |  tt d S rf   )rd   isnan_usecaserM   rU   r   r   r   
test_isnan   s    zTestCMath.test_isnanc                 C   s   |  tt d S rf   )rd   rv   rX   rY   r   r   r   test_isnan_npm   s    zTestCMath.test_isnan_npmc                 C   s   |  tt d S rf   )rd   isinf_usecaserM   rU   r   r   r   
test_isinf   s    zTestCMath.test_isinfc                 C   s   |  tt d S rf   )rd   ry   rX   rY   r   r   r   test_isinf_npm   s    zTestCMath.test_isinf_npmc                 C   s   |  tt d S rf   )rd   isfinite_usecaserM   rU   r   r   r   test_isfinite   s    zTestCMath.test_isfinitec                 C   s   |  tt d S rf   )rd   r|   rX   rY   r   r   r   test_isfinite_npm   s    zTestCMath.test_isfinite_npmc                 C   s   | j ttdd d S N   )r1   )re   exp_usecaserM   rY   r   r   r   test_exp   s    zTestCMath.test_expc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_exp_npm   s    zTestCMath.test_exp_npmc                 C   s   |  tt d S rf   )re   log_usecaserM   rY   r   r   r   test_log   s    zTestCMath.test_logc                 C   s   |  tt d S rf   )re   r   rX   rY   r   r   r   test_log_npm   s    zTestCMath.test_log_npmc                 C   sH   t t|  |  }tjtjftjtjfg}| jt|||dd d S )N   )r+   r1   )	r_   r    r!   r'   r   rQ   r6   rI   Zlog_base_usecaser`   r   r   r   test_log_base   s    

zTestCMath.test_log_basec                 C   s   | j td d S rW   )r   rX   rY   r   r   r   test_log_base_npm   s    zTestCMath.test_log_base_npmc                 C   s   |  tt d S rf   )re   log10_usecaserM   rY   r   r   r   
test_log10   s    zTestCMath.test_log10c                 C   s   |  tt d S rf   )re   r   rX   rY   r   r   r   test_log10_npm   s    zTestCMath.test_log10_npmc                 C   s   |  tt d S rf   )re   sqrt_usecaserM   rY   r   r   r   	test_sqrt   s    zTestCMath.test_sqrtc                 C   s:   |  tt dd tddD }| jttjg|td d S )Nc                 S   s   g | ]}d |  qS )
   r   )r   ir   r   r   r      r   z+TestCMath.test_sqrt_npm.<locals>.<listcomp>$   )   r*   )re   r   rX   rangerC   r   rQ   )r#   rG   r   r   r   test_sqrt_npm   s
    zTestCMath.test_sqrt_npmc                 C   s   | j ttdd d S r   )re   acos_usecaserM   rY   r   r   r   	test_acos   s    zTestCMath.test_acosc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_acos_npm   s    zTestCMath.test_acos_npmc                 C   s   | j ttdd d S r   )re   asin_usecaserM   rY   r   r   r   	test_asin   s    zTestCMath.test_asinc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_asin_npm   s    zTestCMath.test_asin_npmc                 C   s   | j ttdd d S r   )re   atan_usecaserM   rY   r   r   r   	test_atan   s    zTestCMath.test_atanc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_atan_npm   s    zTestCMath.test_atan_npmc                 C   s   | j ttdd d S r   )re   cos_usecaserM   rY   r   r   r   test_cos   s    zTestCMath.test_cosc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_cos_npm  s    zTestCMath.test_cos_npmc                 C   s   | j ttdd d S NZeps)r2   )re   sin_usecaserM   rY   r   r   r   test_sin  s    zTestCMath.test_sinc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_sin_npm
  s    zTestCMath.test_sin_npmc                 C   s   | j ttdd d S r   re   Ztan_usecaserM   rY   r   r   r   test_tan  s    zTestCMath.test_tanc                 C   s   | j ttdd d S r   r   rY   r   r   r   test_tan_npm  s    zTestCMath.test_tan_npmc                 C   s   |  tt d S rf   )re   acosh_usecaserM   rY   r   r   r   
test_acosh  s    zTestCMath.test_acoshc                 C   s   |  tt d S rf   )re   r   rX   rY   r   r   r   test_acosh_npm  s    zTestCMath.test_acosh_npmc                 C   s   | j ttdd d S r   )re   asinh_usecaserM   rY   r   r   r   
test_asinh  s    zTestCMath.test_asinhc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_asinh_npm  s    zTestCMath.test_asinh_npmc                 C   s   | j ttdd d S r   )re   atanh_usecaserM   rY   r   r   r   
test_atanh!  s    zTestCMath.test_atanhc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_atanh_npm$  s    zTestCMath.test_atanh_npmc                 C   s   | j ttdd d S r   )re   cosh_usecaserM   rY   r   r   r   	test_cosh'  s    zTestCMath.test_coshc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_cosh_npm*  s    zTestCMath.test_cosh_npmc                 C   s   | j ttdd d S r   )re   sinh_usecaserM   rY   r   r   r   	test_sinh-  s    zTestCMath.test_sinhc                 C   s   | j ttdd d S r   )re   r   rX   rY   r   r   r   test_sinh_npm0  s    zTestCMath.test_sinh_npmc                 C   s   | j ttdd d S r   re   Ztanh_usecaserM   rY   r   r   r   	test_tanh3  s    zTestCMath.test_tanhc                 C   s   | j ttdd d S r   r   rY   r   r   r   test_tanh_npm6  s    zTestCMath.test_tanh_npm)r   NN)5rJ   rK   rL   __doc__rd   re   rh   ri   rk   rl   rM   rt   ru   rw   rx   rz   r{   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc      sf     
	
rc   __main__)Zcmathr    r%   r   Znumba.core.compilerr   r   r   Z
numba.corer   Znumba.tests.supportr   r   Zcomplex_usecasesZunittestrM   Zenable_pyobjectrX   objectr
   rN   rc   rJ   mainr   r   r   r   <module>   s"   <1 <