
    \h<                     X    S r SSKJr  SSKJr  SSKJr  SSKJr   " S S5      r	S	 r
S
 rg)a  
Interval Arithmetic for plotting.
This module does not implement interval arithmetic accurately and
hence cannot be used for purposes other than plotting. If you want
to use interval arithmetic, use mpmath's interval arithmetic.

The module implements interval arithmetic using numpy and
python floating points. The rounding up and down is not handled
and hence this is not an accurate implementation of interval
arithmetic.

The module uses numpy for speed which cannot be achieved with mpmath.
    )
int_valued)	fuzzy_and)	nsimplify   )intervalMembershipc                       \ rS rSrSrSS.S jr\S 5       r\S 5       rS r	S	 r
S
 rS rS rS rS rS rS r\rS rS rS rS r\rS rS rS rS rS rS rSrg)interval*   a  Represents an interval containing floating points as start and
end of the interval
The is_valid variable tracks whether the interval obtained as the
result of the function is in the domain and is continuous.
- True: Represents the interval result of a function is continuous and
        in the domain of the function.
- False: The interval argument of the function was not in the domain of
         the function, hence the is_valid of the result interval is False
- None: The function was not continuous over the interval or
        the function's argument interval is partly in the domain of the
        function

A comparison between an interval and a real number, or a
comparison between two intervals may return ``intervalMembership``
of two 3-valued logic values.
Tis_validc                   Xl         [        U5      S:X  ai  [        US   [        5      (       a*  US   R                  US   R
                  sU l        U l        g [        US   5      U l        [        US   5      U l        g [        U5      S:X  aZ  US   US   :  a'  [        US   5      U l        [        US   5      U l        g [        US   5      U l        [        US   5      U l        g [        S5      e)Nr   r      z9interval takes a maximum of two float values as arguments)r   len
isinstancer	   startendfloat
ValueError)selfr   argskwargss       g/var/www/auris/envauris/lib/python3.13/site-packages/sympy/plotting/intervalmath/interval_arithmetic.py__init__interval.__init__<   s     t9>$q'8,,'+Aw}}d1gkk$
DH"47^
 a>Y!^Awa "47^
 a>"47^
 a>  + , ,    c                 :    U R                   U R                  -   S-  $ )Ng       @r   r   r   s    r   midinterval.midP   s    

TXX%,,r   c                 4    U R                   U R                  -
  $ N)r   r   r   s    r   widthinterval.widthT   s    xx$**$$r   c                 8    SU R                   U R                  4-  $ )Nzinterval(%f, %f)r   r   s    r   __repr__interval.__repr__X   s    !TZZ$:::r   c                 8    SU R                   U R                  4-  $ )Nz[%f, %f]r   r   s    r   __str__interval.__str__[   s    TZZ222r   c                 $   [        U[        [        45      (       ab  U R                  U:  a  [	        SU R
                  5      $ U R                  U:  a  [	        SU R
                  5      $ [	        S U R
                  5      $ [        U[        5      (       ay  [        U R
                  UR
                  /5      nU R                  UR                  :  a  [	        SU5      $ U R                  UR                  :  a  [	        SU5      $ [	        S U5      $ [        $ NTF
r   intr   r   r   r   r   r	   r   NotImplementedr   othervalids      r   __lt__interval.__lt__^   s    ec5\**xx%)$>>e#)%??)$>>x((t}}enn=>Exx%,,&)$66zzEII%)%77%dE22!!r   c                 T   [        U[        [        45      (       ab  U R                  U:  a  [	        SU R
                  5      $ U R                  U:  a  [	        SU R
                  5      $ [	        S U R
                  5      $ [        U[        5      (       a  UR                  U 5      $ [        $ r,   )
r   r.   r   r   r   r   r   r	   r3   r/   r   r1   s     r   __gt__interval.__gt__q   s    ec5\**zzE!)$>>E!)%??)$>>x((<<%%!!r   c                 X   [        U[        [        45      (       ag  U R                  U:X  a&  U R                  U:X  a  [        SU R                  5      $ X;   a  [        S U R                  5      $ [        SU R                  5      $ [        U[        5      (       a  [        U R                  UR                  /5      nU R                  UR                  :X  a&  U R                  UR                  :X  a  [        SU5      $ U R                  U5      S   b  [        SU5      $ [        S U5      $ [        $ )NTFr   r   r.   r   r   r   r   r   r	   r   r3   r/   r0   s      r   __eq__interval.__eq__~   s    ec5\**zzU"txx5'8)$>>})$>>)%??eX&&t}}enn=>EzzU[[(TXX-B)$66U#A&2)%77)$66!!r   c                 X   [        U[        [        45      (       ag  U R                  U:X  a&  U R                  U:X  a  [        SU R                  5      $ X;   a  [        S U R                  5      $ [        SU R                  5      $ [        U[        5      (       a  [        U R                  UR                  /5      nU R                  UR                  :X  a&  U R                  UR                  :X  a  [        SU5      $ U R                  U5      S   b  [        SU5      $ [        S U5      $ [        $ )NFTr   r:   r0   s      r   __ne__interval.__ne__   s    ec5\**zzU"txx5'8)%??})$>>)$>>eX&&t}}enn=>EzzU[[(TXX-B)%77;;u%a(0)$66%dE22!!r   c                 $   [        U[        [        45      (       ab  U R                  U::  a  [	        SU R
                  5      $ U R                  U:  a  [	        SU R
                  5      $ [	        S U R
                  5      $ [        U[        5      (       ay  [        U R
                  UR
                  /5      nU R                  UR                  ::  a  [	        SU5      $ U R                  UR                  :  a  [	        SU5      $ [	        S U5      $ [        $ r,   r-   r0   s      r   __le__interval.__le__   s    ec5\**xx5 )$>>zzE!)%??)$>>eX&&t}}enn=>Exx5;;&)$66zzEII%)%77%dE22!!r   c                 J   [        U[        [        45      (       ab  U R                  U:  a  [	        SU R
                  5      $ U R                  U:  a  [	        SU R
                  5      $ [	        S U R
                  5      $ [        U[        5      (       a  UR                  U 5      $ g r,   )	r   r.   r   r   r   r   r   r	   rA   r6   s     r   __ge__interval.__ge__   s    ec5\**zzU")$>>E!)%??)$>>x((<<%% )r   c                    [        U[        [        45      (       ai  U R                  (       a&  [	        U R
                  U-   U R                  U-   5      $ U R
                  U-   nU R                  U-   n[	        X#U R                  S9$ [        U[        5      (       a]  U R
                  UR
                  -   nU R                  UR                  -   n[        U R                  UR                  /5      n[	        X#US9$ [        $ Nr   )	r   r.   r   r   r	   r   r   r   r/   r   r1   r   r   r2   s        r   __add__interval.__add__   s    ec5\**}}

U 2DHHu4DEE

U*hh&T]]CCx((JJ,E((UYY&Ct}}enn=>EE77!!r   c                    [        U[        [        45      (       a2  U R                  U-
  nU R                  U-
  n[        X#U R                  S9$ [        U[
        5      (       a]  U R                  UR                  -
  nU R                  UR                  -
  n[        U R                  UR                  /5      n[        X#US9$ [        $ rG   )	r   r.   r   r   r   r	   r   r   r/   rH   s        r   __sub__interval.__sub__   s    ec5\**JJ&E((U"CE??x((JJ*E((U[[(Ct}}enn=>EE77!!r   c                     [        U[        [        45      (       a0  XR                  -
  nXR                  -
  n[        X#U R                  S9$ [        U[
        5      (       a  UR                  U 5      $ [        $ rG   )	r   r.   r   r   r   r	   r   rL   r/   )r   r1   r   r   s       r   __rsub__interval.__rsub__   s^    ec5\**HH$E**$CE??x((==&&!!r   c                     U R                   (       a"  [        U R                  * U R                  * 5      $ [        U R                  * U R                  * U R                   S9$ rG   )r   r	   r   r   r   s    r   __neg__interval.__neg__   sA    ==TXXI

{33TXXI

{T]]KKr   c                 <   [        U[        5      (       Ga7  U R                  SL d  UR                  SL a  [        [        S5      * [        S5      SS9$ U R                  b  UR                  c  [        [        S5      * [        S5      S S9$ / nUR	                  U R
                  UR
                  -  5        UR	                  U R                  UR
                  -  5        UR	                  U R
                  UR                  -  5        UR	                  U R                  UR                  -  5        [        U5      n[        U5      n[        X45      $ [        U[        [        45      (       a/  [        U R
                  U-  U R                  U-  U R                  S9$ [        $ )NFinfr   )r   r	   r   r   appendr   r   minmaxr.   r/   )r   r1   intersr   r   s        r   __mul__interval.__mul__   s,   eX&&}}%5)@uuU|eLL&%..*@uuU|dKKdjj5;;67dhh45djj59945dhh23F&k++U|,,DJJu,dhhunt}}UU!!r   c                     [        U[        [        45      (       a%  U R                  U:*  =(       a    U R                  U:  $ U R                  UR                  :*  =(       a    UR                  U R                  :*  $ r"   )r   r.   r   r   r   r6   s     r   __contains__interval.__contains__
  sU    ec5\**::&<488u+<<::,Fdhh1FFr   c                     [        U[        [        45      (       a  [        U5      nUR	                  U 5      $ [        U[        5      (       a  UR	                  U 5      $ [
        $ r"   )r   r.   r   r	   __truediv__r/   r6   s     r   __rtruediv__interval.__rtruediv__  sQ    ec5\**UOE$$T**x(($$T**!!r   c                 \   U R                   (       d(  [        [        S5      * [        S5      U R                   S9$ [        U[        [        45      (       aJ  US:X  a  [        [        S5      * [        S5      SS9$ [        U R
                  U-  U R                  U-  5      $ [        U[        5      (       Gas  UR                   SL d  U R                   SL a  [        [        S5      * [        S5      SS9$ UR                   b  U R                   c  [        [        S5      * [        S5      S S9$ SU;   a  [        [        S5      * [        S5      S S9$ U nUR                  S:  a  U* nU* n/ nUR                  UR
                  UR
                  -  5        UR                  UR                  UR
                  -  5        UR                  UR
                  UR                  -  5        UR                  UR                  UR                  -  5        [        U5      n[        U5      n[        XE5      $ [        $ )NrU   r   r   F)r   r	   r   r   r.   r   r   rV   rX   rW   r/   )r   r1   thisrY   r   r   s         r   r`   interval.__truediv__  s   }}U5\M5<$--PPec5\**zuuU|eLL

U 2DHHu4DEEx((~~&$--5*@uuU|eLL'4==+@uuU|dKK :#U5\M5<$OO 99q= 5D"FE djj5;;67dhh45djj59945dhh23F&k++!!r   c                 V   SSK JnJn  U R                  (       d  U $ [	        U[
        5      (       a  U" X" U 5      -  5      $ [	        U[        [        45      (       aI  US:  a  SU R                  [        U5      5      -  $ [        U5      (       a  [        X5      $ [        X5      $ [        $ )Nr   )explogr   )lib_intervalrg   rh   r   r   r	   r   r.   __pow__absr   _pow_int
_pow_floatr/   )r   r1   rg   rh   s       r   rj   interval.__pow__B  s    *}}KeX&&us4y())s|,,qy4<<E
333e$$#D00%d22!!r   c                 N   [        U[        [        45      (       a  U R                  (       d  U $ US:  a  U R                  S:  a  [        [        S5      * [        S5      SS9$ [        U R                  5      nUR                  5       u  p4US-  S:X  a  [        [        S5      * [        S5      SS9$ [        U5      U R                  -  * nUn[        XV5      $ [        XR                  -  XR                  -  5      $ [        U[
        5      (       a  UR                  U 5      $ [        $ )Nr   rU   Fr   r   )r   r   r.   r   r#   r	   r   r   as_numer_denomrk   r   rj   r/   )r   r1   power_rationalnumdenomr   r   s          r   __rpow__interval.__rpow__T  s    eeS\**==::>#U5\M5<%PP%.tzz%:N!/!>!>!@JCqyA~'uuU|16 8 8 "%UTZZ!7 7#'33zz 15((?CCx((==&&!!r   c                 Z    [        U R                  U R                  U R                  45      $ r"   )hashr   r   r   r   s    r   __hash__interval.__hash__m  s     T]]DJJ9::r   )r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   propertyr   r#   r&   r)   r3   r7   r;   r>   rA   rD   rI   __radd__rL   rO   rR   rZ   __rmul__r]   ra   r`   rj   rt   rx   __static_attributes__ r   r   r	   r	   *   s    " (, ,( - - % %;3"&""("&"&	&"" H""L"( HG"'"R"$"2;r   r	   c                    [        U5      nUR                  5       u  p4US-  S:X  aZ  [        U R                  5      U-  n[        U R                  5      U-  nUS:  a  [        S[        XV5      5      nU$ [        XV5      nU$ US-  S:X  a|  U R                  S:  a  [        [        S5      * [        S5      SS9$ U R                  S:  a  [        SU R                  U-  SS9$ [        U R                  U-  U R                  U-  5      $ U R                  S:  a  [        U R                  5      U-  * nOU R                  U-  nU R                  S:  a  [        U R                  5      U-  * nOU R                  U-  n[        XVU R                  S9$ )z1Evaluates an interval raised to a floating point.r   r   rU   Fr   N)	r   rp   rk   r   r   r	   rX   r   r   )interpowerrq   rr   rs   r   r   rets           r   rm   rm   q  sZ   u%N..0JC
Qw!|EKK %'%))ne#191c%o.C 
 5&C
	a99q=U5\M5<%HH[[1_Auyy%/$??EKK.		50@AA;;?%u,,EKK&E99q=uyy>5((C))U"CU^^<<r   c                 j   [        U5      nUS-  (       a&  [        U R                  U-  U R                  U-  5      $ U R                  S:  aC  U R                  S:  a3  Sn[	        U R                  U-  U R                  U-  5      n[        X#5      $ [        U R                  U-  U R                  U-  5      $ )z0Evaluates an interval raised to an integer powerr   r   )r.   r	   r   r   rX   )r   r   r   r   s       r   rl   rl     s    JEqyU*EIIu,<==;;?uyy1}Eekk5(%))U*:;CE''EKK.		50@AAr   N)r~   sympy.core.numbersr   sympy.core.logicr   sympy.simplify.simplifyr   interval_membershipr   r	   rm   rl   r   r   r   <module>r      s2   D * & - 3D; D;N
=BBr   