§
    «³ÙgÎM  ã                   ó¨  — 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 d dlmZmZ d d	l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$dS )é    )ÚTuple)ÚBasic)ÚExpr)ÚAddÚS)Úget_integer_partÚPrecisionExhausted)ÚFunction)Úfuzzy_or)ÚIntegerÚ
int_valued)ÚGtÚLtÚGeÚLeÚ
RelationalÚis_eq)Ú_sympify)ÚimÚre)Údispatchc                   óh   — e Zd ZU dZee         ed<   ed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zd„ ZdS )	ÚRoundFunctionz+Abstract base class for rounding functions.Úargsc                 óŠ  — |                       |¦  «        }|�|S |j        s	|j        du r|S |j        st          j        |z  j        rSt          |¦  «        }|                     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  }Œ6 ||¦  «        x}�||z  }ŒI|j        r||z  }ŒV||z  }Œ\|s|s|S |r¡|r0|j        r|j        s"t          j        |z  j        s|j        rv|j        ro	 t          || j        i d¬¦  «        \  }	}|t          |	¦  «        t          |¦  «        t          j        z  z   z  }t          j	        }n# t           t"          f$ r Y nw xY w||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 )NF©Úevaluatec                 óT   — t          | ¦  «        rt          | ¦  «        n
| j        r| nd S ©N)r   ÚintÚ
is_integer)Úxs    úY/granary/edev/quantum/lib/python3.11/site-packages/sympy/functions/elementary/integers.pyú<lambda>z$RoundFunction.eval.<locals>.<lambda>,   s,   € ¥J¨q¡M¤Mð )�#˜a™&œ&˜&Ø”Ð'ˆAˆA 4ð ó    T)Úreturn_ints)Ú_eval_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   sÀ  € à×Ò˜SÑ!Ô!ˆØˆ=ØˆHàŒ>ð 	˜Sœ]¨eÐ3Ð3ØˆJØÔð 	,¥¤°Ñ 3Ô<ð 	,Ý�3‘”ˆAØ—5’5�œÑ)Ô)ð .Ø�s˜1‘v”v�aœoÑ-Ð-Ø�3�s UÐ+Ñ+Ô+Ð+õ !"¤Ð&ˆÐ&�˜ð)ð )ˆå”˜sÑ#Ô#ð 	ð 	ˆAØŒ~ð ¨¨­b°©e¬e©¬Ð#4 1Ð"AØ˜�1œ?Ñ*Ñ*��Ø�u˜Q‘x”x�-�!Ð,Ø˜‘
��Ø”ð Ø˜‘
��à˜‘
��àð 	˜ð 	ØˆLð ð 
	Øð
	àŒMð
	à$Ô1ð
	å67´oÀeÑ6KÔ5Tð
	ð Ô"ð
	ð (-¤}ð
	ðÝ'Ø˜3œ8 R°Tð;ñ ;ô ;‘��1à� ™œ¥g¨a¡j¤jµ´Ñ&@Ñ@Ñ@�Ýœ��øÝ&Õ(;Ð<ð ð ð Ø�ðøøøð 	�‰ˆØð 	6ØˆLØÔð 	6¥A¤O°EÑ$9Ô#Bð 	6Ø˜3˜3�r %™yœy°5Ð9Ñ9Ô9½!¼/ÑIÑIÐIÝ˜¥¥wÐ/Ñ0Ô0ð 	6Ø˜5‘=Ð à˜3˜3˜u¨uÐ5Ñ5Ô5Ñ5Ð5s   ÅAF/ Æ/GÇGc                 ó   — t          ¦   «         ‚r   )r1   ©r5   r6   s     r#   r'   zRoundFunction._eval_numberR   s   € å!Ñ#Ô#Ð#r%   c                 ó&   — | j         d         j        S ©Nr   )r   r(   ©Úselfs    r#   Ú_eval_is_finitezRoundFunction._eval_is_finiteV   s   € ØŒy˜Œ|Ô%Ð%r%   c                 ó&   — | j         d         j        S rC   ©r   r+   rD   s    r#   Ú_eval_is_realzRoundFunction._eval_is_realY   ó   € ØŒy˜Œ|Ô#Ð#r%   c                 ó&   — | j         d         j        S rC   rH   rD   s    r#   Ú_eval_is_integerzRoundFunction._eval_is_integer\   rJ   r%   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚtTupler   Ú__annotations__Úclassmethodr?   r'   rF   rI   rL   © r%   r#   r   r      sŽ   € € € € € € Ø5Ð5à
�Œ,ÐÐÑàð56ð 56ñ „[ð56ðn ð$ð $ñ „[ð$ð&ð &ð &ð$ð $ð $ð$ð $ð $ð $ð $r%   r   c                   ól   — e Zd ZdZdZed„ ¦   «         Zdd„Zdd„Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r3   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|                     ¦   «         S t          d„ || fD ¦   «         ¦  «        r|S |j        r |                     t
          ¦  «        d         S d S )Nc              3   óX   K  — | ]%}t           t          fD ]}t          ||¦  «        V — ŒŒ&d S r   ©r3   r4   r2   ©Ú.0r8   Újs      r#   ú	<genexpr>z%floor._eval_number.<locals>.<genexpr>Š   ód   è è € ð @ð @Ø­uµgÐ.>ð@ð @Ø)*õ ˜A˜qÑ!Ô!ð @ð @ð @ð @ð @ð @ð @r%   r   )Ú	is_Numberr3   ÚanyÚis_NumberSymbolÚapproximation_intervalr   rA   s     r#   r'   zfloor._eval_number†   sˆ   € àŒ=ð 	Ø—9’9‘;”;ÐÝð @ð @Ø ˜t˜ð@ñ @ô @ñ @ô @ð 	àˆJØÔð 	:Ø×-Ò-­gÑ6Ô6°qÔ9Ð9ð	:ð 	:r%   Nr   c                 ó  — ddl m} | j        d         }|                     |d¦  «        }|                      |d¦  «        }|t          j        u st          ||¦  «        r=|                     |dt          |¦  «        j	        rdnd¬¦  «        }t          |¦  «        }|j        rN||k    rF|                     ||dk    r|nd¬¦  «        }|j	        r|dz
  S |j        r|S t          d|z  ¦  «        ‚|S |                     |||¬	¦  «        S ©
Nr   ©ÚAccumBoundsú-ú+©Údiré   ©ÚcdirúNot sure of sign of %s©Úlogxrm   )Ú!sympy.calculus.accumulationboundsrf   r   Úsubsr   ÚNaNr2   Úlimitr   Úis_negativer3   r(   rj   Úis_positiver1   Úas_leading_term©	rE   r"   rp   rm   rf   r6   Úarg0r>   Úndirs	            r#   Ú_eval_as_leading_termzfloor._eval_as_leading_term�   s  € ØAÐAÐAÐAÐAÐAØŒi˜ŒlˆØ�xŠx˜˜1‰~Œ~ˆØ�IŠI�a˜‰OŒOˆØ•1”5ˆ=ˆ=�J t¨[Ñ9Ô9ˆ=Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDÝ�d‘”ˆAØŒ>ð 
	Ø�qŠyˆyØ—w’w˜q¨t°qªy¨y t t¸a�wÑ@Ô@�ØÔ#ð OØ˜q™5�LØÔ%ð OØ�Hå-Ð.FÈÑ.MÑNÔNÐNà�Ø×"Ò" 1¨4°dÐ"Ñ;Ô;Ð;r%   c                 óF  — | j         d         }|                     |d¦  «        }|                      |d¦  «        }|t          j        u r=|                     |dt          |¦  «        j        rdnd¬¦  «        }t          |¦  «        }|j        rIddl	m
} ddlm}	 |                     ||||¦  «        }
|dk    r |	d|df¦  «        n |dd¦  «        }|
|z   S ||k    rF|                     ||dk    r|nd¬	¦  «        }|j        r|dz
  S |j        r|S t!          d
|z  ¦  «        ‚|S )Nr   rg   rh   ri   re   ©ÚOrderrk   rV   rl   rn   )r   rr   r   rs   rt   r   ru   r3   Úis_infiniterq   rf   Úsympy.series.orderr~   Ú_eval_nseriesrj   rv   r1   ©rE   r"   Únrp   rm   r6   ry   r>   rf   r~   ÚsÚorz   s                r#   r�   zfloor._eval_nseries¥   sV  € ØŒi˜ŒlˆØ�xŠx˜˜1‰~Œ~ˆØ�IŠI�a˜‰OŒOˆØ•1”5ˆ=ˆ=Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDÝ�d‘”ˆAØÔð 	ØEÐEÐEÐEÐEÐEØ0Ð0Ð0Ð0Ð0Ð0Ø×!Ò! ! Q¨¨dÑ3Ô3ˆAØ$%¨¢F F���a˜!˜Q˜Ñ Ô Ð °°¸BÀÑ0BÔ0BˆAØ�q‘5ˆLØ�1Š9ˆ9Ø—7’7˜1¨4°1ª9¨9 4 4¸!�7Ñ<Ô<ˆDØÔð KØ˜1‘u�ØÔ!ð KØ�å)Ð*BÀTÑ*IÑJÔJÐJàˆHr%   c                 ó&   — | j         d         j        S rC   )r   ru   rD   s    r#   Ú_eval_is_negativezfloor._eval_is_negative½   ó   € ØŒy˜Œ|Ô'Ð'r%   c                 ó&   — | j         d         j        S rC   )r   Úis_nonnegativerD   s    r#   Ú_eval_is_nonnegativezfloor._eval_is_nonnegativeÀ   ó   € ØŒy˜Œ|Ô*Ð*r%   c                 ó$   — t          | ¦  «         S r   ©r4   ©rE   r6   Ú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”Y‰Ðr%   c                 ó€  — t          |¦  «        }| j        d         j        rG|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   rk   Fr   )
r   r   r+   r!   r/   r4   ÚtrueÚInfinityr(   r   ©rE   Úothers     r#   Ú__le__zfloor.__le__É   s·   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	5ØÔð 0Ø”y ”| e¨a¡iÒ/Ð/ØŒð 5 5¤=ð 5Ø”y ”|¥g¨e¡n¤nÒ4Ð4ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”6ˆMØ•A”JÐÐ 4¤>ÐÝ”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   c                 óz  — t          |¦  «        }| j        d         j        rD|j        r| j        d         |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   Fr   )r   r   r+   r!   r/   r4   ÚfalseÚNegativeInfinityr(   r˜   r   rš   s     r#   Ú__ge__zfloor.__ge__×   s´   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	6ØÔð -Ø”y ”| uÒ,Ð,ØŒð 6 5¤=ð 6Ø”y ”|¥w¨u¡~¤~Ò5Ð5ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”7ˆNØ•AÔ&Ð&Ð&¨4¬>Ð&Ý”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   c                 ó€  — t          |¦  «        }| j        d         j        rG|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!   r/   r4   rŸ   r    r(   r˜   r   rš   s     r#   Ú__gt__zfloor.__gt__å   s¸   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	6ØÔð 1Ø”y ”| u¨q¡yÒ0Ð0ØŒð 6 5¤=ð 6Ø”y ”|¥w¨u¡~¤~Ò5Ð5ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”7ˆNØ•AÔ&Ð&Ð&¨4¬>Ð&Ý”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   c                 óz  — t          |¦  «        }| j        d         j        rD|j        r| j        d         |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!   r/   r4   rŸ   r™   r(   r˜   r   rš   s     r#   Ú__lt__zfloor.__lt__ó   s³   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	5ØÔð ,Ø”y ”| eÒ+Ð+ØŒð 5 5¤=ð 5Ø”y ”|¥g¨e¡n¤nÒ4Ð4ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”7ˆNØ•A”JÐÐ 4¤>ÐÝ”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   rC   ©r   )rM   rN   rO   rP   r0   rS   r'   r{   r�   r‡   r‹   r‘   r•   rœ   r¡   r£   r¥   rT   r%   r#   r3   r3   `   sß   € € € € € ð"ð "ðF €Dàð:ð :ñ „[ð:ð<ð <ð <ð <ð*ð ð ð ð0(ð (ð (ð+ð +ð +ðð ð ðð ð ð/ð /ð /ð/ð /ð /ð/ð /ð /ð/ð /ð /ð /ð /r%   r3   c                 ó¢   — t          |                      t          ¦  «        |¦  «        p't          |                      t          ¦  «        |¦  «        S r   )r   Úrewriter4   r”   ©ÚlhsÚrhss     r#   Ú_eval_is_eqr¬     s>   € å
�—’�GÑ$Ô$ cÑ
*Ô
*ð %Ýˆc�kŠk�$ÑÔ Ñ$Ô$ð%r%   c                   ól   — e Zd ZdZdZed„ ¦   «         Zdd„Zdd„Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r4   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

    rk   c                 óÆ   — |j         r|                     ¦   «         S t          d„ || fD ¦   «         ¦  «        r|S |j        r |                     t
          ¦  «        d         S d S )Nc              3   óX   K  — | ]%}t           t          fD ]}t          ||¦  «        V — ŒŒ&d S r   rY   rZ   s      r#   r]   z'ceiling._eval_number.<locals>.<genexpr>2  r^   r%   rk   )r_   r4   r`   ra   rb   r   rA   s     r#   r'   zceiling._eval_number.  sˆ   € àŒ=ð 	Ø—;’;‘=”=Ð Ýð @ð @Ø ˜t˜ð@ñ @ô @ñ @ô @ð 	àˆJØÔð 	:Ø×-Ò-­gÑ6Ô6°qÔ9Ð9ð	:ð 	:r%   Nr   c                 ó  — ddl m} | j        d         }|                     |d¦  «        }|                      |d¦  «        }|t          j        u st          ||¦  «        r=|                     |dt          |¦  «        j	        rdnd¬¦  «        }t          |¦  «        }|j        rN||k    rF|                     ||dk    r|nd¬¦  «        }|j	        r|S |j        r|dz   S t          d|z  ¦  «        ‚|S |                     |||¬	¦  «        S rd   )rq   rf   r   rr   r   rs   r2   rt   r   ru   r4   r(   rj   rv   r1   rw   rx   s	            r#   r{   zceiling._eval_as_leading_term8  s  € ØAÐAÐAÐAÐAÐAØŒi˜ŒlˆØ�xŠx˜˜1‰~Œ~ˆØ�IŠI�a˜‰OŒOˆØ•1”5ˆ=ˆ=�J t¨[Ñ9Ô9ˆ=Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDÝ˜‘”ˆAØŒ>ð 
	Ø�qŠyˆyØ—w’w˜q¨t°qªy¨y t t¸a�wÑ@Ô@�ØÔ#ð OØ�HØÔ%ð OØ˜q™5�Lå-Ð.FÈÑ.MÑNÔNÐNà�Ø×"Ò" 1¨4°dÐ"Ñ;Ô;Ð;r%   c                 óF  — | j         d         }|                     |d¦  «        }|                      |d¦  «        }|t          j        u r=|                     |dt          |¦  «        j        rdnd¬¦  «        }t          |¦  «        }|j        rIddl	m
} ddlm}	 |                     ||||¦  «        }
|dk    r |	d|df¦  «        n |dd¦  «        }|
|z   S ||k    rF|                     ||dk    r|nd¬¦  «        }|j        r|S |j        r|dz   S t!          d	|z  ¦  «        ‚|S )
Nr   rg   rh   ri   re   r}   rk   rl   rn   )r   rr   r   rs   rt   r   ru   r4   r   rq   rf   r€   r~   r�   rj   rv   r1   r‚   s                r#   r�   zceiling._eval_nseriesM  sV  € ØŒi˜ŒlˆØ�xŠx˜˜1‰~Œ~ˆØ�IŠI�a˜‰OŒOˆØ•1”5ˆ=ˆ=Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDÝ˜‘”ˆAØÔð 	ØEÐEÐEÐEÐEÐEØ0Ð0Ð0Ð0Ð0Ð0Ø×!Ò! ! Q¨¨dÑ3Ô3ˆAØ$%¨¢F F���a˜!˜Q˜Ñ Ô Ð °°¸A¸qÑ0AÔ0AˆAØ�q‘5ˆLØ�1Š9ˆ9Ø—7’7˜1¨4°1ª9¨9 4 4¸!�7Ñ<Ô<ˆDØÔð KØ�ØÔ!ð KØ˜1‘u�å)Ð*BÀTÑ*IÑJÔJÐJàˆHr%   c                 ó$   — t          | ¦  «         S r   ©r3   r�   s      r#   Ú_eval_rewrite_as_floorzceiling._eval_rewrite_as_floore  s   € Ý�s�d‘”ˆ|Ðr%   c                 ó(   — |t          | ¦  «        z   S r   r“   r�   s      r#   r•   zceiling._eval_rewrite_as_frach  s   € Ø•T˜3˜$‘Z”ZÑÐr%   c                 ó&   — | j         d         j        S rC   )r   rv   rD   s    r#   Ú_eval_is_positivezceiling._eval_is_positivek  rˆ   r%   c                 ó&   — | j         d         j        S rC   )r   Úis_nonpositiverD   s    r#   Ú_eval_is_nonpositivezceiling._eval_is_nonpositiven  rŒ   r%   c                 ó€  — t          |¦  «        }| j        d         j        rG|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!   r/   r3   rŸ   r™   r(   r˜   r   rš   s     r#   r¥   zceiling.__lt__q  s·   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	4ØÔð 1Ø”y ”| u¨q¡yÒ0Ð0ØŒð 4 5¤=ð 4Ø”y ”|¥u¨U¡|¤|Ò3Ð3ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”7ˆNØ•A”JÐÐ 4¤>ÐÝ”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   c                 óz  — t          |¦  «        }| j        d         j        rD|j        r| j        d         |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!   r/   r3   rŸ   r    r(   r˜   r   rš   s     r#   r£   zceiling.__gt__  s´   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	3ØÔð ,Ø”y ”| eÒ+Ð+ØŒð 3 5¤=ð 3Ø”y ”|¥e¨E¡l¤lÒ2Ð2ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”7ˆNØ•AÔ&Ð&Ð&¨4¬>Ð&Ý”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   c                 ó€  — t          |¦  «        }| j        d         j        rG|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!   r/   r3   r˜   r    r(   r   rš   s     r#   r¡   zceiling.__ge__�  s¸   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	3ØÔð 0Ø”y ”| e¨a¡iÒ/Ð/ØŒð 3 5¤=ð 3Ø”y ”|¥e¨E¡l¤lÒ2Ð2ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”6ˆMØ•AÔ&Ð&Ð&¨4¬>Ð&Ý”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   c                 óz  — t          |¦  «        }| j        d         j        rD|j        r| j        d         |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!   r/   r3   rŸ   r™   r(   r˜   r   rš   s     r#   rœ   zceiling.__le__›  s³   € Ý�%‘”ˆØŒ9�QŒ<Ôð 	4ØÔð -Ø”y ”| uÒ,Ð,ØŒð 4 5¤=ð 4Ø”y ”|¥u¨U¡|¤|Ò3Ð3ØŒ9�QŒ<˜5Ò Ð  U¤]Ð Ý”7ˆNØ•A”JÐÐ 4¤>ÐÝ”6ˆMå�$˜¨Ð.Ñ.Ô.Ð.r%   rC   r¦   )rM   rN   rO   rP   r0   rS   r'   r{   r�   r´   r•   r·   rº   r¥   r£   r¡   rœ   rT   r%   r#   r4   r4     sß   € € € € € ð"ð "ðF €Dàð:ð :ñ „[ð:ð<ð <ð <ð <ð*ð ð ð ð0ð ð ð ð  ð  ð(ð (ð (ð+ð +ð +ð/ð /ð /ð/ð /ð /ð/ð /ð /ð/ð /ð /ð /ð /r%   r4   c                 ó¢   — t          |                      t          ¦  «        |¦  «        p't          |                      t          ¦  «        |¦  «        S r   )r   r¨   r3   r”   r©   s     r#   r¬   r¬   ª  s9   € å�—’�UÑ#Ô# SÑ)Ô)ÐI­U°3·;²;½tÑ3DÔ3DÀSÑ-IÔ-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d„Zdd„ZdS )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 ]\}|j        st          j        |z  j        r:t          |¦  «        }| 
                    t          j        ¦  «        s||z  }ŒQ||z  }ŒW||z  }Œ] ||¦  «        } ||¦  «        }|t          j        |z  z   S )Nr   re   c                 ó*  •— | t           j        t           j        fv r ‰dd¦  «        S | j        rt           j        S | j        rF| t           j        u rt           j        S | t           j        u rt           j        S | t          | ¦  «        z
  S  ‰| d¬¦  «        S r—   )	r   r™   r    r!   r-   r/   rs   ÚComplexInfinityr3   )r6   rf   r5   s    €€r#   Ú_evalzfrac.eval.<locals>._evalä  s’   ø€ Ø•q”z¥1Ô#5Ð6Ð6Ð6Ø"�{ 1 aÑ(Ô(Ð(ØŒ~ð Ý”v�ØŒ}ð ,Ø�!œ%�<�<Ýœ5�LØ�AÔ-Ð-Ð-Ýœ5�Là¥ s¡¤Ñ+Ð+Ø�3�s UÐ+Ñ+Ô+Ð+r%   )rq   rf   r   r-   r   r.   r)   r*   r+   r   r,   )r5   r6   rÄ   ÚrealÚimagr=   r8   rf   s   `      @r#   r?   z	frac.evalà  sç   øø€ àAÐAÐAÐAÐAÐAð	,ð 	,ð 	,ð 	,ð 	,ð 	,õ ”V�QœVˆdˆÝ”˜sÑ#Ô#ð 
	ð 
	ˆAð Œ~ð ¥!¤/°!Ñ"3Ô!<ð Ý�q‘E”E�Ø—u’u�Qœ_Ñ-Ô-ð Ø˜A‘I�D�Dà˜A‘I�D�Dà˜‘	��àˆu�T‰{Œ{ˆØˆu�T‰{Œ{ˆØ•a”o dÑ*Ñ*Ð*r%   c                 ó&   — |t          |¦  «        z
  S r   r³   r�   s      r#   r´   zfrac._eval_rewrite_as_floor  s   € Ø•U˜3‘Z”ZÑÐr%   c                 ó(   — |t          | ¦  «        z   S r   rŽ   r�   s      r#   r‘   zfrac._eval_rewrite_as_ceiling  s   € Ø•W˜c˜T‘]”]Ñ"Ð"r%   c                 ó   — dS )NTrT   rD   s    r#   rF   zfrac._eval_is_finite	  s   € Øˆtr%   c                 ó&   — | j         d         j        S rC   )r   Úis_extended_realrD   s    r#   rI   zfrac._eval_is_real  s   € ØŒy˜Œ|Ô,Ð,r%   c                 ó&   — | j         d         j        S rC   )r   r)   rD   s    r#   Ú_eval_is_imaginaryzfrac._eval_is_imaginary  s   € ØŒy˜Œ|Ô(Ð(r%   c                 ó&   — | j         d         j        S rC   )r   r!   rD   s    r#   rL   zfrac._eval_is_integer  s   € ØŒy˜Œ|Ô&Ð&r%   c                 ód   — t          | j        d         j        | j        d         j        g¦  «        S rC   )r   r   Úis_zeror!   rD   s    r#   Ú_eval_is_zerozfrac._eval_is_zero  s'   € Ý˜œ 1œÔ-¨t¬y¸¬|Ô/FÐGÑHÔHÐHr%   c                 ó   — dS )NFrT   rD   s    r#   r‡   zfrac._eval_is_negative  s   € Øˆur%   c                 ó¬   — | j         r<t          |¦  «        }|j        rt          j        S |                      |¦  «        }|�| S t          | |d¬¦  «        S ©NFr   )rË   r   Úis_extended_nonpositiver   r˜   Ú_value_one_or_morer   ©rE   r›   Úress      r#   r¡   zfrac.__ge__  s^   € ØÔ ð 	 Ý˜U‘O”OˆEàÔ,ð Ý”v�à×)Ò)¨%Ñ0Ô0ˆCØˆØ�x�Ý�$˜¨Ð.Ñ.Ô.Ð.r%   c                 ó¬   — | j         r<t          |¦  «        }|                      |¦  «        }|�| 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__'  s^   € ØÔ ð 	Ý˜U‘O”OˆEà×)Ò)¨%Ñ0Ô0ˆCØˆØ�x�àÔ)ð Ý”v�Ý�$˜¨Ð.Ñ.Ô.Ð.r%   c                 óª   — | j         r;t          |¦  «        }|j        rt          j        S |                      |¦  «        }|�|S t          | |d¬¦  «        S rÔ   )rË   r   rÚ   r   rŸ   rÖ   r   r×   s      r#   rœ   zfrac.__le__3  s\   € ØÔ ð 	Ý˜U‘O”OˆEàÔ)ð Ý”w�à×)Ò)¨%Ñ0Ô0ˆCØˆØ�
Ý�$˜¨Ð.Ñ.Ô.Ð.r%   c                 óª   — | j         r;t          |¦  «        }|j        rt          j        S |                      |¦  «        }|�|S t          | |d¬¦  «        S rÔ   )rË   r   rÕ   r   rŸ   rÖ   r   r×   s      r#   r¥   zfrac.__lt__?  s\   € ØÔ ð 	Ý˜U‘O”OˆEàÔ,ð Ý”w�à×)Ò)¨%Ñ0Ô0ˆCØˆØ�
Ý�$˜¨Ð.Ñ.Ô.Ð.r%   c                 ó°   — |j         rJ|j        r)|dk    }|r!t          |t          ¦  «        st          j        S |j        r|j        rt          j        S d S d S d S )Nrk   )rË   r/   r2   r   r   r˜   r!   rv   r×   s      r#   rÖ   zfrac._value_one_or_moreK  sz   € ØÔ!ð 	ØŒð "Ø˜q’j�Øð "�z¨#­zÑ:Ô:ð "Ýœ6�MØÔð  EÔ$5ð Ý”v�ð	ð 	ð
ð ð ð r%   Nr   c                 ó¼  — ddl m} | j        d         }|                     |d¦  «        }|                      |d¦  «        }|j        rN|j        rE|                     ||¬¦  «        }|j        rt          j	        S ||z
   
                    |||¬¦  «        S |S |t          j        t          j        t          j        fv r |dd¦  «        S | 
                    |||¬¦  «        S )Nr   re   rl   ro   rk   )rq   rf   r   rr   r(   rÐ   rj   ru   r   ÚOnerw   rÃ   r™   r    rx   s	            r#   r{   zfrac._eval_as_leading_termT  sç   € ØAÐAÐAÐAÐAÐAØŒi˜ŒlˆØ�xŠx˜˜1‰~Œ~ˆØ�IŠI�a˜‰OŒOˆàŒ>ð 		%ØŒyð Ø—w’w˜q t�wÑ,Ô,�ØÔ#ð !Ýœ5�LØ˜d™
×3Ò3°A¸DÀtÐ3ÑLÔLÐLà�Ø•aÔ'­¬µQÔ5GÐHÐHÐHØ�;˜q !Ñ$Ô$Ð$Ø×"Ò" 1¨4°dÐ"Ñ;Ô;Ð;r%   c                 óÊ  — ddl m} | j        d         }|                     |d¦  «        }|                      |d¦  «        }|j        r:ddlm}	 |dk    r |d|df¦  «        n |	dd¦  «         |||z  |df¦  «        z   }
|
S ||z
                       ||||¬¦  «        }|j        r:| 	                    ||¬¦  «        }||j
        rt          j        nt          j        z  }n||z  }|S )Nr   r}   re   rk   ro   rl   )r€   r~   r   rr   r   rq   rf   r�   rÐ   rj   ru   r   rß   r-   )rE   r"   rƒ   rp   rm   r~   r6   ry   r>   rf   r…   rØ   rz   s                r#   r�   zfrac._eval_nseriesf  s  € Ø,Ð,Ð,Ð,Ð,Ð,ØŒi˜ŒlˆØ�xŠx˜˜1‰~Œ~ˆØ�IŠI�a˜‰OŒOˆàÔð 	ØEÐEÐEÐEÐEÐEØ$%¨¢F F���a˜!˜Q˜Ñ Ô Ð °°¸A¸qÑ0AÔ0AÀEÀEÈ!ÈQÉ$ÐQRÐTUÐPVÑDWÔDWÑ0WˆAØˆHà˜‘:×,Ò,¨Q°¸À4Ð,ÑHÔHˆCØŒyð Ø—w’w˜q t�wÑ,Ô,�Ø Ô 0Ð<•q”u�uµa´fÑ<��à�q‘�ØˆJr%   rC   r¦   )rM   rN   rO   rP   rS   r?   r´   r‘   rF   rI   rÍ   rL   rÑ   r‡   r¡   r£   rœ   r¥   rÖ   r{   r�   rT   r%   r#   r”   r”   ¯  s)  € € € € € ð/ð /ð` ð +ð  +ñ „[ð +ðD ð  ð  ð#ð #ð #ðð ð ð-ð -ð -ð)ð )ð )ð'ð 'ð 'ðIð Ið Iðð ð ð
/ð 
/ð 
/ð
/ð 
/ð 
/ð
/ð 
/ð 
/ð
/ð 
/ð 
/ðð ð ð<ð <ð <ð <ð$ð ð ð ð ð r%   r”   c                 óÆ   — |                       t          ¦  «        |k    s|                       t          ¦  «        |k    rdS |j        rdS |                      |¦  «        }|�dS d S )NTF)r¨   r3   r4   rÚ   rÖ   )rª   r«   rØ   s      r#   r¬   r¬   z  si   € à�Š•EÑÔ˜cÒ!Ð!Ø	�Š•WÑ	Ô	 Ò	$Ð	$Øˆtà
Ôð Øˆuà
×
 Ò
  Ñ
%Ô
%€CØ
€Øˆuð €r%   N)'Útypingr   rQ   Úsympy.core.basicr   Úsympy.core.exprr   Ú
sympy.corer   r   Úsympy.core.evalfr   r	   Úsympy.core.functionr
   Úsympy.core.logicr   Úsympy.core.numbersr   r   Úsympy.core.relationalr   r   r   r   r   r   Úsympy.core.sympifyr   Ú$sympy.functions.elementary.complexesr   r   Úsympy.multipledispatchr   r   r3   r¬   r4   r”   rT   r%   r#   ú<module>rî      sd  ðØ "Ð "Ð "Ð "Ð "Ð "à "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ (Ð (Ð (Ð (Ð (Ð (Ø %Ð %Ð %Ð %Ð %Ð %Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø +Ð +Ð +Ð +Ð +Ð +ðH$ð H$ð H$ð H$ð H$�Hñ H$ô H$ð H$ðV_/ð _/ð _/ð _/ð _/ˆMñ _/ô _/ð _/ðD 
€ˆ%�ÑÔð%ð %ñ Ôð%ð
_/ð _/ð _/ð _/ð _/ˆmñ _/ô _/ð _/ðD 
€ˆ'�5ÑÔðJð Jñ ÔðJðHð Hð Hð Hð Hˆ8ñ Hô Hð HðV 
€ˆ$�ÑÔð
ð 
ñ Ôð
ð 
ð 
r%   