U
    í¾|eÇD  ã                   @   s„  d Z ddlZddlZddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZmZ ddlmZ edƒZejZd	d
„ Zdd„ Zdd„ Zeejejƒdd„ ƒZeejejƒdd„ ƒZeejejƒdd„ ƒZeejƒdd„ ƒZdd„ ZedƒZ edƒZ!eej"ejƒedd„ ƒƒZ#eej$ejƒedd„ ƒƒZ%eej$ejejƒdd „ ƒZ&eej'ƒd!d"„ ƒZ(eej)ƒd#d$„ ƒZ*eej+ƒd%d&„ ƒZ,eej-ejƒd'd(„ ƒZ.eej/ejƒd)d*„ ƒZ0eej1ƒd+d,„ ƒZ2eej3ejƒd-d.„ ƒZ4eej5ƒd/d0„ ƒZ6eej7ejƒd1d2„ ƒZ8eej9ƒd3d4„ ƒZ:eej;ejƒd5d6„ ƒZ<eej=ƒd7d8„ ƒZ>eej?ejƒd9d:„ ƒZ@eejAejƒd;d<„ ƒZBeejCejƒd=d>„ ƒZDeejEejƒd?d@„ ƒZFdS )Az'
Implement the cmath module functions.
é    N)ÚRegistryÚimpl_ret_untracked)ÚtypesÚcgutils)Ú	signature)ÚbuiltinsÚmathimpl)ÚoverloadÚ	cmathimplc                 C   s   |   d|j|j¡S )NÚuno)Úfcmp_unorderedÚrealÚimag©ÚbuilderÚz© r   úT/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/cpython/cmathimpl.pyÚis_nan   s    r   c                 C   s    |   t | |j¡t | |j¡¡S ©N)Úor_r   Úis_infr   r   r   r   r   r   r      s    ÿr   c                 C   s    |   t | |j¡t | |j¡¡S r   )Úand_r   Ú	is_finiter   r   r   r   r   r   r      s    ÿr   c                 C   s8   |j \}|\}| j|||d�}t||ƒ}t| ||j|ƒS ©N©Úvalue)ÚargsÚmake_complexr   r   Úreturn_type©Úcontextr   Úsigr   Útypr   r   Úresr   r   r   Úisnan_float_impl   s
    
r%   c                 C   s8   |j \}|\}| j|||d�}t||ƒ}t| ||j|ƒS r   )r   r   r   r   r   r    r   r   r   Úisinf_float_impl'   s
    
r&   c                 C   s8   |j \}|\}| j|||d�}t||ƒ}t| ||j|ƒS r   )r   r   r   r   r   r    r   r   r   Úisfinite_float_impl0   s
    
r'   c                 C   s&   t dd„ | |fD ƒƒr"dd„ }|S d S )Nc                 S   s   g | ]}t |tjƒ‘qS r   )Ú
isinstancer   ÚFloat)Ú.0r#   r   r   r   Ú
<listcomp>;   s     z#impl_cmath_rect.<locals>.<listcomp>c                 S   s�   t  |¡s*| st| ƒS t  | ¡r*t| |ƒS t  |¡}t  |¡}|dkrZt  | ¡rZ||  }n|| 9 }|dkr~t  | ¡r~||  }n|| 9 }t||ƒS )Nç        )ÚmathÚisfiniteÚabsÚisinfÚcomplexÚcosÚsin)ÚrÚphir   r   r   r   r   Úimpl<   s    






zimpl_cmath_rect.<locals>.impl)Úall)r4   r5   r6   r   r   r   Úimpl_cmath_rect9   s    r8   c                    s   ‡ fdd„}|S )Nc              	      sŒ   |j \}|\}| j|||d�}|j}|j}t ||¡}	t ||¡}
t|jf|jfd t	j
fd  žŽ }|  |ˆ ||||	|
f¡}t| |||ƒS )Nr   é   )r   r   r   r   r   r   r   r   Úunderlying_floatr   ÚbooleanÚcompile_internalr   )r!   r   r"   r   r#   r   r   ÚxÚyÚx_is_finiteÚy_is_finiteÚ	inner_sigr$   ©Ú
inner_funcr   r   ÚwrapperU   s    ÿ

ÿz(intrinsic_complex_unary.<locals>.wrapperr   )rC   rD   r   rB   r   Úintrinsic_complex_unaryT   s    rE   ÚnanÚinfc           	      C   s  |rD|r8t  |¡}t  |¡}t  | ¡}t|| || ƒS tttƒS n¼t  | ¡rh|r\t| | ƒS t| |ƒS n˜| dkr¾|r²t  |¡}t  |¡}|dkr˜|| 9 }|dkr¨|| 9 }t||ƒS t| tƒS nB|ròt  | ¡}t  |¡}t  |¡}t|| || ƒS d}t||ƒS dS )zcmath.exp(x + y j)r,   r   N)r-   r2   r3   Úexpr1   ÚNANÚisnan)	r=   r>   r?   r@   ÚcÚsr4   r   r   r   r   r   Úexp_implj   s8    










rM   c                 C   s(   t  t  | |¡¡}t  || ¡}t||ƒS )zcmath.log(x + y j))r-   ÚlogÚhypotÚatan2r1   )r=   r>   r?   r@   ÚaÚbr   r   r   Úlog_impl”   s    rS   c                 C   s.   |\}}dd„ }|   ||||¡}t| |||ƒS )zcmath.log(z, base)c                 S   s   t  | ¡t  |¡ S r   )ÚcmathrN   )r   Úbaser   r   r   Úlog_base¢   s    zlog_base_impl.<locals>.log_base©r<   r   )r!   r   r"   r   r   rU   rV   r$   r   r   r   Úlog_base_impl�   s    rX   c                    s$   t | tjƒsd S d‰ ‡ fdd„}|S )NgUµ»±k@c                    s    t  | ¡} t| jˆ  | jˆ  ƒS )zcmath.log10(z))rT   rN   r1   r   r   ©r   ©ZLN_10r   r   Ú
log10_impl°   s    
z$impl_cmath_log10.<locals>.log10_impl©r(   r   ÚComplex)r   r[   r   rZ   r   Úimpl_cmath_log10©   s
    r^   c                 C   s   t | tjƒsdS dd„ }|S )zcmath.phase(x + y j)Nc                 S   s   t  | j| j¡S r   )r-   rP   r   r   )r=   r   r   r   r6   Á   s    zphase_impl.<locals>.implr\   ©r=   r6   r   r   r   Ú
phase_implº   s    r`   c                 C   s   t | tjƒsd S dd„ }|S )Nc                 S   s&   | j | j }}t ||¡t ||¡fS r   )r   r   r-   rO   rP   )r=   r4   Úir   r   r   r6   Ë   s    zpolar_impl.<locals>.implr\   r_   r   r   r   Ú
polar_implÆ   s    rb   c           
         s`   d}d| }|j d j}|jdkr(tjntj}|| ‰ ‡ fdd„}|  ||||¡}	t| |||	ƒS )NgÍ;fž ö?ç      ð?r   é@   c                    sZ  | j }| j}|dkr*|dkr*tt|ƒ|ƒS t |¡rBtt|ƒ|ƒS t |¡rVt||ƒS t |¡r˜|dk r‚tt|| ƒt ||¡ƒS t|t || |¡ƒS t|ƒˆ ks°t|ƒˆ krÆ|d9 }|d9 }d}nd}|dk�r t |t 	||¡ d ¡}|}|d|  }n8t | t 	||¡ d ¡}t|ƒd|  }t ||¡}|�rLt|d |ƒS t||ƒS dS )	zcmath.sqrt(z)r,   ç      Ð?TFr   ç      à?r9   N)
r   r   r1   r/   r-   r0   rJ   ÚcopysignÚsqrtrO   )r   rQ   rR   ÚscaleÚtr   r   ©ÚTHRESr   r   Ú	sqrt_implà   s6    




zsqrt_impl.<locals>.sqrt_impl)r   r:   Úbitwidthr   ZDBL_MAXÚFLT_MAXr<   r   )
r!   r   r"   r   ZSQRT2ZONE_PLUS_SQRT2Z	theargfltÚMAXrm   r$   r   rk   r   rm   Ñ   s    *rm   c                 C   s&   dd„ }|   ||||¡}t| |||ƒS )Nc                 S   s   t  t| j | jƒ¡S )zcmath.cos(z) = cmath.cosh(z j))rT   Úcoshr1   r   r   rY   r   r   r   Úcos_impl  s    zcos_impl.<locals>.cos_implrW   )r!   r   r"   r   rr   r$   r   r   r   rr     s    rr   c                 C   s   t | tjƒsd S dd„ }|S )Nc                 S   sª   | j }| j}t |¡r€t |¡r.t|ƒ}|}n:|dkrDt|ƒ}|}n$t |t |¡¡}t |t |¡¡}|dk rv| }t	||ƒS t	t |¡t 
|¡ t |¡t |¡ ƒS )zcmath.cosh(z)r,   )r   r   r-   r0   rJ   r/   rg   r2   r3   r1   rq   Úsinh©r   r=   r>   r   r   r   r   r   Ú	cosh_impl  s"    


ÿz"impl_cmath_cosh.<locals>.cosh_implr\   )r   ru   r   r   r   Úimpl_cmath_cosh  s    rv   c                 C   s&   dd„ }|   ||||¡}t| |||ƒS )Nc                 S   s&   t  t| j | jƒ¡}t|j|j ƒS )z#cmath.sin(z) = -j * cmath.sinh(z j))rT   rs   r1   r   r   ©r   r4   r   r   r   Úsin_impl7  s    zsin_impl.<locals>.sin_implrW   )r!   r   r"   r   rx   r$   r   r   r   rx   5  s    rx   c                 C   s   t | tjƒsd S dd„ }|S )Nc                 S   s–   | j }| j}t |¡rlt |¡r*|}|}n8t |¡}t |¡}|dkrN||9 }|dkrb|t|ƒ9 }t||ƒS tt |¡t 	|¡ t |¡t 
|¡ ƒS )zcmath.sinh(z)r,   )r   r   r-   r0   rJ   r2   r3   r/   r1   rs   rq   rt   r   r   r   Ú	sinh_implD  s     




ÿz"impl_cmath_sinh.<locals>.sinh_implr\   )r   ry   r   r   r   Úimpl_cmath_sinh?  s    rz   c                 C   s&   dd„ }|   ||||¡}t| |||ƒS )Nc                 S   s&   t  t| j | jƒ¡}t|j|j ƒS )z#cmath.tan(z) = -j * cmath.tanh(z j))rT   Útanhr1   r   r   rw   r   r   r   Útan_impl\  s    ztan_impl.<locals>.tan_implrW   )r!   r   r"   r   r|   r$   r   r   r   r|   Z  s    r|   c                 C   s   t | tjƒsd S dd„ }|S )Nc           
      S   s®   | j }| j}t |¡rRt d|¡}t |¡r2d}nt dt d| ¡¡}t||ƒS t |¡}t |¡}dt 	|¡ }|| }d||  }	t|d||   |	 ||	 | | ƒS )zcmath.tanh(z)rc   r,   ç       @)
r   r   r-   r0   rg   r3   r1   r{   Útanrq   )
r   r=   r>   r   r   ÚtxÚtyÚcxZtxtyÚdenomr   r   r   Ú	tanh_implj  s"    




þz"impl_cmath_tanh.<locals>.tanh_implr\   )r   rƒ   r   r   r   Úimpl_cmath_tanhe  s    r„   c                    s@   t  d¡‰ tjd ‰‡ ‡fdd„}|  ||||¡}t| |||ƒS )Né   c              	      sÚ   t | jƒˆkst | jƒˆkrht t | jƒ| j¡}t t t | jd | jd ¡¡ˆ  | j ¡}t||ƒS t	 
td| j | j ƒ¡}t	 
td| j | jƒ¡}dt |j|j¡ }t |j|j |j|j  ¡}t||ƒS dS )zcmath.acos(z)rf   rc   r}   N)r/   r   r   r-   rP   rg   rN   rO   r1   rT   rh   Úasinh©r   r   r   Ús1Ús2©ÚLN_4rl   r   r   Ú	acos_implˆ  s     þ
zacos_impl.<locals>.acos_impl©r-   rN   r   ro   r<   r   )r!   r   r"   r   rŒ   r$   r   rŠ   r   rŒ   ƒ  s
    

rŒ   c                    s6   t | tjƒsd S t d¡‰ tjd ‰‡ ‡fdd„}|S )Nr…   c                    sÈ   t | jƒˆkst | jƒˆkrXt t | jd | jd ¡¡ˆ  }t | j| j¡}t||ƒS t 	t| jd | jƒ¡}t 	t| jd | jƒ¡}t 
|j|j |j|j  ¡}dt |j|j¡ }t||ƒS dS )zcmath.acosh(z)rf   rc   r}   N)r/   r   r   r-   rN   rO   rP   r1   rT   rh   r†   r‡   rŠ   r   r   Ú
acosh_impl¥  s    "
z$impl_cmath_acosh.<locals>.acosh_impl)r(   r   r]   r-   rN   r   ro   )r   rŽ   r   rŠ   r   Úimpl_cmath_acosh�  s    

r�   c                    s@   t  d¡‰ tjd ‰‡ ‡fdd„}|  ||||¡}t| |||ƒS )Nr…   c              	      sæ   t | jƒˆkst | jƒˆkrft t t | jd | jd ¡¡ˆ  | j¡}t | jt | jƒ¡}t||ƒS t	 
td| j | j ƒ¡}t	 
td| j | jƒ¡}t |j|j |j|j  ¡}t | j|j|j |j|j  ¡}t||ƒS dS )zcmath.asinh(z)rf   rc   N)r/   r   r   r-   rg   rN   rO   rP   r1   rT   rh   r†   r‡   rŠ   r   r   Ú
asinh_impl¿  s     þ
"zasinh_impl.<locals>.asinh_implr�   )r!   r   r"   r   r�   r$   r   rŠ   r   r�   º  s
    

r�   c                 C   s&   dd„ }|   ||||¡}t| |||ƒS )Nc                 S   s&   t  t| j | jƒ¡}t|j|j ƒS )z%cmath.asin(z) = -j * cmath.asinh(z j))rT   r†   r1   r   r   rw   r   r   r   Ú	asin_implÔ  s    zasin_impl.<locals>.asin_implrW   )r!   r   r"   r   r‘   r$   r   r   r   r‘   Ò  s    r‘   c                 C   s&   dd„ }|   ||||¡}t| |||ƒS )Nc                 S   sP   t  t| j | jƒ¡}t | j¡r<t | j¡r<t|j|jƒS t|j|j ƒS dS )z%cmath.atan(z) = -j * cmath.atanh(z j)N)rT   Úatanhr1   r   r   r-   r0   rJ   rw   r   r   r   Ú	atan_implÞ  s    zatan_impl.<locals>.atan_implrW   )r!   r   r"   r   r“   r$   r   r   r   r“   Ü  s    	r“   c                    s^   t  d¡}t  tjd ¡‰t  tj¡‰t jd ‰ ‡ ‡‡fdd„}|  ||||¡}t| |||ƒS )Nr…   r9   c              	      s¦  | j dk rd}|  } nd}t| jƒ}t | j ¡sB| j ˆksB|ˆkr®t | j¡r^t d| j ¡}n<t | j ¡rpd}n*t | j d | jd ¡}| j d | | }t ˆ | j ¡ }nÄ| j dk�r|ˆk �r|dkrØt}| j}n@t 	t 
|¡t 
t |d¡¡ ¡ }t t d| ¡d | j¡}nX|| }d	| j  }t d| j  || |  ¡d
 }t d| j |d	| j   | ¡ d }t | j¡�r„t}|�r˜t| | ƒS t||ƒS dS )zcmath.atanh(z)r,   TFrf   g      @rc   r}   r9   é   re   g       ÀN)r   r/   r   r-   rJ   r0   rg   rO   ÚINFrN   rh   rP   Úlog1prI   r1   )r   ÚnegateÚayr   Úhr   ZsqayZzr1©ZPI_12ZTHRES_LARGEZTHRES_SMALLr   r   Ú
atanh_implñ  sD    

ÿ
 ÿÿzatanh_impl.<locals>.atanh_impl)	r-   rN   rh   r   ro   ZFLT_MINÚpir<   r   )r!   r   r"   r   r‹   r›   r$   r   rš   r   r›   ê  s    

,r›   )GÚ__doc__rT   r-   Únumba.core.imputilsr   r   Ú
numba.corer   r   Únumba.core.typingr   Únumba.cpythonr   r   Únumba.core.extendingr	   ÚregistryÚlowerr   r   r   rJ   r]   r%   r0   r&   r.   r'   Úrectr8   rE   ÚfloatrI   r•   rH   rM   rN   rS   rX   Úlog10r^   Úphaser`   Úpolarrb   rh   rm   r2   rr   rq   rv   r3   rx   rs   rz   r~   r|   r{   r„   ÚacosrŒ   Úacoshr�   r†   r�   Úasinr‘   Úatanr“   r’   r›   r   r   r   r   Ú<module>   s~   



(





<


	







	
