
    sg9                         d Z ddlmZ ddlmZ ddlmZ d Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)zC The module contains implemented functions for interval arithmetic.    reduce)interval)import_modulec           	         t        | t        t        f      rt        t	        |             S t        | t              r| j
                  dk  rW| j                  dkD  rHt        dt        t	        | j
                        t	        | j                              | j                        S t        t	        | j
                        t	        | j                              S t        )Nr   is_valid)

isinstanceintfloatr   absstartendmaxr	   NotImplementedErrorxs    [/var/www/html/venv/lib/python3.12/site-packages/sympy/plotting/intervalmath/lib_interval.pyAbsr      s    !c5\"A	Ax	 77Q;15519As3qww<QUU<qzzRRCL#aee*55!!    c                 X   t        d      }t        | t        t        f      r*t	        |j                  |       |j                  |             S t        | t              rJt	        |j                  | j                        |j                  | j                        | j                        S t        )z(evaluates the exponential of an intervalnumpyr   )
r   r
   r   r   r   expr   r   r	   r   r   nps     r   r   r      sr    	w	B!c5\"q	266!9--	Ax	 qwwLL!!r   c                    t        d      }t        | t        t        f      rB| dk  r#t	        |j
                   |j
                  d      S t	        |j                  |             S t        | t              r| j                  s-t	        |j
                   |j
                  | j                        S | j                  dk  r#t	        |j
                   |j
                  d      S | j                  dk  r#t	        |j
                   |j
                  d      S t	        |j                  | j                        |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   s     r   r   r   "   s    	w	B!c5\"6RVVGRVVe<<BFF1I&&	Ax	 zzRVVGRVVajjAAUUaZRVVGRVVe<<WW\RVVGRVVd;;qww77!!r   c                    t        d      }t        | t        t        f      rB| dk  r#t	        |j
                   |j
                  d      S t	        |j                  |             S t        | t              r| j                  s-t	        |j
                   |j
                  | j                        S | j                  dk  r#t	        |j
                   |j
                  d      S | j                  dk  r#t	        |j
                   |j
                  d      S t	        |j                  | j                        |j                  | j                              S t        )z5evaluates the logarithm to the base 10 of an intervalr   r   Fr   N)r   r
   r   r   r   r   log10r	   r   r   r   r   s     r   r    r    8   s    	w	B!c5\"6RVVGRVVe<<BHHQK((	Ax	 zzRVVGRVVajjAAUUaZRVVGRVVe<<WW\RVVGRVVd;;)288AEE?;;!!r   c                 @   t        d      }t        | t        t        f      rt	        |j                  |             S t        | t              rN|j                  | j                        }|j                  | j                        }t	        ||| j                        S t        )z(evaluates the tan inverse of an intervalr   r   )
r   r
   r   r   r   arctanr   r   r	   r   r   r   r   r   s       r   atanr$   M   st    	w	B!c5\"		!%%	Ax	 		!''"iisQZZ88!!r   c                 \   t        d      }t        | t        t        f      rt	        |j                  |             S t        | t              r[| j                  st	        dd| j                        S t        | j                  |j                  dz        \  }}t        | j                  |j                  dz        \  }}t        |j                  | j                        |j                  | j                              }t        |j                  | j                        |j                  | j                              }||z
  dkD  rt	        dd| j                        S ||k(  rt	        ||| j                        S |dz
  dz  |dz
  dz  k7  rd}|dz
  dz  |dz
  dz  k7  rd}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   s          r   r+   r+   [   sV   	w	B!c5\"q	""	Ax	 zzBAJJ77-Bruus{+BBFF177ORVVAEE]3"&&/266!%%=17Q;BAJJ772XE3<<Q1}aA-Q1}aA-E3''!!r   c                    t        d      }t        | t        t        f      rt	        |j                  |             S t        | t              r|j                  | j                        r|j                  | j                        st	        dd| j                        S t        | j                  |j                  dz        \  }}t        | j                  |j                  dz        \  }}t        |j                  | j                        |j                  | j                              }t        |j                  | j                        |j                  | j                              }||z
  dkD  rt	        dd| j                        S ||k(  rt	        ||| j                        S |dz  |dz  k7  rd}|dz
  dz  |dz
  dz  k7  rd}t	        ||| j                        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/   s          r   r6   r6   x   sl   	w	B!c5\"q	""	Ax	 AGG$QUU);BAJJ77-Bruus{+BBFF177ORVVAEE]3"&&/266!%%=17Q;BAJJ772XE3<<qyRAI%Q1}aA-E3<<!!r   c                 0    t        |       t        |       z  S )z Evaluates the tan of an interval)r+   r6   r   s    r   tanr8      s    q6CF?r   c                 P   t        d      }t        | t        t        f      rB| dkD  rt	        |j                  |             S t	        |j                   |j                  d      S t        | t              r| j                  dk  r#t	        |j                   |j                  d      S | j                  dk  r#t	        |j                   |j                  d      S t	        |j                  | j                        |j                  | j                        | j                        S t        )z(Evaluates the square root of an intervalr   r   Fr   N)r   r
   r   r   r   sqrtr   r   r   r	   r   r   s     r   r:   r:      s    	w	B!c5\"q5BGGAJ''RVVGRVVe<<	Ax	 5519RVVGRVVe<<WWq[RVVGRVVd;;BGGAGG,bggaeenZZ) ) "!r   c                     t        d      }t        d | D              st        S | D cg c]&  }t        |t        t
        f      s|j                  r|( }}t        |      dk(  rXt        d | D              r#t        |j                   |j                  d      S t        |j                   |j                  d      S |D cg c]&  }t        |t        t
        f      r|n|j                  ( }}|D cg c]&  }t        |t        t
        f      r|n|j                  ( }}t        t        |      t        |            S c c}w c c}w c c}w )z,Evaluates the minimum of a list of intervalsr   c              3   R   K   | ]  }t        |t        t        t        f       ! y wNr
   r   r   r   .0args     r   	<genexpr>zimin.<locals>.<genexpr>        G3z#UH56G   %'r   c              3   8   K   | ]  }|j                   d u   ywFNr   r@   as     r   rB   zimin.<locals>.<genexpr>        511::&5   Fr   N)r   allr   r
   r   r   r	   lenr   r   r   r   r.   argsr   rH   new_argsstart_array	end_arrays         r   iminrR      s)   	w	BG$GG""# #!z!c5\'Bzz  # #x=A555%@@$?? (* 'q3,7qQWWD * * '( %Qe5Q155@ (	 (K(#i.99#*(   +D;?+E 0+Ec                     t        d      }t        d | D              st        S | D cg c]&  }t        |t        t
        f      s|j                  r|( }}t        |      dk(  rXt        d | D              r#t        |j                   |j                  d      S t        |j                   |j                  d      S |D cg c]&  }t        |t        t
        f      r|n|j                  ( }}|D cg c]&  }t        |t        t
        f      r|n|j                  ( }}t        t        |      t        |            S c c}w c c}w c c}w )z,Evaluates the maximum of a list of intervalsr   c              3   R   K   | ]  }t        |t        t        t        f       ! y wr=   r>   r?   s     r   rB   zimax.<locals>.<genexpr>   rC   rD   r   c              3   8   K   | ]  }|j                   d u   ywrF   r   rG   s     r   rB   zimax.<locals>.<genexpr>   rI   rJ   Fr   N)r   rK   r   r
   r   r   r	   rL   r   r   r   r   r   rM   s         r   imaxrW      s+   	w	BG$GG""# #!z!c5\'Bzz  # #x=A555%@@$?? (* 'q3,7qQWWD * * '( %Qe5Q155@ (	 ( K(#i.99#*(rS   c                 X   t        d      }t        | t        t        f      r*t	        |j                  |       |j                  |             S t        | t              rJt	        |j                  | j                        |j                  | j                        | j                        S t        )z,Evaluates the hyperbolic sine of an intervalr   r   )
r   r
   r   r   r   sinhr   r   r	   r   r   s     r   rY   rY      s    	w	B!c5\"
BGGAJ//	Ax	 ("''!%%.1::NN!!r   c                 H   t        d      }t        | t        t        f      r*t	        |j                  |       |j                  |             S t        | t              r| j                  dk  re| j                  dkD  rVt        |j                  | j                        |j                  | j                              }t	        d|| j                        S |j                  | j                        }|j                  | j                        }t	        ||| j                        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   s       r   r\   r\      s    	w	B!c5\"
BGGAJ//	Ax	 77Q;15519bggagg&7CAsQZZ88 GGAGG$E''!%%.CE3<<!!r   c                 X   t        d      }t        | t        t        f      r*t	        |j                  |       |j                  |             S t        | t              rJt	        |j                  | j                        |j                  | j                        | j                        S t        )z+Evaluates the hyperbolic tan of an intervalr   r   )
r   r
   r   r   r   tanhr   r   r	   r   r   s     r   r^   r^      rZ   r   c                    t        d      }t        | t        t        f      r[t	        |       dkD  r#t        |j                   |j                  d      S t        |j                  |       |j                  |             S t        | t
              r| j                  du s| j                  dkD  s| j                  dk  r#t        |j                   |j                  d      S | j                  dk  s| j                  dkD  r#t        |j                   |j                  d      S |j                  | j                        }|j                  | j                        }t        ||| j                        S y)z)Evaluates the inverse sine of an intervalr   r'   Fr   r&   N)r   r
   r   r   r   r   r   arcsinr	   r   r   r#   s       r   asinra     s   	w	B!c5\"q6A:RVVGRVVe<<BIIaL"))A,77	Ax	 ::!''A+RVVGRVVe<<WWr\QUUQYRVVGRVVd;;IIagg&E))AEE"CE3<< 
!r   c                    t        d      }t        | t        t        f      r[t	        |       dkD  r#t        |j                   |j                  d      S t        |j                  |       |j                  |             S t        | t
              r| j                  du s| j                  dkD  s| j                  dk  r#t        |j                   |j                  d      S | j                  dk  s| j                  dkD  r#t        |j                   |j                  d      S |j                  | j                        }|j                  | j                        }t        ||| j                        S y)z(Evaluates the inverse cos of an intervalr   r'   Fr   r&   N)r   r
   r   r   r   r   r   arccosr	   r   r   r#   s       r   acosrd     s   	w	B!c5\"q6A:RVVGRVVe<<BIIaL"))A,77	Ax	 ::!''A+RVVGRVVe<<WWr\QUUQYRVVGRVVd;;IIagg&E))AEE"CE3<< 
!r   c                    t        d      }t        | t        t        f      rt	        |j                  |             S t        | t              r| j                  du r#t	        |j                   |j                  d      S |j                  | j                        }|j                  | j                        }||k(  rt	        ||| j                        S t	        ||d      S t        S )z$Evaluates the ceiling of an intervalr   Fr   N)r   r
   r   r   r   ceilr	   r   r   r   r   r#   s       r   rf   rf   4  s    	w	B!c5\"
##	Ax	 ::RVVGRVVe<<GGAGG$E''!%%.C|sQZZ@@  sT::""r   c                    t        d      }t        | t        t        f      rt	        |j                  |             S t        | t              r| j                  du r#t	        |j                   |j                  d      S |j                  | j                        }|j                  | j                        }||k(  rt	        ||| j                        S t	        ||d      S t        S )z"Evaluates the floor of an intervalr   Fr   N)r   r
   r   r   r   floorr	   r   r   r   r   r#   s       r   rh   rh   I  s    	w	B!c5\"$$	Ax	 ::RVVGRVVe<<HHQWW%E((155/C|sQZZ@@  sT::""r   c                 X   t        d      }t        | t        t        f      rB| dk  r#t	        |j
                   |j
                  d      S t	        |j                  |             S t        | t              r| j                  dk  r#t	        |j
                   |j
                  d      S | j                  dk  r#t	        |j
                   |j
                  d      S |j                  | j                        }|j                  | j                        }t	        ||| j                        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#   s       r   acoshrk   ^  s    	w	B!c5\"q5RVVGRVVe<<BJJqM**	Ax	 5519RVVGRVVe<<WWq[RVVGRVVd;;JJqww'E**QUU#CE3<<""r   c                 @   t        d      }t        | t        t        f      rt	        |j                  |             S t        | t              rN|j                  | j                        }|j                  | j                        }t	        ||| j                        S t        S )z4Evaluates the inverse hyperbolic sine of an intervalr   r   )
r   r
   r   r   r   arcsinhr   r   r	   r   r#   s       r   asinhrn   w  st    	w	B!c5\"

1&&	Ax	 

177#jjsQZZ88""r   c                    t        d      }t        | t        t        f      rKt	        |       dk\  r#t        |j                   |j                  d      S t        |j                  |             S t        | t
              r| j                  du s| j                  dk\  s| j                  dk  r#t        |j                   |j                  d      S | j                  dk  s| j                  dk\  r#t        |j                   |j                  d      S |j                  | j                        }|j                  | j                        }t        ||| j                        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#   s       r   atanhrq     s    	w	B!c5\"q6Q;RVVGRVVe<<BJJqM**	Ax	 ::!''Q,!%%2+RVVGRVVe<<WW]aeeqjRVVGRVVd;;JJqww'E**QUU#CE3<<""r   c                       d }t        ||       S )zZDefines the three valued ``And`` behaviour for a 2-tuple of
     three valued logic valuesc                     | d   du s|d   du rd}n| d   |d   d }nd}| d   du s|d   du rd}||fS | d   |d   d }||fS d}||fS )Nr   FTr'    cmp_intervalacmp_intervalbfirstseconds       r   
reduce_andzAnd.<locals>.reduce_and  s    u$a(8E(AE1%q)9)AEEu$a(8E(AF
 v	 1%q)9)AF v Fvr   r   )rN   rz   s     r   Andr{     s     *d##r   c                       d }t        ||       S )zYDefines the three valued ``Or`` behaviour for a 2-tuple of
     three valued logic valuesc                     | d   du s|d   du rd}n| d   |d   d }nd}| d   du s|d   du rd}||fS | d   |d   d }||fS d}||fS )Nr   TFr'   rt   ru   s       r   	reduce_orzOr.<locals>.reduce_or  s    t#}Q'74'?E1%q)9)AEEt#}Q'74'?F
 v	 1%q)9)AF v Fvr   r   )rN   r~   s     r   Orr     s     )T""r   N)__doc__	functoolsr   sympy.plotting.intervalmathr   sympy.externalr   r   r   r   r    r$   r+   r6   r8   r:   rR   rW   rY   r\   r^   ra   rd   rf   rh   rk   rn   rq   r{   r   rt   r   r   <module>r      s    I  0 (	""","*
"":"<",:*:.""("=,=,#*#*#2
##4$(#r   