ó
    ‰*£hzW  ã                  óv  • S SK Jr  S SKJr  S SKJr  S SKJrJr  S SK	J
r
Jr  S SKJr  S SKJrJr  S SKJrJr  S S	KJrJrJrJrJrJrJrJr  S S
KJr  S SKJ r J!r!  S SK"J#r#   " S S\5      r$ " S S\$5      r%\#" \%\5      S 5       r& " S S\$5      r'\#" \'\5      S 5       r& " S S\5      r(\#" \(\5      S 5       r&g)é    )Ú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                  óV   • \ rS rSr% SrS\S'   \S 5       r\S 5       rS r	S r
S	 rS
rg)ÚRoundFunctioné   z+Abstract base class for rounding functions.ztuple[Expr]Úargsc                óÈ  • U R                  U5      =nb  U$ U R                  U5      =nb  U$ UR                  (       d  UR                  SL a  U$ UR                  (       d"  [
        R                  U-  R                  (       aO  [        U5      nUR                  [
        R                  5      (       d  U " U5      [
        R                  -  $ U " USS9$ [
        R                  =n=pVS n[        R                  " U5       Hk  nUR                  (       a+  U" [        U5      5      =nb  XC[
        R                  -  -  nM?  U" U5      =nb  XC-  nMP  UR                  (       a  XX-  nMg  Xh-  nMm     U(       d	  U(       d  U$ U(       aÀ  U(       af  UR                  (       a3  UR                  (       dD  [
        R                  U-  R                  (       d"  UR                  (       ad  UR                  (       aS   [        XPR                  0 SS9u  p“U[!        U	5      [!        U5      [
        R                  -  -   -  n[
        R                  nXe-  nU(       d  U$ UR                  (       d"  [
        R                  U-  R                  (       a#  X@" [        U5      SS9[
        R                  -  -   $ ['        U[(        [*        45      (       a  XF-   $ X@" USS9-   $ ! ["        [$        4 a     N�f = f)NF©Úevaluatec                ób   • [        U 5      (       a  [        U 5      $ U R                  (       a  U $ S $ ©N)r   ÚintÚ
is_integer)Úxs    Ú`/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/functions/elementary/integers.pyÚ<lambda>Ú$RoundFunction.eval.<locals>.<lambda>-   s+   € ¤J¨q§M¡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'   ÚevalÚRoundFunction.eval   s>  € à×!Ñ! #Ó&Ð&ˆ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§}§}ðÜ'ØŸ8™8 R°Tñ;‘�àœ ›¤g¨a£j´·±Ñ&@Ñ@Ñ@�ÜŸ™�ð 	‰ˆÞØˆLØ××¤A§O¡O°EÑ$9×#B×#BØ˜3œr %›y°5Ñ9¼!¿/¹/ÑIÑIÐIÜ˜¤¤wÐ/×0Ñ0Ø‘=Ð à˜3˜u¨uÑ5Ñ5Ð5øô 'Ô(;Ð<ó Ùðús   Ç1AK ËK!Ë K!c                ó   • [        5       er#   )r7   ©r;   r<   s     r'   r,   ÚRoundFunction._eval_numberS   s   € ä!Ó#Ð#r*   c                ó4   • U R                   S   R                  $ ©Nr   )r   r.   ©Úselfs    r'   Ú_eval_is_finiteÚRoundFunction._eval_is_finiteW   s   € Ø�y‰y˜‰|×%Ñ%Ð%r*   c                ó4   • U R                   S   R                  $ rK   ©r   r1   rL   s    r'   Ú_eval_is_realÚRoundFunction._eval_is_realZ   ó   € Ø�y‰y˜‰|×#Ñ#Ð#r*   c                ó4   • U R                   S   R                  $ rK   rQ   rL   s    r'   Ú_eval_is_integerÚRoundFunction._eval_is_integer]   rT   r*   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__ÚclassmethodrE   r,   rN   rR   rV   Ú__static_attributes__rX   r*   r'   r   r      sA   ‡ Ù5à
Óàñ66ó ð66ðp ñ$ó ð$ò&ò$õ$r*   r   c                  ó|   • \ rS rSrSrSr\S 5       r\S 5       rS r	SS jr
S rS	 rS
 rS rS rS rS rS rSrg)r9   éa   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                óÎ   • UR                   (       a  UR                  5       $ [        S X* 4 5       5      (       a  U$ UR                  (       a  UR	                  [
        5      S   $ g )Nc              3  ó`   #   • U  H$  n[         [        4  H  n[        X5      v •  M     M&     g 7fr#   ©r9   r:   r8   ©Ú.0r>   Újs      r'   Ú	<genexpr>Ú%floor._eval_number.<locals>.<genexpr>‹   ó1   é € ð @Ú$�A¬u´gÔ.>¨ô ˜!×ÐÙ.>ñ  Ú$ùó   ‚,.r   )Ú	is_Numberr9   ÚanyÚis_NumberSymbolÚapproximation_intervalr   rH   s     r'   r,   Úfloor._eval_number‡   s`   € à�=�=Ø—9‘9“;ÐÜñ @Ø˜t™ó@÷ @ñ @àˆJØ××Ø×-Ñ-¬gÓ6°qÑ9Ð9ð r*   c                óÆ  • UR                   (       GaO  UR                  (       a  [        R                  $ UR                  (       a†  UR                  5       u  p#UR                  nUc  g U(       a  U* U* p2[        X#5      (       a  [        R                  $ [        [        X25      [        USU-  5      /5      (       a  [        R                  $ UR                  (       a…  UR                  5       u  p#UR                  nUc  g U(       a  U* U* p2[        U* U5      (       a  [        R                  $ [        [        SU-  U5      [        X#* 5      /5      (       a  [        S5      $ g g g ©Né   éþÿÿÿ)r1   Úis_zeror   r3   Úis_positiveÚas_numer_denomÚis_negativer   r   r   ÚOneÚNegativeOner   ©r;   r<   ÚnumÚdenÚss        r'   r-   Úfloor._eval_const_number‘   s  € à�;�;ˆ;Ø�{�{Ü—v‘v�Ø��Ø×-Ñ-Ó/‘�Ø—O‘O�Ø‘9ØÞØ #˜t c T˜ä˜—?‘?ÜŸ6™6�Mäœe C›o¬u°S¸!¸C¹%Ó/@ÐA×BÑBÜŸ5™5�LØ��Ø×-Ñ-Ó/‘�Ø—O‘O�Ø‘9ØÞØ #˜t c T˜ä˜#˜˜s×#Ñ#ÜŸ=™=Ð(äœe B s¡F¨CÓ0´%¸¸TÓ2BÐC×DÑDÜ" 2›;Ð&ð Eð ð! r*   c                ó  • SSK Jn  U R                  S   nUR                  US5      nU R                  US5      nU[        R
                  L d  [        Xd5      (       a8  UR                  US[        U5      R                  (       a  SOSS9n[        U5      nUR                  (       aU  Xg:X  aN  UR                  XS:w  a  UOSS9nUR                  (       a  US-
  $ UR                  (       a  U$ [        SU-  5      eU$ UR                  XUS	9$ ©
Nr   ©ÚAccumBoundsÚ-Ú+©Údiré   ©ÚcdirúNot sure of sign of %s©ÚlogxrŒ   )Ú!sympy.calculus.accumulationboundsr…   r   Úsubsr   ÚNaNr8   Úlimitr   rz   r9   r.   r‰   rx   r7   Úas_leading_term©	rM   r&   r�   rŒ   r…   r<   Úarg0rD   Úndirs	            r'   Ú_eval_as_leading_termÚ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‘9˜Q ¬b°«h×.B×.B¡sÈ�9ÐLˆDÜ�d“ˆAØ�>�>Ø‹yØ—w‘w˜q°q«y¡t¸a�wÐ@�Ø×#×#Ø˜q™5�LØ×%×%Ø�Hä-Ð.FÈÑ.MÓNÐNà�Ø×"Ñ" 1°dÐ"Ð;Ð;r*   c                óB  • U R                   S   nUR                  US5      nU R                  US5      nU[        R                  L a8  UR	                  US[        U5      R                  (       a  SOSS9n[        U5      nUR                  (       a<  SSK	J
n  SSKJn	  UR                  XX45      n
US::  a  U	" SUS45      OU" SS5      nX«-   $ Xg:X  aN  UR                  XS:w  a  UOSS	9nUR                  (       a  US-
  $ UR                  (       a  U$ [!        S
U-  5      eU$ )Nr   r†   r‡   rˆ   r„   ©ÚOrderrŠ   rc   r‹   r�   )r   r‘   r   r’   r“   r   rz   r9   Úis_infiniter�   r…   Úsympy.series.orderrœ   Ú_eval_nseriesr‰   rx   r7   ©rM   r&   Únr�   rŒ   r<   r–   rD   r…   rœ   r€   Úor—   s                r'   rŸ   Ú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Ø×!Ñ! !¨Ó3ˆAØ$%¨£F‘�a˜!˜Q˜Ô ±¸BÀÓ0BˆAØ‘5ˆLØ‹9Ø—7‘7˜1°1«9¡4¸!�7Ð<ˆDØ××Ø˜1‘u�Ø×!×!Ø�ä)Ð*BÀTÑ*IÓJÐJàˆHr*   c                ó4   • U R                   S   R                  $ rK   )r   rz   rL   s    r'   Ú_eval_is_negativeÚfloor._eval_is_negativeÞ   ó   € Ø�y‰y˜‰|×'Ñ'Ð'r*   c                ó4   • U R                   S   R                  $ rK   )r   Úis_nonnegativerL   s    r'   Ú_eval_is_nonnegativeÚfloor._eval_is_nonnegativeá   ó   € Ø�y‰y˜‰|×*Ñ*Ð*r*   c                ó   • [        U* 5      * $ r#   ©r:   ©rM   r<   Úkwargss      r'   Ú_eval_rewrite_as_ceilingÚfloor._eval_rewrite_as_ceilingä   s   € Ü˜˜“ˆ~Ðr*   c                ó   • U[        U5      -
  $ r#   ©Úfracr¯   s      r'   Ú_eval_rewrite_as_fracÚfloor._eval_rewrite_as_fracç   s   € Ø”T˜#“Y‰Ðr*   c                óþ  • [        U5      nU R                  S   R                  (       ac  UR                  (       a  U R                  S   US-   :  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :  $ U R                  S   U:X  a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ ©Nr   rŠ   Fr    )
r   r   r1   r%   r5   r:   ÚtrueÚInfinityr.   r   ©rM   Úothers     r'   Ú__le__Ú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                ó  • [        U5      nU R                  S   R                  (       a`  UR                  (       a  U R                  S   U:¬  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :¬  $ U R                  S   U:X  a2  UR                  (       a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ ©Nr   Fr    )r   r   r1   r%   r5   r:   Úis_nonintegerÚfalseÚNegativeInfinityr.   rº   r   r¼   s     r'   Ú__ge__Ú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                óþ  • [        U5      nU R                  S   R                  (       ac  UR                  (       a  U R                  S   US-   :¬  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :¬  $ U R                  S   U:X  a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ r¹   )r   r   r1   r%   r5   r:   rÃ   rÄ   r.   rº   r   r¼   s     r'   Ú__gt__Ú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                ó  • [        U5      nU R                  S   R                  (       a`  UR                  (       a  U R                  S   U:  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :  $ U R                  S   U:X  a2  UR                  (       a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ rÁ   )r   r   r1   r%   r5   r:   rÂ   rº   r»   r.   r   r¼   s     r'   Ú__lt__Ú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*   rX   N©r   )rY   rZ   r[   r\   r]   r6   r_   r,   r-   r˜   rŸ   r¥   rª   r±   r¶   r¾   rÅ   rÈ   rË   r`   rX   r*   r'   r9   r9   a   sg   † ñ"ðF €Dàñ:ó ð:ð ñ'ó ð'ò><ô*ò0(ò+òòò/ò/ò/õ/r*   r9   c                óŒ   • [        U R                  [        5      U5      =(       d    [        U R                  [        5      U5      $ r#   )r   Úrewriter:   rµ   ©ÚlhsÚrhss     r'   Ú_eval_is_eqrÓ   #  s2   € ä�—‘œWÓ% sÓ+÷ %Üˆc�k‰kœ$Ó Ó$ð%r*   c                  ó|   • \ rS rSrSrSr\S 5       r\S 5       rS r	SS jr
S rS	 rS
 rS rS rS rS rS rSrg)r:   i)  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                óÎ   • UR                   (       a  UR                  5       $ [        S X* 4 5       5      (       a  U$ UR                  (       a  UR	                  [
        5      S   $ g )Nc              3  ó`   #   • U  H$  n[         [        4  H  n[        X5      v •  M     M&     g 7fr#   rf   rg   s      r'   rj   Ú'ceiling._eval_number.<locals>.<genexpr>S  rl   rm   rŠ   )rn   r:   ro   rp   rq   r   rH   s     r'   r,   Úceiling._eval_numberO  s`   € à�=�=Ø—;‘;“=Ð Üñ @Ø˜t™ó@÷ @ñ @àˆJØ××Ø×-Ñ-¬gÓ6°qÑ9Ð9ð r*   c                óÆ  • UR                   (       GaO  UR                  (       a  [        R                  $ UR                  (       a�  UR                  5       u  p#UR                  nUc  g U(       a  U* U* p2[        X#5      (       a  [        R                  $ [        [        X25      [        USU-  5      /5      (       a  [        S5      $ UR                  (       aŠ  UR                  5       u  p#UR                  nUc  g U(       a  U* U* p2[        U* U5      (       a  [        R                  $ [        [        SU-  U5      [        X#* 5      /5      (       a  [        R                  $ g g g rt   )r1   rw   r   r3   rx   ry   rz   r   r{   r   r   r   r|   r}   s        r'   r-   Úceiling._eval_const_numberY  s  € à�;�;ˆ;Ø�{�{Ü—v‘v�Ø��Ø×-Ñ-Ó/‘�Ø—O‘O�Ø‘9ØÞØ #˜t c T˜ä˜—?‘?ÜŸ5™5�Läœe C›o¬u°S¸!¸C¹%Ó/@ÐA×BÑBÜ" 1›:Ð%Ø��Ø×-Ñ-Ó/‘�Ø—O‘O�Ø‘9ØÞØ #˜t c T˜ä˜#˜˜s×#Ñ#ÜŸ6™6�Mäœe B s¡F¨CÓ0´%¸¸TÓ2BÐC×DÑDÜŸ=™=Ð(ð Eð ð! r*   c                ó  • SSK Jn  U R                  S   nUR                  US5      nU R                  US5      nU[        R
                  L d  [        Xd5      (       a8  UR                  US[        U5      R                  (       a  SOSS9n[        U5      nUR                  (       aU  Xg:X  aN  UR                  XS:w  a  UOSS9nUR                  (       a  U$ UR                  (       a  US-   $ [        SU-  5      eU$ UR                  XUS	9$ rƒ   )r�   r…   r   r‘   r   r’   r8   r“   r   rz   r:   r.   r‰   rx   r7   r”   r•   s	            r'   r˜   Ú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‘9˜Q ¬b°«h×.B×.B¡sÈ�9ÐLˆDÜ˜“ˆAØ�>�>Ø‹yØ—w‘w˜q°q«y¡t¸a�wÐ@�Ø×#×#Ø�HØ×%×%Ø˜q™5�Lä-Ð.FÈÑ.MÓNÐNà�Ø×"Ñ" 1°dÐ"Ð;Ð;r*   c                óB  • U R                   S   nUR                  US5      nU R                  US5      nU[        R                  L a8  UR	                  US[        U5      R                  (       a  SOSS9n[        U5      nUR                  (       a<  SSK	J
n  SSKJn	  UR                  XX45      n
US::  a  U	" SUS45      OU" SS5      nX«-   $ Xg:X  aN  UR                  XS:w  a  UOSS9nUR                  (       a  U$ UR                  (       a  US-   $ [!        S	U-  5      eU$ )
Nr   r†   r‡   rˆ   r„   r›   rŠ   r‹   r�   )r   r‘   r   r’   r“   r   rz   r:   r�   r�   r…   rž   rœ   rŸ   r‰   rx   r7   r    s                r'   rŸ   Ú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Ø×!Ñ! !¨Ó3ˆAØ$%¨£F‘�a˜!˜Q˜Ô ±¸A¸qÓ0AˆAØ‘5ˆLØ‹9Ø—7‘7˜1°1«9¡4¸!�7Ð<ˆDØ××Ø�Ø×!×!Ø˜1‘u�ä)Ð*BÀTÑ*IÓJÐJàˆHr*   c                ó   • [        U* 5      * $ r#   ©r9   r¯   s      r'   Ú_eval_rewrite_as_floorÚceiling._eval_rewrite_as_floor¦  s   € Ü�s�d“ˆ|Ðr*   c                ó    • U[        U* 5      -   $ r#   r´   r¯   s      r'   r¶   Úceiling._eval_rewrite_as_frac©  s   € Ø”T˜3˜$“ZÑÐr*   c                ó4   • U R                   S   R                  $ rK   )r   rx   rL   s    r'   Ú_eval_is_positiveÚceiling._eval_is_positive¬  r§   r*   c                ó4   • U R                   S   R                  $ rK   )r   Úis_nonpositiverL   s    r'   Ú_eval_is_nonpositiveÚceiling._eval_is_nonpositive¯  r¬   r*   c                óþ  • [        U5      nU R                  S   R                  (       ac  UR                  (       a  U R                  S   US-
  :*  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :*  $ U R                  S   U:X  a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ r¹   )r   r   r1   r%   r5   r9   rÃ   r»   r.   rº   r   r¼   s     r'   rË   Ú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                ó  • [        U5      nU R                  S   R                  (       a`  UR                  (       a  U R                  S   U:„  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :„  $ U R                  S   U:X  a2  UR                  (       a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ rÁ   )r   r   r1   r%   r5   r9   rÂ   rº   rÄ   r.   r   r¼   s     r'   rÈ   Ú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                óþ  • [        U5      nU R                  S   R                  (       ac  UR                  (       a  U R                  S   US-
  :„  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :„  $ U R                  S   U:X  a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ r¹   )
r   r   r1   r%   r5   r9   rº   rÄ   r.   r   r¼   s     r'   rÅ   Ú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                ó  • [        U5      nU R                  S   R                  (       a`  UR                  (       a  U R                  S   U:*  $ UR                  (       a,  UR                  (       a  U R                  S   [        U5      :*  $ U R                  S   U:X  a2  UR                  (       a!  UR                  (       a  [         R                  $ U[         R                  L a!  U R                  (       a  [         R                  $ [        XSS9$ rÁ   )r   r   r1   r%   r5   r9   rÂ   rÃ   r»   r.   rº   r   r¼   s     r'   r¾   Ú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*   rX   NrÍ   )rY   rZ   r[   r\   r]   r6   r_   r,   r-   r˜   rŸ   rá   r¶   ræ   rê   rË   rÈ   rÅ   r¾   r`   rX   r*   r'   r:   r:   )  sg   † ñ"ðF €Dàñ:ó ð:ð ñ)ó ð)ò><ô*ò0ò ò(ò+ò/ò/ò/õ/r*   r:   c                óŒ   • [        U R                  [        5      U5      =(       d    [        U R                  [        5      U5      $ r#   )r   rÏ   r9   rµ   rÐ   s     r'   rÓ   rÓ   ë  s-   € ä�—‘œUÓ# SÓ)×I¬U°3·;±;¼tÓ3DÀSÓ-IÐIr*   c                  ó†   • \ rS rSrSr\S 5       rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rSS jrSrg)rµ   ið  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                óÈ  ^ ^• SSK Jm  UU 4S jn[        R                  [        R                  pC[        R
                  " U5       Hu  nUR                  (       d"  [        R                  U-  R                  (       a;  [        U5      nUR                  [        R                  5      (       d  XF-  nMk  X5-  nMq  X5-  nMw     U" U5      nU" U5      nU[        R                  U-  -   $ )Nr   r„   c                óx  >• U [         R                  [         R                  4;   a	  T" SS5      $ U R                  (       a  [         R                  $ U R
                  (       aT  U [         R                  L a  [         R                  $ U [         R                  L a  [         R                  $ U [        U 5      -
  $ T" U SS9$ r¹   )	r   r»   rÄ   r%   r3   r5   r’   ÚComplexInfinityr9   )r<   r…   r;   s    €€r'   Ú_evalÚ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�   r…   r   r3   r   r4   r/   r0   r1   r   r2   )r;   r<   rù   ÚrealÚimagrC   r>   r…   s   `      @r'   rE   Ú	frac.eval!  s¢   ù€ åAö	,ô —V‘VœQŸV™VˆdÜ—’˜sÖ#ˆAð �~�~¤!§/¡/°!Ñ"3×!<×!<Ü�q“E�Ø—u‘uœQŸ_™_×-Ñ-Ø‘I’Dà‘I’Dà‘	’ñ $ñ �T‹{ˆÙ�T‹{ˆØ”a—o‘o dÑ*Ñ*Ð*r*   c                ó   • U[        U5      -
  $ r#   rà   r¯   s      r'   rá   Úfrac._eval_rewrite_as_floorD  s   € Ø”U˜3“ZÑÐr*   c                ó    • U[        U* 5      -   $ r#   r®   r¯   s      r'   r±   Úfrac._eval_rewrite_as_ceilingG  s   € Ø”W˜c˜T“]Ñ"Ð"r*   c                ó   • g)NTrX   rL   s    r'   rN   Úfrac._eval_is_finiteJ  s   € Ør*   c                ó4   • U R                   S   R                  $ rK   )r   Úis_extended_realrL   s    r'   rR   Úfrac._eval_is_realM  s   € Ø�y‰y˜‰|×,Ñ,Ð,r*   c                ó4   • U R                   S   R                  $ rK   )r   r/   rL   s    r'   Ú_eval_is_imaginaryÚfrac._eval_is_imaginaryP  s   € Ø�y‰y˜‰|×(Ñ(Ð(r*   c                ó4   • U R                   S   R                  $ rK   )r   r%   rL   s    r'   rV   Úfrac._eval_is_integerS  s   € Ø�y‰y˜‰|×&Ñ&Ð&r*   c                óx   • [        U R                  S   R                  U R                  S   R                  /5      $ rK   )r   r   rw   r%   rL   s    r'   Ú_eval_is_zeroÚfrac._eval_is_zeroV  s.   € Ü˜Ÿ™ 1™×-Ñ-¨t¯y©y¸©|×/FÑ/FÐGÓHÐHr*   c                ó   • g)NFrX   rL   s    r'   r¥   Úfrac._eval_is_negativeY  s   € Ør*   c                óÆ   • U R                   (       aG  [        U5      nUR                  (       a  [        R                  $ U R                  U5      nUb  U(       + $ [        XSS9$ ©NFr    )r  r   Úis_extended_nonpositiver   rº   Ú_value_one_or_morer   ©rM   r½   Úress      r'   rÅ   Úfrac.__ge__\  sO   € Ø× × Ü˜U“OˆEà×,×,Ü—v‘v�à×)Ñ)¨%Ó0ˆCØ‰Ø”x�Ü�$¨Ñ.Ð.r*   c                óÆ   • U R                   (       aG  [        U5      nU R                  U5      nUb  U(       + $ UR                  (       a  [        R
                  $ [        XSS9$ r  )r  r   r  Úis_extended_negativer   rº   r   r  s      r'   rÈ   Úfrac.__gt__h  sO   € Ø× × Ü˜U“OˆEà×)Ñ)¨%Ó0ˆCØ‰Ø”x�à×)×)Ü—v‘v�Ü�$¨Ñ.Ð.r*   c                ó¼   • U R                   (       aB  [        U5      nUR                  (       a  [        R                  $ U R                  U5      nUb  U$ [        XSS9$ r  )r  r   r  r   rÃ   r  r   r  s      r'   r¾   Úfrac.__le__t  sM   € Ø× × Ü˜U“OˆEà×)×)Ü—w‘w�à×)Ñ)¨%Ó0ˆCØ‰Ø�
Ü�$¨Ñ.Ð.r*   c                ó¼   • U R                   (       aB  [        U5      nUR                  (       a  [        R                  $ U R                  U5      nUb  U$ [        XSS9$ r  )r  r   r  r   rÃ   r  r   r  s      r'   rË   Úfrac.__lt__€  sM   € Ø× × Ü˜U“OˆEà×,×,Ü—w‘w�à×)Ñ)¨%Ó0ˆCØ‰Ø�
Ü�$¨Ñ.Ð.r*   c                ó  • UR                   (       av  UR                  (       a1  US:¬  nU(       a%  [        U[        5      (       d  [        R
                  $ UR                  (       a"  UR                  (       a  [        R
                  $ g g g )NrŠ   )r  r5   r8   r   r   rº   r%   rx   r  s      r'   r  Úfrac._value_one_or_moreŒ  sZ   € Ø×!×!Ø��Ø˜q‘j�Þœz¨#¬z×:Ñ:ÜŸ6™6�MØ×× E×$5×$5Ü—v‘v�ð %6Ðð "r*   c                óØ  • SSK Jn  U R                  S   nUR                  US5      nU R                  US5      nUR                  (       aU  UR
                  (       aB  UR                  XS9nUR                  (       a  [        R                  $ XV-
  R                  XUS9$ U$ U[        R                  [        R                  [        R                  4;   a	  U" SS5      $ UR                  XUS9$ )Nr   r„   r‹   rŽ   rŠ   )r�   r…   r   r‘   r.   rw   r‰   rz   r   r{   r”   rø   r»   rÄ   r•   s	            r'   r˜   Úfrac._eval_as_leading_term•  s¿   € ÝAØ�i‰i˜‰lˆØ�x‰x˜˜1‹~ˆØ�I‰I�a˜‹Oˆà�>�>Ø�y�yØ—w‘w˜q�wÐ,�Ø×#×#ÜŸ5™5�LØ™
×3Ñ3°AÀtÐ3ÐLÐLà�Ø”a×'Ñ'¬¯©´Q×5GÑ5GÐHÓHÙ˜q !Ó$Ð$Ø×"Ñ" 1°dÐ"Ð;Ð;r*   c                óÔ  • SSK Jn  U R                  S   nUR                  US5      nU R                  US5      nUR                  (       a2  SSKJn	  US::  a  U" SUS45      n
U
$ U	" SS5      U" X-  US45      -   n
U
$ Xg-
  R                  XX4S9nUR                  (       aD  UR                  XS9nX¼R                  (       a  [        R                  O[        R                  -  nU$ X¸-  nU$ )Nr   r›   r„   rŠ   rŽ   r‹   )rž   rœ   r   r‘   r�   r�   r…   rŸ   rw   r‰   rz   r   r{   r3   )rM   r&   r¡   r�   rŒ   rœ   r<   r–   rD   r…   r¢   r  r—   s                r'   rŸ   Ú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È!É$ÐQRÐTUÐPVÓDWÑ0WˆAØˆHà‘:×,Ñ,¨Q¸Ð,ÐHˆCØ�y�yØ—w‘w˜q�wÐ,�Ø× 0× 0”q—u’u´a·f±fÑ<�ð ˆJð ‘�ØˆJr*   rX   NrÍ   )rY   rZ   r[   r\   r]   r_   rE   rá   r±   rN   rR   r  rV   r  r¥   rÅ   rÈ   r¾   rË   r  r˜   rŸ   r`   rX   r*   r'   rµ   rµ   ð  si   † ñ/ð` ñ +ó ð +òD ò#òò-ò)ò'òIòò
/ò
/ò
/ò
/òò<÷$r*   rµ   c                ó¸   • U R                  [        5      U:X  d  U R                  [        5      U:X  a  gUR                  (       a  gU R	                  U5      nUb  gg )NTF)rÏ   r9   r:   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   r9   rÓ   r:   rµ   rX   r*   r'   Ú<module>r2     s¾   ðÝ "å "Ý  ç ß AÝ /ß 0ß 2ß Q× QÓ QÝ 'ß 7Ý +ôI$�Oô I$ôX/ˆMô /ñD 
ˆ%�Óñ%ó ð%ô
/ˆmô /ñD 
ˆ'�5ÓñJó ðJôHˆ?ô HñV 
ˆ$�Óñ
ó ñ
r*   