U
    9%e-                     @   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   W/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_complex.py
<listcomp>   s     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       s     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   %   s     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kr2dnd}
|D ]v}z||}W n: tk
r } z| dt| W Y q:W 5 d }~X Y nX |	|}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_valuesr0   r1   r*   txcrcfuncr/   vxexpectedegotr2   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 nP tk
r } z| dt| W Y qLW 5 d }~X Y n t	k
r   Y qLY nX |	||}d||f|
f }| j
|||
||d qLqd S )Nr)   r+   r,   r-   r.   )r/   r0   r2   )r   r3   setr   r4   r5   r6   r7   r8   ZeroDivisionErrorr9   )r"   r:   value_typesvaluesr0   r*   r;   tyr<   r=   r/   r>   Zvyr?   r@   rA   r2   r   r   r   
run_binary8   s*    


 zBaseComplexTest.run_binary)	__name__
__module____qualname__r#   r&   r(   enable_pyobj_flagsrB   rH   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dddg|d | j ttjtj	gddg|d d S Nr)   r   r   r   g      )
rB   Zreal_usecaser   r5   
complex128r#   int8int64r4   float64r"   r*   r   r   r   	test_realP   s       zTestComplex.test_realc                 C   s   | j td d S Nr)   )rU   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dddg|d | j ttjtj	gddg|d d S rN   )
rB   Zimag_usecaser   r5   rP   r#   rQ   rR   r4   rS   rT   r   r   r   	test_imag[   s       zTestComplex.test_imagc                 C   s   | j td d S rV   )rZ   rW   rX   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dddg|d | j ttjtj	gddg|d d S rN   )
rB   Zconjugate_usecaser   r5   rP   r#   rQ   rR   r4   rS   rT   r   r   r   test_conjugatef   s       zTestComplex.test_conjugatec                 C   s   | j td d S rV   )r\   rW   rX   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   rP   r5   rH   Zdiv_usecaser"   r*   rF   rE   r   r   r   test_divq   s
    

zTestComplex.test_divc                 C   s   | j td d S rV   )r`   rW   rX   r   r   r   test_div_npm{   s    zTestComplex.test_div_npmN)rI   rJ   rK   rL   rU   rY   rZ   r[   r\   r]   r`   ra   r   r   r   r   rM   N   s   
rM   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 rV   )rB   r   rP   r5   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*   r0   r1   )rB   r   rP   r&   r5   r#   )r"   r:   r*   r0   r1   rF   r   r   r   check_unary_func   s    
  
  zTestCMath.check_unary_funcc                 C   s   |  tt d S N)rd   phase_usecaserL   rX   r   r   r   
test_phase   s    zTestCMath.test_phasec                 C   s   |  tt d S re   )rd   rf   rW   rX   r   r   r   test_phase_npm   s    zTestCMath.test_phase_npmc                 C   s   |  tt d S re   )rd   polar_usecaserL   rX   r   r   r   
test_polar   s    zTestCMath.test_polarc                 C   s   |  tt d S re   )rd   ri   rW   rX   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)   )rH   Zrect_usecase)tpZseed_valuesrF   r*   r"   r   r   do_test   s    z$TestCMath.test_rect.<locals>.do_test)r   rS   r&   r4   r#   )r"   r*   rr   r   rq   r   	test_rect   s    zTestCMath.test_rectc                 C   s   | j td d S rV   )rs   rW   rX   r   r   r   test_rect_npm   s    zTestCMath.test_rect_npmc                 C   s   |  tt d S re   )rc   isnan_usecaserL   rT   r   r   r   
test_isnan   s    zTestCMath.test_isnanc                 C   s   |  tt d S re   )rc   ru   rW   rX   r   r   r   test_isnan_npm   s    zTestCMath.test_isnan_npmc                 C   s   |  tt d S re   )rc   isinf_usecaserL   rT   r   r   r   
test_isinf   s    zTestCMath.test_isinfc                 C   s   |  tt d S re   )rc   rx   rW   rX   r   r   r   test_isinf_npm   s    zTestCMath.test_isinf_npmc                 C   s   |  tt d S re   )rc   isfinite_usecaserL   rT   r   r   r   test_isfinite   s    zTestCMath.test_isfinitec                 C   s   |  tt d S re   )rc   r{   rW   rX   r   r   r   test_isfinite_npm   s    zTestCMath.test_isfinite_npmc                 C   s   | j ttdd d S N   )r0   )rd   exp_usecaserL   rX   r   r   r   test_exp   s    zTestCMath.test_expc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_exp_npm   s    zTestCMath.test_exp_npmc                 C   s   |  tt d S re   )rd   log_usecaserL   rX   r   r   r   test_log   s    zTestCMath.test_logc                 C   s   |  tt d S re   )rd   r   rW   rX   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*   r0   )	r^   r   r    r&   r   rP   r5   rH   Zlog_base_usecaser_   r   r   r   test_log_base   s    

zTestCMath.test_log_basec                 C   s   | j td d S rV   )r   rW   rX   r   r   r   test_log_base_npm   s    zTestCMath.test_log_base_npmc                 C   s   |  tt d S re   )rd   log10_usecaserL   rX   r   r   r   
test_log10   s    zTestCMath.test_log10c                 C   s   |  tt d S re   )rd   r   rW   rX   r   r   r   test_log10_npm   s    zTestCMath.test_log10_npmc                 C   s   |  tt d S re   )rd   sqrt_usecaserL   rX   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      s     z+TestCMath.test_sqrt_npm.<locals>.<listcomp>$   )   r)   )rd   r   rW   rangerB   r   rP   )r"   rF   r   r   r   test_sqrt_npm   s     zTestCMath.test_sqrt_npmc                 C   s   | j ttdd d S r~   )rd   acos_usecaserL   rX   r   r   r   	test_acos   s    zTestCMath.test_acosc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_acos_npm   s    zTestCMath.test_acos_npmc                 C   s   | j ttdd d S r~   )rd   asin_usecaserL   rX   r   r   r   	test_asin   s    zTestCMath.test_asinc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_asin_npm   s    zTestCMath.test_asin_npmc                 C   s   | j ttdd d S r~   )rd   atan_usecaserL   rX   r   r   r   	test_atan   s    zTestCMath.test_atanc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_atan_npm   s    zTestCMath.test_atan_npmc                 C   s   | j ttdd d S r~   )rd   cos_usecaserL   rX   r   r   r   test_cos   s    zTestCMath.test_cosc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_cos_npm  s    zTestCMath.test_cos_npmc                 C   s   | j ttdd d S NZeps)r1   )rd   sin_usecaserL   rX   r   r   r   test_sin  s    zTestCMath.test_sinc                 C   s   | j ttdd d S r   )rd   r   rW   rX   r   r   r   test_sin_npm
  s    zTestCMath.test_sin_npmc                 C   s   | j ttdd d S r~   rd   Ztan_usecaserL   rX   r   r   r   test_tan  s    zTestCMath.test_tanc                 C   s   | j ttdd d S r~   r   rX   r   r   r   test_tan_npm  s    zTestCMath.test_tan_npmc                 C   s   |  tt d S re   )rd   acosh_usecaserL   rX   r   r   r   
test_acosh  s    zTestCMath.test_acoshc                 C   s   |  tt d S re   )rd   r   rW   rX   r   r   r   test_acosh_npm  s    zTestCMath.test_acosh_npmc                 C   s   | j ttdd d S r~   )rd   asinh_usecaserL   rX   r   r   r   
test_asinh  s    zTestCMath.test_asinhc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_asinh_npm  s    zTestCMath.test_asinh_npmc                 C   s   | j ttdd d S r~   )rd   atanh_usecaserL   rX   r   r   r   
test_atanh!  s    zTestCMath.test_atanhc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_atanh_npm$  s    zTestCMath.test_atanh_npmc                 C   s   | j ttdd d S r~   )rd   cosh_usecaserL   rX   r   r   r   	test_cosh'  s    zTestCMath.test_coshc                 C   s   | j ttdd d S r~   )rd   r   rW   rX   r   r   r   test_cosh_npm*  s    zTestCMath.test_cosh_npmc                 C   s   | j ttdd d S r   )rd   sinh_usecaserL   rX   r   r   r   	test_sinh-  s    zTestCMath.test_sinhc                 C   s   | j ttdd d S r   )rd   r   rW   rX   r   r   r   test_sinh_npm0  s    zTestCMath.test_sinh_npmc                 C   s   | j ttdd d S r~   rd   Ztanh_usecaserL   rX   r   r   r   	test_tanh3  s    zTestCMath.test_tanhc                 C   s   | j ttdd d S r~   r   rX   r   r   r   test_tanh_npm6  s    zTestCMath.test_tanh_npm)r   NN)5rI   rJ   rK   __doc__rc   rd   rg   rh   rj   rk   rL   rs   rt   rv   rw   ry   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   rb      sf     
	
rb   __main__)Zcmathr   r$   r   Znumba.core.compilerr   r   r   Z
numba.corer   Znumba.tests.supportr   r   Zcomplex_usecasesZunittestrL   Zenable_pyobjectrW   objectr
   rM   rb   rI   mainr   r   r   r   <module>   s"   <1 <