Ë
    7^(hzW  ã                  óv  — d dl mZ d dlmZ d dlm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mZ d d	lmZmZmZmZmZmZmZmZ d d
lmZ d dlm Z m!Z! d dl"m#Z#  G d„ de«      Z$ G d„ de$«      Z% e#e%e«      d„ «       Z& G d„ de$«      Z' e#e'e«      d„ «       Z& G d„ de«      Z( e#e(e«      d„ «       Z&y)é    )Úannotations)ÚBasic)ÚExpr)ÚAddÚS)Úget_integer_partÚPrecisionExhausted)ÚDefinedFunction)Úfuzzy_orÚ	fuzzy_and)ÚIntegerÚ
int_valued)ÚGtÚLtÚGeÚLeÚ
RelationalÚis_eqÚis_leÚis_lt)Ú_sympify)ÚimÚre)Údispatchc                  óN   — e Zd ZU dZded<   ed„ «       Zed„ «       Zd„ Zd„ Z	d„ Z
y	)
ÚRoundFunctionz+Abstract base class for rounding functions.ztuple[Expr]Úargsc                ó   — | j                  |«      x}�|S | j                  |«      x}�|S |j                  s|j                  du r|S |j                  st
        j                  |z  j                  rMt        |«      }|j                  t
        j                  «      s | |«      t
        j                  z  S  | |d¬«      S t
        j                  x}x}}d„ }t        j                  |«      D ]_  }|j                  r* |t        |«      «      x}�||t
        j                  z  z  }Œ9 ||«      x}�||z  }ŒI|j                  r||z  }Œ[||z  }Œa |s|s|S |r§|rM|j                  r)|j                  s5t
        j                  |z  j                  s|j                  rd|j                  rX	 t        || j                  i d¬«      \  }	}|t!        |	«      t!        |«      t
        j                  z  z   z  }t
        j                  }||z  }|s|S |j                  st
        j                  |z  j                  r'| | t        |«      d¬«      t
        j                  z  z   S t'        |t(        t*        f«      r||z   S | | |d¬«      z   S # t"        t$        f$ r Y Œ’w xY w)NF©Úevaluatec                óN   — t        | «      rt        | «      S | j                  r| S d S ©N)r   ÚintÚ
is_integer)Úxs    úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/functions/elementary/integers.pyú<lambda>z$RoundFunction.eval.<locals>.<lambda>-   s&   € ¤J¨q¤Mœ#˜a›&€ Ø—’ˆAð Ø#'ð ó    T)Úreturn_ints)Ú_eval_numberÚ_eval_const_numberr$   Ú	is_finiteÚis_imaginaryr   ÚImaginaryUnitÚis_realr   ÚhasÚZeror   Ú	make_argsÚ	is_numberr   Ú_dirr   r	   ÚNotImplementedErrorÚ
isinstanceÚfloorÚceiling)
ÚclsÚargÚvÚiÚipartÚnpartÚspartÚintofÚtÚrs
             r&   ÚevalzRoundFunction.eval   sO  € à×!Ñ! #Ó&Ð&ˆAÐ3ØˆHØ×'Ñ'¨Ó,Ð,ˆAÐ9ØˆHà�>Š>˜SŸ]™]¨eÑ3ØˆJØ×Ò¤§¡°Ñ 3×<Ò<Ü�3“ˆAØ—5‘5œŸ™Ô)Ù˜1“vœaŸo™oÑ-Ð-Ù�s UÔ+Ð+ô !"§¡Ð&ˆÐ&�˜ñ)ˆä—‘˜sÓ#ò 	ˆAØ�~Š~©¬b°«e«Ð#4 1Ð"AØ˜œ1Ÿ?™?Ñ*Ñ*‘Ù˜Q“x�-�!Ð,Ø˜‘
‘Ø—’Ø˜‘
‘à˜‘
‘ð	ñ ™ØˆLñ ÙØ�MŠM˜u×1Ò1´a·o±oÀeÑ6K×5TÒ5TØ×"Ò" u§}¢}ðÜ'Ø˜3Ÿ8™8 R°Tô;‘��1àœ ›¤g¨a£j´·±Ñ&@Ñ@Ñ@�ÜŸ™�ð 	�‰ˆÙØˆLØ×Ò¤A§O¡O°EÑ$9×#BÒ#BØ™3œr %›y°5Ô9¼!¿/¹/ÑIÑIÐIÜ˜¤¤wÐ/Ô0Ø˜5‘=Ð à™3˜u¨uÔ5Ñ5Ð5øô 'Ô(;Ð<ò Ùðús   Æ#AI; É;JÊJc                ó   — t        «       ‚r"   )r5   ©r9   r:   s     r&   r*   zRoundFunction._eval_numberS   s   € ä!Ó#Ð#r(   c                ó4   — | j                   d   j                  S ©Nr   )r   r,   ©Úselfs    r&   Ú_eval_is_finitezRoundFunction._eval_is_finiteW   s   € Ø�y‰y˜‰|×%Ñ%Ð%r(   c                ó4   — | j                   d   j                  S rG   ©r   r/   rH   s    r&   Ú_eval_is_realzRoundFunction._eval_is_realZ   ó   € Ø�y‰y˜‰|×#Ñ#Ð#r(   c                ó4   — | j                   d   j                  S rG   rL   rH   s    r&   Ú_eval_is_integerzRoundFunction._eval_is_integer]   rN   r(   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__ÚclassmethodrC   r*   rJ   rM   rP   © r(   r&   r   r      sA   … Ù5à
Óàñ66ó ð66ðp ñ$ó ð$ò&ò$ó$r(   r   c                  ór   — e Zd ZdZdZed„ «       Zed„ «       Zd„ Zdd„Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)r7   aè  
    Floor is a univariate function which returns the largest integer
    value not greater than its argument. This implementation
    generalizes floor to complex numbers by taking the floor of the
    real and imaginary parts separately.

    Examples
    ========

    >>> from sympy import floor, E, I, S, Float, Rational
    >>> floor(17)
    17
    >>> floor(Rational(23, 10))
    2
    >>> floor(2*E)
    5
    >>> floor(-Float(0.567))
    -1
    >>> floor(-I/2)
    -I
    >>> floor(S(5)/2 + 5*I/2)
    2 + 2*I

    See Also
    ========

    sympy.functions.elementary.integers.ceiling

    References
    ==========

    .. [1] "Concrete mathematics" by Graham, pp. 87
    .. [2] https://mathworld.wolfram.com/FloorFunction.html

    éÿÿÿÿc                ó²   — |j                   r|j                  «       S t        d„ || fD «       «      r|S |j                  r|j	                  t
        «      d   S y )Nc              3  óV   K  — | ]!  }t         t        fD ]  }t        ||«      –— Œ Œ# y ­wr"   ©r7   r8   r6   ©Ú.0r<   Újs      r&   ú	<genexpr>z%floor._eval_number.<locals>.<genexpr>‹   ó:   è ø€ ò @Ø¬u´gÐ.>ò@Ø)*ô ˜!˜Q×ð @Ðñ @ùó   ‚')r   )Ú	is_Numberr7   ÚanyÚis_NumberSymbolÚapproximation_intervalr   rE   s     r&   r*   zfloor._eval_number‡   s\   € à�=Š=Ø—9‘9“;ÐÜñ @Ø ˜t˜ô@ô @àˆJØ×ÒØ×-Ñ-¬gÓ6°qÑ9Ð9ð r(   c                ól  — |j                   �r'|j                  rt        j                  S |j                  rz|j                  «       \  }}|j                  }|€y |r| | }}t        ||«      rt        j                  S t        t        ||«      t        |d|z  «      g«      rt        j                  S |j                  rx|j                  «       \  }}|j                  }|€y |r| | }}t        | |«      rt        j                  S t        t        d|z  |«      t        || «      g«      rt        d«      S y y y ©Né   éþÿÿÿ)r/   Úis_zeror   r1   Úis_positiveÚas_numer_denomÚis_negativer   r   r   ÚOneÚNegativeOner   ©r9   r:   ÚnumÚdenÚss        r&   r+   zfloor._eval_const_number‘   s  € à�;‹;Ø�{Š{Ü—v‘v�Ø�ŠØ×-Ñ-Ó/‘��SØ—O‘O�Ø�9ØÙØ #˜t c T˜�Cä˜˜c”?ÜŸ6™6�Mäœe C¨›o¬u°S¸!¸C¹%Ó/@ÐAÔBÜŸ5™5�LØ�ŠØ×-Ñ-Ó/‘��SØ—O‘O�Ø�9ØÙØ #˜t c T˜�Cä˜#˜˜sÔ#ÜŸ=™=Ð(äœe B s¡F¨CÓ0´%¸¸c¸TÓ2BÐCÔDÜ" 2›;Ð&ð Eð ð! r(   c                óø  — ddl m} | j                  d   }|j                  |d«      }| j                  |d«      }|t        j
                  u st        ||«      r6|j                  |dt        |«      j                  rdnd¬«      }t        |«      }|j                  rN||k(  rG|j                  ||dk7  r|nd¬«      }|j                  r|dz
  S |j                  r|S t        d|z  «      ‚|S |j                  |||¬	«      S ©
Nr   ©ÚAccumBoundsú-ú+©Údiré   ©ÚcdirúNot sure of sign of %s©Úlogxr   )Ú!sympy.calculus.accumulationboundsrx   r   Úsubsr   ÚNaNr6   Úlimitr   rn   r7   r,   r|   rl   r5   Úas_leading_term©	rI   r%   r‚   r   rx   r:   Úarg0rB   Úndirs	            r&   Ú_eval_as_leading_termzfloor._eval_as_leading_term±   så   € ÝAØ�i‰i˜‰lˆØ�x‰x˜˜1‹~ˆØ�I‰I�a˜‹OˆØ”1—5‘5‰=œJ t¨[Ô9Ø—9‘9˜Q ¬b°«h×.BÒ.B¡sÈ�9ÓLˆDÜ�d“ˆAØ�>Š>Ø�qŠyØ—w‘w˜q¨t°qªy¡t¸a�wÓ@�Ø×#Ò#Ø˜q™5�LØ×%Ò%Ø�Hä-Ð.FÈÑ.MÓNÐNà�Ø×"Ñ" 1¨4°dÐ"Ó;Ð;r(   c                ó(  — | j                   d   }|j                  |d«      }| j                  |d«      }|t        j                  u r6|j	                  |dt        |«      j                  rdnd¬«      }t        |«      }|j                  r>ddl	m
} ddlm}	 |j                  ||||«      }
|dk  r |	d|df«      n |dd«      }|
|z   S ||k(  rG|j                  ||dk7  r|nd¬	«      }|j                  r|dz
  S |j                  r|S t!        d
|z  «      ‚|S )Nr   ry   rz   r{   rw   ©ÚOrderr}   rY   r~   r€   )r   r„   r   r…   r†   r   rn   r7   Úis_infiniterƒ   rx   Úsympy.series.orderrŽ   Ú_eval_nseriesr|   rl   r5   ©rI   r%   Únr‚   r   r:   r‰   rB   rx   rŽ   rt   ÚorŠ   s                r&   r‘   zfloor._eval_nseriesÆ   s  € Ø�i‰i˜‰lˆØ�x‰x˜˜1‹~ˆØ�I‰I�a˜‹OˆØ”1—5‘5‰=Ø—9‘9˜Q ¬b°«h×.BÒ.B¡sÈ�9ÓLˆDÜ�d“ˆAØ×ÒÝEÝ0Ø×!Ñ! ! Q¨¨dÓ3ˆAØ$%¨¢F‘�a˜!˜Q˜Ô ±¸BÀÓ0BˆAØ�q‘5ˆLØ�1Š9Ø—7‘7˜1¨4°1ª9¡4¸!�7Ó<ˆDØ×ÒØ˜1‘u�Ø×!Ò!Ø�ä)Ð*BÀTÑ*IÓJÐJàˆHr(   c                ó4   — | j                   d   j                  S rG   )r   rn   rH   s    r&   Ú_eval_is_negativezfloor._eval_is_negativeÞ   ó   € Ø�y‰y˜‰|×'Ñ'Ð'r(   c                ó4   — | j                   d   j                  S rG   )r   Úis_nonnegativerH   s    r&   Ú_eval_is_nonnegativezfloor._eval_is_nonnegativeá   ó   € Ø�y‰y˜‰|×*Ñ*Ð*r(   c                ó   — t        | «       S r"   ©r8   ©rI   r:   Úkwargss      r&   Ú_eval_rewrite_as_ceilingzfloor._eval_rewrite_as_ceilingä   s   € Ü˜˜“ˆ~Ðr(   c                ó   — |t        |«      z
  S r"   ©Úfracrž   s      r&   Ú_eval_rewrite_as_fraczfloor._eval_rewrite_as_fracç   s   € Ø”T˜#“Y‰Ðr(   c                óÆ  — t        |«      }| j                  d   j                  rT|j                  r| j                  d   |dz   k  S |j                  r'|j                  r| j                  d   t        |«      k  S | j                  d   |k(  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S ©Nr   r}   Fr   )
r   r   r/   r$   r3   r8   ÚtrueÚInfinityr,   r   ©rI   Úothers     r&   Ú__le__zfloor.__le__ê   s©   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| e¨a¡iÑ/Ð/Ø�Š 5§=¢=Ø—y‘y ‘|¤g¨e£nÑ4Ð4Ø�9‰9�Q‰<˜5Ò  U§]¢]Ü—6‘6ˆMØ”A—J‘JÑ 4§>¢>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   c                óØ  — t        |«      }| j                  d   j                  rQ|j                  r| j                  d   |k\  S |j                  r'|j                  r| j                  d   t        |«      k\  S | j                  d   |k(  r(|j                  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S ©Nr   Fr   )r   r   r/   r$   r3   r8   Úis_nonintegerÚfalseÚNegativeInfinityr,   r§   r   r©   s     r&   Ú__ge__zfloor.__ge__ø   s¯   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| uÑ,Ð,Ø�Š 5§=¢=Ø—y‘y ‘|¤w¨u£~Ñ5Ð5Ø�9‰9�Q‰<˜5Ò  U§]¢]°u×7JÒ7JÜ—7‘7ˆNØ”A×&Ñ&Ñ&¨4¯>ª>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   c                óÆ  — t        |«      }| j                  d   j                  rT|j                  r| j                  d   |dz   k\  S |j                  r'|j                  r| j                  d   t        |«      k\  S | j                  d   |k(  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S r¦   )r   r   r/   r$   r3   r8   r¯   r°   r,   r§   r   r©   s     r&   Ú__gt__zfloor.__gt__  s«   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| u¨q¡yÑ0Ð0Ø�Š 5§=¢=Ø—y‘y ‘|¤w¨u£~Ñ5Ð5Ø�9‰9�Q‰<˜5Ò  U§]¢]Ü—7‘7ˆNØ”A×&Ñ&Ñ&¨4¯>ª>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   c                óØ  — t        |«      }| j                  d   j                  rQ|j                  r| j                  d   |k  S |j                  r'|j                  r| j                  d   t        |«      k  S | j                  d   |k(  r(|j                  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S r­   )r   r   r/   r$   r3   r8   r®   r§   r¨   r,   r   r©   s     r&   Ú__lt__zfloor.__lt__  s­   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| eÑ+Ð+Ø�Š 5§=¢=Ø—y‘y ‘|¤g¨e£nÑ4Ð4Ø�9‰9�Q‰<˜5Ò  U§]¢]°u×7JÒ7JÜ—6‘6ˆMØ”A—J‘JÑ 4§>¢>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   N©r   )rQ   rR   rS   rT   r4   rV   r*   r+   r‹   r‘   r–   rš   r    r¤   r«   r±   r³   rµ   rW   r(   r&   r7   r7   a   sg   „ ñ"ðF €Dàñ:ó ð:ð ñ'ó ð'ò><ó*ò0(ò+òòò/ò/ò/ó/r(   r7   c                ó‚   — t        | j                  t        «      |«      xs t        | j                  t        «      |«      S r"   )r   Úrewriter8   r£   ©ÚlhsÚrhss     r&   Ú_eval_is_eqr¼   #  s2   € ä�—‘œWÓ% sÓ+ò %Üˆc�k‰kœ$Ó Ó$ð%r(   c                  ór   — e Zd ZdZdZed„ «       Zed„ «       Zd„ Zdd„Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)r8   a÷  
    Ceiling is a univariate function which returns the smallest integer
    value not less than its argument. This implementation
    generalizes ceiling to complex numbers by taking the ceiling of the
    real and imaginary parts separately.

    Examples
    ========

    >>> from sympy import ceiling, E, I, S, Float, Rational
    >>> ceiling(17)
    17
    >>> ceiling(Rational(23, 10))
    3
    >>> ceiling(2*E)
    6
    >>> ceiling(-Float(0.567))
    0
    >>> ceiling(I/2)
    I
    >>> ceiling(S(5)/2 + 5*I/2)
    3 + 3*I

    See Also
    ========

    sympy.functions.elementary.integers.floor

    References
    ==========

    .. [1] "Concrete mathematics" by Graham, pp. 87
    .. [2] https://mathworld.wolfram.com/CeilingFunction.html

    r}   c                ó²   — |j                   r|j                  «       S t        d„ || fD «       «      r|S |j                  r|j	                  t
        «      d   S y )Nc              3  óV   K  — | ]!  }t         t        fD ]  }t        ||«      –— Œ Œ# y ­wr"   r\   r]   s      r&   r`   z'ceiling._eval_number.<locals>.<genexpr>S  ra   rb   r}   )rc   r8   rd   re   rf   r   rE   s     r&   r*   zceiling._eval_numberO  s\   € à�=Š=Ø—;‘;“=Ð Üñ @Ø ˜t˜ô@ô @àˆJØ×ÒØ×-Ñ-¬gÓ6°qÑ9Ð9ð r(   c                ól  — |j                   �r'|j                  rt        j                  S |j                  ru|j                  «       \  }}|j                  }|€y |r| | }}t        ||«      rt        j                  S t        t        ||«      t        |d|z  «      g«      rt        d«      S |j                  r}|j                  «       \  }}|j                  }|€y |r| | }}t        | |«      rt        j                  S t        t        d|z  |«      t        || «      g«      rt        j                  S y y y rh   )r/   rk   r   r1   rl   rm   rn   r   ro   r   r   r   rp   rq   s        r&   r+   zceiling._eval_const_numberY  s  € à�;‹;Ø�{Š{Ü—v‘v�Ø�ŠØ×-Ñ-Ó/‘��SØ—O‘O�Ø�9ØÙØ #˜t c T˜�Cä˜˜c”?ÜŸ5™5�Läœe C¨›o¬u°S¸!¸C¹%Ó/@ÐAÔBÜ" 1›:Ð%Ø�ŠØ×-Ñ-Ó/‘��SØ—O‘O�Ø�9ØÙØ #˜t c T˜�Cä˜#˜˜sÔ#ÜŸ6™6�Mäœe B s¡F¨CÓ0´%¸¸c¸TÓ2BÐCÔDÜŸ=™=Ð(ð Eð ð! r(   c                óø  — ddl m} | j                  d   }|j                  |d«      }| j                  |d«      }|t        j
                  u st        ||«      r6|j                  |dt        |«      j                  rdnd¬«      }t        |«      }|j                  rN||k(  rG|j                  ||dk7  r|nd¬«      }|j                  r|S |j                  r|dz   S t        d|z  «      ‚|S |j                  |||¬	«      S rv   )rƒ   rx   r   r„   r   r…   r6   r†   r   rn   r8   r,   r|   rl   r5   r‡   rˆ   s	            r&   r‹   zceiling._eval_as_leading_termy  så   € ÝAØ�i‰i˜‰lˆØ�x‰x˜˜1‹~ˆØ�I‰I�a˜‹OˆØ”1—5‘5‰=œJ t¨[Ô9Ø—9‘9˜Q ¬b°«h×.BÒ.B¡sÈ�9ÓLˆDÜ˜“ˆAØ�>Š>Ø�qŠyØ—w‘w˜q¨t°qªy¡t¸a�wÓ@�Ø×#Ò#Ø�HØ×%Ò%Ø˜q™5�Lä-Ð.FÈÑ.MÓNÐNà�Ø×"Ñ" 1¨4°dÐ"Ó;Ð;r(   c                ó(  — | j                   d   }|j                  |d«      }| j                  |d«      }|t        j                  u r6|j	                  |dt        |«      j                  rdnd¬«      }t        |«      }|j                  r>ddl	m
} ddlm}	 |j                  ||||«      }
|dk  r |	d|df«      n |dd«      }|
|z   S ||k(  rG|j                  ||dk7  r|nd¬«      }|j                  r|S |j                  r|dz   S t!        d	|z  «      ‚|S )
Nr   ry   rz   r{   rw   r�   r}   r~   r€   )r   r„   r   r…   r†   r   rn   r8   r�   rƒ   rx   r�   rŽ   r‘   r|   rl   r5   r’   s                r&   r‘   zceiling._eval_nseriesŽ  s  € Ø�i‰i˜‰lˆØ�x‰x˜˜1‹~ˆØ�I‰I�a˜‹OˆØ”1—5‘5‰=Ø—9‘9˜Q ¬b°«h×.BÒ.B¡sÈ�9ÓLˆDÜ˜“ˆAØ×ÒÝEÝ0Ø×!Ñ! ! Q¨¨dÓ3ˆAØ$%¨¢F‘�a˜!˜Q˜Ô ±¸A¸qÓ0AˆAØ�q‘5ˆLØ�1Š9Ø—7‘7˜1¨4°1ª9¡4¸!�7Ó<ˆDØ×ÒØ�Ø×!Ò!Ø˜1‘u�ä)Ð*BÀTÑ*IÓJÐJàˆHr(   c                ó   — t        | «       S r"   ©r7   rž   s      r&   Ú_eval_rewrite_as_floorzceiling._eval_rewrite_as_floor¦  s   € Ü�s�d“ˆ|Ðr(   c                ó    — |t        | «      z   S r"   r¢   rž   s      r&   r¤   zceiling._eval_rewrite_as_frac©  s   € Ø”T˜3˜$“ZÑÐr(   c                ó4   — | j                   d   j                  S rG   )r   rl   rH   s    r&   Ú_eval_is_positivezceiling._eval_is_positive¬  r—   r(   c                ó4   — | j                   d   j                  S rG   )r   Úis_nonpositiverH   s    r&   Ú_eval_is_nonpositivezceiling._eval_is_nonpositive¯  r›   r(   c                óÆ  — t        |«      }| j                  d   j                  rT|j                  r| j                  d   |dz
  k  S |j                  r'|j                  r| j                  d   t        |«      k  S | j                  d   |k(  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S r¦   )r   r   r/   r$   r3   r7   r¯   r¨   r,   r§   r   r©   s     r&   rµ   zceiling.__lt__²  s©   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| u¨q¡yÑ0Ð0Ø�Š 5§=¢=Ø—y‘y ‘|¤u¨U£|Ñ3Ð3Ø�9‰9�Q‰<˜5Ò  U§]¢]Ü—7‘7ˆNØ”A—J‘JÑ 4§>¢>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   c                óØ  — t        |«      }| j                  d   j                  rQ|j                  r| j                  d   |kD  S |j                  r'|j                  r| j                  d   t        |«      kD  S | j                  d   |k(  r(|j                  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S r­   )r   r   r/   r$   r3   r7   r®   r§   r°   r,   r   r©   s     r&   r³   zceiling.__gt__À  s¯   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| eÑ+Ð+Ø�Š 5§=¢=Ø—y‘y ‘|¤e¨E£lÑ2Ð2Ø�9‰9�Q‰<˜5Ò  U§]¢]°u×7JÒ7JÜ—6‘6ˆMØ”A×&Ñ&Ñ&¨4¯>ª>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   c                óÆ  — t        |«      }| j                  d   j                  rT|j                  r| j                  d   |dz
  kD  S |j                  r'|j                  r| j                  d   t        |«      kD  S | j                  d   |k(  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S r¦   )
r   r   r/   r$   r3   r7   r§   r°   r,   r   r©   s     r&   r±   zceiling.__ge__Î  s«   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| e¨a¡iÑ/Ð/Ø�Š 5§=¢=Ø—y‘y ‘|¤e¨E£lÑ2Ð2Ø�9‰9�Q‰<˜5Ò  U§]¢]Ü—6‘6ˆMØ”A×&Ñ&Ñ&¨4¯>ª>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   c                óØ  — t        |«      }| j                  d   j                  rQ|j                  r| j                  d   |k  S |j                  r'|j                  r| j                  d   t        |«      k  S | j                  d   |k(  r(|j                  r|j                  rt         j                  S |t         j                  u r| j                  rt         j                  S t        | |d¬«      S r­   )r   r   r/   r$   r3   r7   r®   r¯   r¨   r,   r§   r   r©   s     r&   r«   zceiling.__le__Ü  s­   € Ü�%“ˆØ�9‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| uÑ,Ð,Ø�Š 5§=¢=Ø—y‘y ‘|¤u¨U£|Ñ3Ð3Ø�9‰9�Q‰<˜5Ò  U§]¢]°u×7JÒ7JÜ—7‘7ˆNØ”A—J‘JÑ 4§>¢>Ü—6‘6ˆMä�$˜¨Ô.Ð.r(   Nr¶   )rQ   rR   rS   rT   r4   rV   r*   r+   r‹   r‘   rÅ   r¤   rÈ   rË   rµ   r³   r±   r«   rW   r(   r&   r8   r8   )  sg   „ ñ"ðF €Dàñ:ó ð:ð ñ)ó ð)ò><ó*ò0ò ò(ò+ò/ò/ò/ó/r(   r8   c                ó‚   — t        | j                  t        «      |«      xs t        | j                  t        «      |«      S r"   )r   r¸   r7   r£   r¹   s     r&   r¼   r¼   ë  s-   € ä�—‘œUÓ# SÓ)ÒI¬U°3·;±;¼tÓ3DÀSÓ-IÐIr(   c                  ó|   — e Zd ZdZe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d„Zy)r£   a”  Represents the fractional part of x

    For real numbers it is defined [1]_ as

    .. math::
        x - \left\lfloor{x}\right\rfloor

    Examples
    ========

    >>> from sympy import Symbol, frac, Rational, floor, I
    >>> frac(Rational(4, 3))
    1/3
    >>> frac(-Rational(4, 3))
    2/3

    returns zero for integer arguments

    >>> n = Symbol('n', integer=True)
    >>> frac(n)
    0

    rewrite as floor

    >>> x = Symbol('x')
    >>> frac(x).rewrite(floor)
    x - floor(x)

    for complex arguments

    >>> r = Symbol('r', real=True)
    >>> t = Symbol('t', real=True)
    >>> frac(t + I*r)
    I*frac(r) + frac(t)

    See Also
    ========

    sympy.functions.elementary.integers.floor
    sympy.functions.elementary.integers.ceiling

    References
    ===========

    .. [1] https://en.wikipedia.org/wiki/Fractional_part
    .. [2] https://mathworld.wolfram.com/FractionalPart.html

    c                ó¦  ‡ ‡— ddl mŠ ˆˆ fd„}t        j                  t        j                  }}t	        j
                  |«      D ]f  }|j                  st        j                  |z  j                  r6t        |«      }|j                  t        j                  «      s||z  }Œ\||z  }Œb||z  }Œh  ||«      } ||«      }|t        j                  |z  z   S )Nr   rw   c                ób  •— | t         j                  t         j                  fv r	 ‰dd«      S | j                  rt         j                  S | j
                  rR| t         j                  u rt         j                  S | t         j                  u rt         j                  S | t        | «      z
  S  ‰| d¬«      S r¦   )	r   r¨   r°   r$   r1   r3   r…   ÚComplexInfinityr7   )r:   rx   r9   s    €€r&   Ú_evalzfrac.eval.<locals>._eval%  s…   ø€ Ø”q—z‘z¤1×#5Ñ#5Ð6Ñ6Ù" 1 aÓ(Ð(Ø�~Š~Ü—v‘v�Ø�}Š}Øœ!Ÿ%™%‘<ÜŸ5™5�LØœA×-Ñ-Ñ-ÜŸ5™5�Là¤ s£Ñ+Ð+Ù�s UÔ+Ð+r(   )rƒ   rx   r   r1   r   r2   r-   r.   r/   r   r0   )r9   r:   rÕ   ÚrealÚimagrA   r<   rx   s   `      @r&   rC   z	frac.eval!  s¬   ù€ åAõ	,ô —V‘VœQŸV™VˆdˆÜ—‘˜sÓ#ò 
	ˆAð �~Š~¤!§/¡/°!Ñ"3×!<Ò!<Ü�q“E�Ø—u‘uœQŸ_™_Ô-Ø˜A‘I‘Dà˜A‘I‘Dà˜‘	‘ð
	ñ �T‹{ˆÙ�T‹{ˆØ”a—o‘o dÑ*Ñ*Ð*r(   c                ó   — |t        |«      z
  S r"   rÄ   rž   s      r&   rÅ   zfrac._eval_rewrite_as_floorD  s   € Ø”U˜3“ZÑÐr(   c                ó    — |t        | «      z   S r"   r�   rž   s      r&   r    zfrac._eval_rewrite_as_ceilingG  s   € Ø”W˜c˜T“]Ñ"Ð"r(   c                 ó   — y)NTrW   rH   s    r&   rJ   zfrac._eval_is_finiteJ  s   € Ør(   c                ó4   — | j                   d   j                  S rG   )r   Úis_extended_realrH   s    r&   rM   zfrac._eval_is_realM  s   € Ø�y‰y˜‰|×,Ñ,Ð,r(   c                ó4   — | j                   d   j                  S rG   )r   r-   rH   s    r&   Ú_eval_is_imaginaryzfrac._eval_is_imaginaryP  s   € Ø�y‰y˜‰|×(Ñ(Ð(r(   c                ó4   — | j                   d   j                  S rG   )r   r$   rH   s    r&   rP   zfrac._eval_is_integerS  s   € Ø�y‰y˜‰|×&Ñ&Ð&r(   c                óx   — t        | j                  d   j                  | j                  d   j                  g«      S rG   )r   r   rk   r$   rH   s    r&   Ú_eval_is_zerozfrac._eval_is_zeroV  s.   € Ü˜Ÿ™ 1™×-Ñ-¨t¯y©y¸©|×/FÑ/FÐGÓHÐHr(   c                 ó   — y)NFrW   rH   s    r&   r–   zfrac._eval_is_negativeY  s   € Ør(   c                ó°   — | j                   r=t        |«      }|j                  rt        j                  S | j                  |«      }|�| S t        | |d¬«      S ©NFr   )rÜ   r   Úis_extended_nonpositiver   r§   Ú_value_one_or_morer   ©rI   rª   Úress      r&   r±   zfrac.__ge__\  sQ   € Ø× Ò Ü˜U“OˆEà×,Ò,Ü—v‘v�à×)Ñ)¨%Ó0ˆCØˆØ�x�Ü�$˜¨Ô.Ð.r(   c                ó°   — | j                   r=t        |«      }| j                  |«      }|�| S |j                  rt        j
                  S t        | |d¬«      S rä   )rÜ   r   ræ   Úis_extended_negativer   r§   r   rç   s      r&   r³   zfrac.__gt__h  sQ   € Ø× Ò Ü˜U“OˆEà×)Ñ)¨%Ó0ˆCØˆØ�x�à×)Ò)Ü—v‘v�Ü�$˜¨Ô.Ð.r(   c                ó®   — | j                   r<t        |«      }|j                  rt        j                  S | j                  |«      }|�|S t        | |d¬«      S rä   )rÜ   r   rê   r   r¯   ræ   r   rç   s      r&   r«   zfrac.__le__t  sO   € Ø× Ò Ü˜U“OˆEà×)Ò)Ü—w‘w�à×)Ñ)¨%Ó0ˆCØˆØ�
Ü�$˜¨Ô.Ð.r(   c                ó®   — | j                   r<t        |«      }|j                  rt        j                  S | j                  |«      }|�|S t        | |d¬«      S rä   )rÜ   r   rå   r   r¯   ræ   r   rç   s      r&   rµ   zfrac.__lt__€  sO   € Ø× Ò Ü˜U“OˆEà×,Ò,Ü—w‘w�à×)Ñ)¨%Ó0ˆCØˆØ�
Ü�$˜¨Ô.Ð.r(   c                óÖ   — |j                   r]|j                  r'|dk\  }|r t        |t        «      st        j
                  S |j                  r|j                  rt        j
                  S y y y )Nr}   )rÜ   r3   r6   r   r   r§   r$   rl   rç   s      r&   ræ   zfrac._value_one_or_moreŒ  sW   € Ø×!Ò!Ø�ŠØ˜q‘j�Ùœz¨#¬zÔ:ÜŸ6™6�MØ×Ò E×$5Ò$5Ü—v‘v�ð %6Ðð "r(   c                óÐ  — ddl m} | j                  d   }|j                  |d«      }| j                  |d«      }|j                  rT|j
                  rF|j                  ||¬«      }|j                  rt        j                  S ||z
  j                  |||¬«      S |S |t        j                  t        j                  t        j                  fv r	 |dd«      S |j                  |||¬«      S )Nr   rw   r~   r�   r}   )rƒ   rx   r   r„   r,   rk   r|   rn   r   ro   r‡   rÔ   r¨   r°   rˆ   s	            r&   r‹   zfrac._eval_as_leading_term•  sÇ   € ÝAØ�i‰i˜‰lˆØ�x‰x˜˜1‹~ˆØ�I‰I�a˜‹Oˆà�>Š>Ø�yŠyØ—w‘w˜q t�wÓ,�Ø×#Ò#ÜŸ5™5�LØ˜d™
×3Ñ3°A¸DÀtÐ3ÓLÐLà�Ø”a×'Ñ'¬¯©´Q×5GÑ5GÐHÑHÙ˜q !Ó$Ð$Ø×"Ñ" 1¨4°dÐ"Ó;Ð;r(   c                óÖ  — ddl m} | j                  d   }|j                  |d«      }| j                  |d«      }|j                  r2ddlm}	 |dk  r |d|df«      }
|
S  |	dd«       |||z  |df«      z   }
|
S ||z
  j                  ||||¬«      }|j                  rH|j                  ||¬«      }||j                  rt        j                  z  }|S t        j                  z  }|S ||z  }|S )Nr   r�   rw   r}   r�   r~   )r�   rŽ   r   r„   r�   rƒ   rx   r‘   rk   r|   rn   r   ro   r1   )rI   r%   r“   r‚   r   rŽ   r:   r‰   rB   rx   r”   rè   rŠ   s                r&   r‘   zfrac._eval_nseries§  sù   € Ý,Ø�i‰i˜‰lˆØ�x‰x˜˜1‹~ˆØ�I‰I�a˜‹Oˆà×ÒÝEØ$%¨¢F‘�a˜!˜Q˜Ó ˆAØˆHñ 1<¸A¸qÓ0AÁEÈ!ÈQÉ$ÐQRÐTUÐPVÓDWÑ0WˆAØˆHà˜‘:×,Ñ,¨Q°¸À4Ð,ÓHˆCØ�yŠyØ—w‘w˜q t�wÓ,�Ø × 0Ò 0”q—u‘uÑ<�ð ˆJô 78·f±fÑ<�ð ˆJð �q‘�ØˆJr(   Nr¶   )rQ   rR   rS   rT   rV   rC   rÅ   r    rJ   rM   rÞ   rP   rá   r–   r±   r³   r«   rµ   ræ   r‹   r‘   rW   r(   r&   r£   r£   ð  si   „ ñ/ð` ñ +ó ð +òD ò#òò-ò)ò'òIòò
/ò
/ò
/ò
/òò<ô$r(   r£   c                ó¨   — | j                  t        «      |k(  s| j                  t        «      |k(  ry|j                  ry| j	                  |«      }|�yy )NTF)r¸   r7   r8   rê   ræ   )rº   r»   rè   s      r&   r¼   r¼   »  sP   € à�‰”EÓ˜cÒ!Ø	�‰”WÓ	 Ò	$Øà
×ÒØà
×
 Ñ
  Ó
%€CØ
€Øð r(   N))Ú
__future__r   Úsympy.core.basicr   Úsympy.core.exprr   Ú
sympy.corer   r   Úsympy.core.evalfr   r	   Úsympy.core.functionr
   Úsympy.core.logicr   r   Úsympy.core.numbersr   r   Úsympy.core.relationalr   r   r   r   r   r   r   r   Úsympy.core.sympifyr   Ú$sympy.functions.elementary.complexesr   r   Úsympy.multipledispatchr   r   r7   r¼   r8   r£   rW   r(   r&   ú<module>rý      s¾   ðÝ "å "Ý  ç ß AÝ /ß 0ß 2ß Q× QÓ QÝ 'ß 7Ý +ôI$�Oô I$ôX/ˆMô /ñD 
ˆ%�Óñ%ó ð%ô
/ˆmô /ñD 
ˆ'�5ÓñJó ðJôHˆ?ô HñV 
ˆ$�Óñ
ó ñ
r(   