Ë
    7^(hw  ã                   ó`  — d Z ddlmZmZ ddlmZmZmZmZm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZ ddlmZ ddlmZm Z m!Z!m"Z"  ejF                  e	«      d	„ «       Z$ ejF                  e«      d
„ «       Z$ ejF                  e«      d„ «       Z$ ejF                  e«      d„ «       Z$ ejF                  e«      d„ «       Z$ ejF                  e«      d„ «       Z$ ejJ                  eeeeeeeee«	      d„ «       Z$ ejJ                  eee«      d„ «       Z$ ejF                  e«      d„ «       Z$ e jF                  e«      d„ «       Z$ e!jF                  e«      d„ «       Z$ e!jJ                  ee«      d„ «       Z$ e"jF                  e«      d„ «       Z$ e"jJ                  ee«      d„ «       Z$y)zc
This module contains query handlers responsible for calculus queries:
infinitesimal, finite, etc.
é    )ÚQÚask)ÚExprÚAddÚMulÚPowÚSymbol)ÚNegativeInfinityÚGoldenRatioÚInfinityÚExp1ÚComplexInfinityÚImaginaryUnitÚNaNÚNumberÚPiÚEÚTribonacciConstant)ÚcosÚexpÚlogÚsignÚsin)Ú	conjunctsé   )ÚFinitePredicateÚInfinitePredicateÚPositiveInfinitePredicateÚNegativeInfinitePredicatec                 óv   — | j                   �| j                   S t        j                  | «      t        |«      v ryy)z
    Handles Symbol.
    NT)Ú	is_finiter   Úfiniter   ©ÚexprÚassumptionss     úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/assumptions/handlers/calculus.pyÚ_r'      s3   € ð
 ‡~�~Ð!Ø�~‰~ÐÜ‡x�x�ƒ~œ ;Ó/Ñ/ØØó    c                 óì   — d}d}| j                   D ]`  }t        t        j                  |«      |«      }|rŒ%t        t        j                  |«      |«      }|dk7  r||k7  s|€d||fv r y|}|dusŒ_|}Œb |S )ab  
    Return True if expr is bounded, False if not and None if unknown.

    Truth Table:

    +-------+-----+-----------+-----------+
    |       |     |           |           |
    |       |  B  |     U     |     ?     |
    |       |     |           |           |
    +-------+-----+---+---+---+---+---+---+
    |       |     |   |   |   |   |   |   |
    |       |     |'+'|'-'|'x'|'+'|'-'|'x'|
    |       |     |   |   |   |   |   |   |
    +-------+-----+---+---+---+---+---+---+
    |       |     |           |           |
    |   B   |  B  |     U     |     ?     |
    |       |     |           |           |
    +---+---+-----+---+---+---+---+---+---+
    |   |   |     |   |   |   |   |   |   |
    |   |'+'|     | U | ? | ? | U | ? | ? |
    |   |   |     |   |   |   |   |   |   |
    |   +---+-----+---+---+---+---+---+---+
    |   |   |     |   |   |   |   |   |   |
    | U |'-'|     | ? | U | ? | ? | U | ? |
    |   |   |     |   |   |   |   |   |   |
    |   +---+-----+---+---+---+---+---+---+
    |   |   |     |           |           |
    |   |'x'|     |     ?     |     ?     |
    |   |   |     |           |           |
    +---+---+-----+---+---+---+---+---+---+
    |       |     |           |           |
    |   ?   |     |           |     ?     |
    |       |     |           |           |
    +-------+-----+-----------+---+---+---+

        * 'B' = Bounded

        * 'U' = Unbounded

        * '?' = unknown boundedness

        * '+' = positive sign

        * '-' = negative sign

        * 'x' = sign unknown

        * All Bounded -> True

        * 1 Unbounded and the rest Bounded -> False

        * >1 Unbounded, all with same known sign -> False

        * Any Unknown and unknown sign -> None

        * Else -> None

    When the signs are not the same you can have an undefined
    result as in oo - oo, hence 'bounded' is also undefined.
    éÿÿÿÿTNF)Úargsr   r   r"   Úextended_positive)r$   r%   r   ÚresultÚargÚ_boundedÚss          r&   r'   r'       s�   € ð| €DØ€FØ�y‰yò ˆÜ”q—x‘x “} kÓ2ˆÙØÜ”×#Ñ# CÓ(¨+Ó6ˆð �2Š:˜!˜tš)Ø�	˜d x°Ð&6Ñ6ÙàˆDà˜ÒØ‰Fðð  €Mr(   c                 ó2  — d}d}| j                   D ]ƒ  }t        t        j                  |«      |«      }|r+t        t        j                  |«      |«      dusŒF|du r yd}ŒO|€-|€ yt        t        j
                  |«      |«      € y|dusŒ{d}Œ~|r yd}Œ… |S )a)  
    Return True if expr is bounded, False if not and None if unknown.

    Truth Table:

    +---+---+---+--------+
    |   |   |   |        |
    |   | B | U |   ?    |
    |   |   |   |        |
    +---+---+---+---+----+
    |   |   |   |   |    |
    |   |   |   | s | /s |
    |   |   |   |   |    |
    +---+---+---+---+----+
    |   |   |   |        |
    | B | B | U |   ?    |
    |   |   |   |        |
    +---+---+---+---+----+
    |   |   |   |   |    |
    | U |   | U | U | ?  |
    |   |   |   |   |    |
    +---+---+---+---+----+
    |   |   |   |        |
    | ? |   |   |   ?    |
    |   |   |   |        |
    +---+---+---+---+----+

        * B = Bounded

        * U = Unbounded

        * ? = unknown boundedness

        * s = signed (hence nonzero)

        * /s = not signed
    TFN)r+   r   r   r"   ÚzeroÚextended_nonzero)r$   r%   r-   Úpossible_zeror.   r/   s         r&   r'   r'   r   s§   € ðN €FØ€MØ�y‰yò ˆÜ”q—x‘x “} kÓ2ˆÙÜ”1—6‘6˜#“; Ó,°EÒ9Ø˜U‘?ÙØ $‘ØÐØˆ~ÙÜ”1×%Ñ% cÓ*¨KÓ8Ð@ÙØ˜UÒ"Ø‘áÙØ‰Fð#ð$ €Mr(   c                 ó¬  — | j                   t        k(  r)t        t        j                  | j
                  «      |«      S t        t        j                  | j                   «      |«      }t        t        j                  | j
                  «      |«      }|€|€y|du r*t        t        j                  | j
                  «      |«      ry|rg|ret        t        j                  | j                   «      |«      }t        t        j                  | j
                  «      |«      }|du r|du ry|dur|duryyt        | j                   «      dk  dk(  r*t        t        j                  | j
                  «      |«      ryt        | j                   «      dk\  dk(  r*t        t        j                  | j
                  «      |«      ryt        | j                   «      dk\  dk(  r|du ryy)z¹
    * Unbounded ** NonZero -> Unbounded

    * Bounded ** Bounded -> Bounded

    * Abs()<=1 ** Positive -> Bounded

    * Abs()>=1 ** Negative -> Bounded

    * Otherwise unknown
    NFTé   )Úbaser   r   r   r"   r   r3   r2   ÚnegativeÚabsr,   Úextended_negative)r$   r%   Úbase_boundedÚexp_boundedÚis_base_zeroÚis_exp_negatives         r&   r'   r'   ¯   sl  € ð ‡y�y”A‚~Ü”1—8‘8˜DŸH™HÓ% {Ó3Ð3ä”q—x‘x §	¡	Ó*¨KÓ8€LÜ”a—h‘h˜tŸx™xÓ(¨+Ó6€KØÐ Ð 3ØØ�uÑ¤¤Q×%7Ñ%7¸¿¹Ó%AÀ;Ô!OØÙ™Üœ1Ÿ6™6 $§)¡)Ó,¨[Ó9ˆÜœaŸj™j¨¯©Ó2°;Ó?ˆØ˜4Ñ O°tÑ$;ØØ˜uÑ$¨ÀÑ)EØØÜˆD�I‰I‹˜!Ñ Ò$¬¬Q×-@Ñ-@ÀÇÁÓ-JÈKÔ)XØÜˆD�I‰I‹˜!Ñ Ò$¬¬Q×-@Ñ-@ÀÇÁÓ-JÈKÔ)XØÜˆD�I‰I‹˜!Ñ Ò$¨¸Ñ)=ØØr(   c                 óT   — t        t        j                  | j                  «      |«      S ©N)r   r   r"   r   r#   s     r&   r'   r'   Õ   s   € äŒq�x‰x˜Ÿ™Ó! ;Ó/Ð/r(   c                 ó¶   — t        t        j                  | j                  d   «      |«      ryt        t        j                  | j                  d   «       |«      S )Nr   F)r   r   Úinfiniter+   r2   r#   s     r&   r'   r'   Ù   sC   € ô Œ1�:‰:�d—i‘i ‘lÓ# [Ô1ØÜ”—‘�t—y‘y ‘|Ó$Ð$ kÓ2Ð2r(   c                  ó   — y©NT© r#   s     r&   r'   r'   á   s   € ð r(   c                  ó   — y©NFrE   r#   s     r&   r'   r'   æ   ó   € àr(   c                  ó   — y r@   rE   r#   s     r&   r'   r'   ê   ó   € àr(   c                 óV   — t        j                  | «      j                  |«      }|€y | S r@   )r   r"   Ú	_eval_ask)r$   r%   r!   s      r&   r'   r'   ò   s+   € ä—‘˜“×(Ñ(¨Ó5€IØÐØØˆ=Ðr(   c                  ó   — yrD   rE   r#   s     r&   r'   r'   ý   rJ   r(   c                  ó   — yrG   rE   r#   s     r&   r'   r'     rH   r(   c                  ó   — yrD   rE   r#   s     r&   r'   r'   
  rJ   r(   c                  ó   — yrG   rE   r#   s     r&   r'   r'     rH   r(   N)&Ú__doc__Úsympy.assumptionsr   r   Ú
sympy.corer   r   r   r   r	   Úsympy.core.numbersr
   r   r   r   r   r   r   r   r   r   r   Úsympy.functionsr   r   r   r   r   Úsympy.logic.boolalgr   Úpredicates.calculusr   r   r   r   Úregisterr'   Úregister_manyrE   r(   r&   ú<module>rZ      s7  ðñ÷
 %ß 2Õ 2÷÷ ÷ ñ ÷ 5Õ 4Ý )÷:ó :ð €×Ñ˜&Ó!ñó "ðð €×Ñ˜#ÓñOó ðOðb €×Ñ˜#Óñ:ó ð:ðx €×Ñ˜#Óñ#ó ð#ðJ €×Ñ˜#Óñ0ó ð0ð €×Ñ˜#Óñ3ó ð3ð €×Ñ˜s C¨°°T¸;Ø˜ tó-ñó-ðð €×Ñ˜°Ð:JÓKñó Lðð €×Ñ˜#Óñó ðð Ð×Ñ˜DÓ!ñó "ðð $Ð×#Ñ# HÓ-ñó .ðð )Ð×(Ñ(Ð)9¸?ÓKñó Lðð $Ð×#Ñ#Ð$4Ó5ñó 6ðð )Ð×(Ñ(¨°?ÓCñó Dñr(   