U
    9%eD                     @   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)overloadZ	cmathimplc                 C   s   |  d|j|jS )NZuno)Zfcmp_unorderedrealimagbuilderz r   V/var/www/html/Darija-Ai-API/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)r1   r2   r3   r   r   r   impl_cmath_rect9   s    r5   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_finiteZ	inner_sigr!   
inner_funcr   r   wrapperU   s    

z(intrinsic_complex_unary.<locals>.wrapperr   )r?   r@   r   r>   r   intrinsic_complex_unaryT   s    rA   naninfc           	      C   s  |rD|r8t |}t |}t | }t|| || S tttS nt | rh|r\t| | S t| |S n| dkr|rt |}t |}|dkr|| 9 }|dkr|| 9 }t||S t| tS nB|rt | }t |}t |}t|| || S d}t||S dS )zcmath.exp(x + y j)r)   r   N)r*   r/   r0   expr.   NANisnan)	r:   r;   r<   r=   csr1   r
   r   r   r   r   exp_implj   s8    










rI   c                 C   s(   t t | |}t || }t||S )zcmath.log(x + y j))r*   loghypotatan2r.   )r:   r;   r<   r=   abr   r   r   log_impl   s    rO   c                 C   s.   |\}}dd }|  ||||}t| |||S )zcmath.log(z, base)c                 S   s   t | t | S r   )cmathrJ   )r   baser   r   r   log_base   s    zlog_base_impl.<locals>.log_baser9   r   )r   r   r   r   r   rQ   rR   r!   r   r   r   log_base_impl   s    rT   c                    s$   t | tjsd S d  fdd}|S )NgUk@c                    s    t | } t| j  | j  S )zcmath.log10(z))rP   rJ   r.   r
   r   r   ZLN_10r   r   
log10_impl   s    
z$impl_cmath_log10.<locals>.log10_implr%   r   Complex)r   rW   r   rV   r   impl_cmath_log10   s
    rZ   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*   rL   r   r
   )r:   r   r   r   r3      s    zphase_impl.<locals>.implrX   r:   r3   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*   rK   rL   )r:   r1   ir   r   r   r3      s    zpolar_impl.<locals>.implrX   r[   r   r   r   
polar_impl   s    r^   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 rtt|| t||S t|t|| |S t| kst| 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         ?r6   N)
r
   r   r.   r,   r*   r-   rF   copysignsqrtrK   )r   rM   rN   scaletr
   r   THRESr   r   	sqrt_impl   s6    




zsqrt_impl.<locals>.sqrt_impl)r   r7   Zbitwidthr   ZDBL_MAXFLT_MAXr9   r   )
r   r   r   r   ZSQRT2ZONE_PLUS_SQRT2Z	theargfltMAXri   r!   r   rg   r   ri      s    *ri   c                 C   s&   dd }|  ||||}t| |||S )Nc                 S   s   t t| j | jS )zcmath.cos(z) = cmath.cosh(z j))rP   coshr.   r   r
   rU   r   r   r   cos_impl  s    zcos_impl.<locals>.cos_implrS   )r   r   r   r   rm   r!   r   r   r   rm     s    rm   c                 C   s   t | tjsd S dd }|S )Nc                 S   s   | j }| j}t|rt|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*   r-   rF   r,   rc   r/   r0   r.   rl   sinhr   r:   r;   r
   r   r   r   r   	cosh_impl  s"    


z"impl_cmath_cosh.<locals>.cosh_implrX   )r   rp   r   r   r   impl_cmath_cosh  s    rq   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))rP   rn   r.   r   r
   r   r1   r   r   r   sin_impl7  s    zsin_impl.<locals>.sin_implrS   )r   r   r   r   rs   r!   r   r   r   rs   5  s    rs   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*   r-   rF   r/   r0   r,   r.   rn   rl   ro   r   r   r   	sinh_implD  s     




z"impl_cmath_sinh.<locals>.sinh_implrX   )r   rt   r   r   r   impl_cmath_sinh?  s    ru   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))rP   tanhr.   r   r
   rr   r   r   r   tan_impl\  s    ztan_impl.<locals>.tan_implrS   )r   r   r   r   rw   r!   r   r   r   rw   Z  s    rw   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)r_   r)          @)
r
   r   r*   r-   rc   r0   r.   rv   tanrl   )
r   r:   r;   r
   r   ZtxtyZcxZtxtydenomr   r   r   	tanh_implj  s"    




z"impl_cmath_tanh.<locals>.tanh_implrX   )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)rb   r_   rx   N)r,   r
   r   r*   rL   rc   rJ   rK   r.   rP   rd   asinhr   r
   r   s1s2LN_4rh   r   r   	acos_impl  s     
zacos_impl.<locals>.acos_implr*   rJ   r   rj   r9   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)rb   r_   rx   N)r,   r
   r   r*   rJ   rK   rL   r.   rP   rd   r   r   r   r   r   
acosh_impl  s    "
z$impl_cmath_acosh.<locals>.acosh_impl)r%   r   rY   r*   rJ   r   rj   )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)rb   r_   N)r,   r
   r   r*   rc   rJ   rK   rL   r.   rP   rd   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))rP   r   r.   r   r
   rr   r   r   r   	asin_impl  s    zasin_impl.<locals>.asin_implrS   )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)rP   atanhr.   r   r
   r*   r-   rF   rr   r   r   r   	atan_impl  s    zatan_impl.<locals>.atan_implrS   )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~   r6   c              	      s  | j dk rd}|  } nd}t| j}t| j sB| j ksB|krt| 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rt}| 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rt}|rt| | S t||S dS )zcmath.atanh(z)r)   TFrb   g      @r_   rx   r6      ra   g       N)r
   r,   r   r*   rF   r-   rc   rK   INFrJ   rd   rL   log1prE   r.   )r   negateZayr
   hr   ZsqayZzr1ZPI_12ZTHRES_LARGEZTHRES_SMALLr   r   
atanh_impl  sD    


 zatanh_impl.<locals>.atanh_impl)	r*   rJ   rd   r   rj   ZFLT_MINpir9   r   )r   r   r   r   r   r   r!   r   r   r   r     s    

,r   )G__doc__rP   r*   Znumba.core.imputilsr   r   Z
numba.corer   r   Znumba.core.typingr   Znumba.cpythonr   r   Znumba.core.extendingr	   registrylowerr   r   r   rF   rY   r"   r-   r#   r+   r$   rectr5   rA   floatrE   r   rD   rI   rJ   rO   rT   log10rZ   Zphaser\   Zpolarr^   rd   ri   r/   rm   rl   rq   r0   rs   rn   ru   ry   rw   rv   r}   acosr   acoshr   r   r   asinr   atanr   r   r   r   r   r   r   <module>   s~   



(





<


	







	
