o
    oh9                     @   s   d Z ddlmZ ddlmZ ddlmZ dd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4zC The module contains implemented functions for interval arithmetic.    reduce)interval)import_modulec                 C   st   t | ttfrtt| S t | tr8| jdk r-| jdkr-tdtt| jt| j| jdS tt| jt| jS t	)Nr   is_valid)

isinstanceintfloatr   absstartendmaxr   NotImplementedErrorx r   |/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/plotting/intervalmath/lib_interval.pyAbs   s   
"r   c                 C   Z   t d}t| ttfrt|| || S t| tr+t|| j|| j| jdS t	)z(evaluates the exponential of an intervalnumpyr   )
r   r   r	   r
   r   expr   r   r   r   r   npr   r   r   r         
 r   c                 C      t d}t| ttfr | dkrt|j |jddS t|| S t| tr^| js3t|j |j| jdS | jdkrBt|j |jddS | j	dkrQt|j |jddS t|| j	|| jS t
)z.evaluates the natural logarithm of an intervalr   r   Fr   N)r   r   r	   r
   r   inflogr   r   r   r   r   r   r   r   r   "   s   


r   c                 C   r   )z5evaluates the logarithm to the base 10 of an intervalr   r   Fr   N)r   r   r	   r
   r   r   log10r   r   r   r   r   r   r   r   r   8   s   


r   c                 C   sZ   t d}t| ttfrt|| S t| tr+|| j}|| j}t||| jdS t	)z(evaluates the tan inverse of an intervalr   r   )
r   r   r	   r
   r   arctanr   r   r   r   r   r   r   r   r   r   r   atanM      
r!   c                 C   s  t d}t| ttfrt|| S t| tr| js"tdd| jdS t| j|j	d \}}t| j
|j	d \}}t|| j|| j
}t|| j|| j
}|| dkr`tdd| jdS ||krlt||| jdS |d d |d d krzd}|d d |d d krd}t||S t)z!evaluates the sine of an intervalr      r          @      )r   r   r	   r
   r   sinr   divmodr   pir   minr   r   r   r   na__nbr   r   r   r   r   r(   [   s(   

r(   c                 C   s.  t d}t| ttfrt|| S t| tr|| jr#|| js+tdd| j	dS t
| j|jd \}}t
| j|jd \}}t|| j|| j}t|| j|| j}|| dkritdd| j	dS ||krut||| j	dS |d |d krd}|d d |d d krd}t||| j	dS t)z Evaluates the cos of an intervalr   r#   r$   r   r%   r&      )r   r   r	   r
   r   r(   isfiniter   r   r   r)   r*   r+   cosr   r   r,   r   r   r   r2   x   s(   
r2   c                 C   s   t | t|  S )z Evaluates the tan of an interval)r(   r2   r   r   r   r   tan   s   r3   c                 C   s   t d}t| ttfr | dkrt|| S t|j |jddS t| trS| jdk r4t|j |jddS | jdk rCt|j |jddS t|| j|| j| j	dS t
)z(Evaluates the square root of an intervalr   r   Fr   N)r   r   r	   r
   r   sqrtr   r   r   r   r   r   r   r   r   r4      s   


r4   c                  G      t d}tdd | D stS dd | D }t|dkr9tdd | D r/t|j |jdd	S t|j |jd
d	S dd |D }dd |D }tt|t|S )z,Evaluates the minimum of a list of intervalsr   c                 s        | ]}t |tttfV  qd S Nr   r	   r
   r   .0argr   r   r   	<genexpr>       zimin.<locals>.<genexpr>c                 S   $   g | ]}t |ttfs|jr|qS r   r   r	   r
   r   r:   ar   r   r   
<listcomp>       
zimin.<locals>.<listcomp>r   c                 s       | ]}|j d u V  qdS FNr   r@   r   r   r   r<          Fr   Nc                 S   $   g | ]}t |ttfr|n|jqS r   r   r	   r
   r   r@   r   r   r   rB          c                 S   rG   r   r   r	   r
   r   r@   r   r   r   rB      rI   )r   allr   lenr   r   r+   argsr   new_argsstart_array	end_arrayr   r   r   imin   s   rR   c                  G   r5   )z,Evaluates the maximum of a list of intervalsr   c                 s   r6   r7   r8   r9   r   r   r   r<      r=   zimax.<locals>.<genexpr>c                 S   r>   r   r?   r@   r   r   r   rB      rC   zimax.<locals>.<listcomp>r   c                 s   rD   rE   r   r@   r   r   r   r<      rF   Fr   Nc                 S   rG   r   rH   r@   r   r   r   rB      rI   c                 S   rG   r   rJ   r@   r   r   r   rB      rI   )r   rK   r   rL   r   r   r   rM   r   r   r   imax   s   rS   c                 C   r   )z,Evaluates the hyperbolic sine of an intervalr   r   )
r   r   r	   r
   r   sinhr   r   r   r   r   r   r   r   rT      r   rT   c                 C   s   t d}t| ttfrt|| || S t| trN| jdk r:| jdkr:t|| j|| j}td|| j	dS || j}|| j}t||| j	dS t
)z+Evaluates the hyperbolic cos of an intervalr   r   r$   r   )r   r   r	   r
   r   coshr   r   r   r   r   )r   r   r   r   r   r   r   rU      s   
rU   c                 C   r   )z+Evaluates the hyperbolic tan of an intervalr   r   )
r   r   r	   r
   r   tanhr   r   r   r   r   r   r   r   rV      r   rV   c                 C      t d}t| ttfr&t| dkrt|j |jddS t|| || S t| trl| jdu s:| j	dks:| j
dk rDt|j |jddS | j	dk sN| j
dkrXt|j |jddS || j	}|| j
}t||| jdS dS )z)Evaluates the inverse sine of an intervalr   r$   Fr   r#   N)r   r   r	   r
   r   r   r   arcsinr   r   r   r    r   r   r   asin  s   
rY   c                 C   rW   )z(Evaluates the inverse cos of an intervalr   r$   Fr   r#   N)r   r   r	   r
   r   r   r   arccosr   r   r   r    r   r   r   acos  s   
r[   c                 C      t d}t| ttfrt|| S t| trE| jdu r&t|j |jddS || j}|| j	}||kr>t||| jdS t||ddS t
S )z$Evaluates the ceiling of an intervalr   Fr   N)r   r   r	   r
   r   ceilr   r   r   r   r   r    r   r   r   r]   4     

r]   c                 C   r\   )z"Evaluates the floor of an intervalr   Fr   N)r   r   r	   r
   r   floorr   r   r   r   r   r    r   r   r   r_   I  r^   r_   c                 C   s   t d}t| ttfr | dk rt|j |jddS t|| S t| trW| jdk r4t|j |jddS | jdk rCt|j |jddS || j}|| j}t||| j	dS t
S )z6Evaluates the inverse hyperbolic cosine of an intervalr   r$   Fr   N)r   r   r	   r
   r   r   arccoshr   r   r   r   r    r   r   r   acosh^  s   


ra   c                 C   sZ   t d}t| ttfrt|| S t| tr+|| j}|| j}t||| jdS t	S )z4Evaluates the inverse hyperbolic sine of an intervalr   r   )
r   r   r	   r
   r   arcsinhr   r   r   r   r    r   r   r   asinhw  r"   rc   c                 C   s   t d}t| ttfr"t| dkrt|j |jddS t|| S t| trh| jdu s6| j	dks6| j
dkr@t|j |jddS | j	dksJ| j
dkrTt|j |jddS || j	}|| j
}t||| jdS tS )z7Evaluates the inverse hyperbolic tangent of an intervalr   r$   Fr   r#   N)r   r   r	   r
   r   r   r   arctanhr   r   r   r   r    r   r   r   atanh  s   
re   c                  G      dd }t || S )zZDefines the three valued ``And`` behaviour for a 2-tuple of
     three valued logic valuesc                 S      | d du s|d du rd}n| d d u s|d d u rd }nd}| d du s,|d du r2d}||fS | d d u s>|d d u rDd }||fS d}||fS )Nr   FTr$   r   cmp_intervalacmp_intervalbfirstsecondr   r   r   
reduce_and  s   zAnd.<locals>.reduce_andr   )rN   rm   r   r   r   And  s   
rn   c                  G   rf   )zYDefines the three valued ``Or`` behaviour for a 2-tuple of
     three valued logic valuesc                 S   rg   )Nr   TFr$   r   rh   r   r   r   	reduce_or  s   zOr.<locals>.reduce_orr   )rN   ro   r   r   r   Or  s   
rp   N)__doc__	functoolsr   sympy.plotting.intervalmathr   sympy.externalr   r   r   r   r   r!   r(   r2   r3   r4   rR   rS   rT   rU   rV   rY   r[   r]   r_   ra   rc   re   rn   rp   r   r   r   r   <module>   s6    