Ë
    O/æjÎM  ã                   ój  — 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$y)é    )Ú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                   óT   — e Zd ZU dZee   ed<   ed„ «       Zed„ «       Z	d„ Z
d„ Zd„ Zy)	ÚRoundFunctionz+Abstract base class for rounding functions.Úargsc                 óö  — | j                  |«      }|�|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    úf/root/repos/pocs/video-evals/.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_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   s3  € à×Ñ˜SÓ!ˆØˆ=Øˆ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& É&I8É7I8c                 ó   — t        «       ‚r   )r1   ©r5   r6   s     r#   r'   zRoundFunction._eval_numberR   s   € ä!Ó#Ð#r%   c                 ó4   — | j                   d   j                  S ©Nr   )r   r(   ©Úselfs    r#   Ú_eval_is_finitezRoundFunction._eval_is_finiteV   s   € Ø�y‰y˜‰|×%Ñ%Ð%r%   c                 ó4   — | j                   d   j                  S rC   ©r   r+   rD   s    r#   Ú_eval_is_realzRoundFunction._eval_is_realY   ó   € Ø�y‰y˜‰|×#Ñ#Ð#r%   c                 ó4   — | 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      sE   … Ù5à
�‰,Óàñ56ó ð56ðn ñ$ó ð$ò&ò$ó$r%   r   c                   ód   — 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y)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|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   ©r3   r4   r2   ©Ú.0r8   Újs      r#   ú	<genexpr>z%floor._eval_number.<locals>.<genexpr>Š   ó:   è ø€ ò @Ø¬u´gÐ.>ò@Ø)*ô ˜A˜q×!ð @Ð!ñ @ùó   ‚')r   )Ú	is_Numberr3   ÚanyÚis_NumberSymbolÚapproximation_intervalr   rA   s     r#   r'   zfloor._eval_number†   s\   € à�=Š=Ø—9‘9“;ÐÜñ @Ø ˜t˜ô@ô @àˆJØ×ÒØ×-Ñ-¬gÓ6°qÑ9Ð9ð r%   Nc                 óø  — 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©Úlogxrn   )Ú!sympy.calculus.accumulationboundsrg   r   Úsubsr   ÚNaNr2   Úlimitr   Úis_negativer3   r(   rk   Úis_positiver1   Úas_leading_term©	rE   r"   rq   rn   rg   r6   Úarg0r>   Ú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   rh   ri   rj   rf   ©ÚOrderrl   rV   rm   ro   )r   rs   r   rt   ru   r   rv   r3   Úis_infiniterr   rg   Úsympy.series.orderr   Ú_eval_nseriesrk   rw   r1   ©rE   r"   Únrq   rn   r6   rz   r>   rg   r   ÚsÚ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 rC   )r   rv   rD   s    r#   Ú_eval_is_negativezfloor._eval_is_negative½   ó   € Ø�y‰y˜‰|×'Ñ'Ð'r%   c                 ó4   — | j                   d   j                  S rC   )r   Úis_nonnegativerD   s    r#   Ú_eval_is_nonnegativezfloor._eval_is_nonnegativeÀ   ó   € Ø�y‰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‰Ð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   rl   Fr   )
r   r   r+   r!   r/   r4   ÚtrueÚInfinityr(   r   ©rE   Ú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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‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| uÑ,Ð,Ø�Š 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                  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!   r/   r4   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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‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| eÑ+Ð+Ø�Š 5§=¢=Ø—y‘y ‘|¤g¨e£nÑ4Ð4Ø�9‰9�Q‰<˜5Ò  U§]¢]Ü—7‘7ˆNØ”A—J‘JÑ 4§>¢>Ü—6‘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   `   sS   „ ñ"ðF €Dàñ:ó ð:ó<ó*ò0(ò+òòò/ò/ò/ó/r%   r3   c                 ó‚   — t        | j                  t        «      |«      xs t        | j                  t        «      |«      S r   )r   Úrewriter4   r•   ©ÚlhsÚrhss     r#   Ú_eval_is_eqr­     s2   € ä
�—‘œGÓ$ cÓ
*ò %Üˆc�k‰kœ$Ó Ó$ð%r%   c                   ód   — 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y)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

    rl   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   rY   rZ   s      r#   r]   z'ceiling._eval_number.<locals>.<genexpr>2  r^   r_   rl   )r`   r4   ra   rb   rc   r   rA   s     r#   r'   zceiling._eval_number.  s\   € à�=Š=Ø—;‘;“=Ð Üñ @Ø ˜t˜ô@ô @àˆJØ×ÒØ×-Ñ-¬gÓ6°qÑ9Ð9ð r%   Nc                 óø  — 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 re   )rr   rg   r   rs   r   rt   r2   ru   r   rv   r4   r(   rk   rw   r1   rx   ry   s	            r#   r|   zceiling._eval_as_leading_term8  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   rh   ri   rj   rf   r~   rl   rm   ro   )r   rs   r   rt   ru   r   rv   r4   r€   rr   rg   r�   r   r‚   rk   rw   r1   rƒ   s                r#   r‚   zceiling._eval_nseriesM  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   ©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ÑÐr%   c                 ó4   — | j                   d   j                  S rC   )r   rw   rD   s    r#   Ú_eval_is_positivezceiling._eval_is_positivek  r‰   r%   c                 ó4   — | j                   d   j                  S rC   )r   Úis_nonpositiverD   s    r#   Ú_eval_is_nonpositivezceiling._eval_is_nonpositiven  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!   r/   r3   r    rš   r(   r™   r   r›   s     r#   r¦   zceiling.__lt__q  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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‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| eÑ+Ð+Ø�Š 5§=¢=Ø—y‘y ‘|¤e¨E£lÑ2Ð2Ø�9‰9�Q‰<˜5Ò  U§]¢]Ü—7‘7ˆNØ”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!   r/   r3   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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‰9�Q‰<×ÒØ×ÒØ—y‘y ‘| uÑ,Ð,Ø�Š 5§=¢=Ø—y‘y ‘|¤u¨U£|Ñ3Ð3Ø�9‰9�Q‰<˜5Ò  U§]¢]Ü—7‘7ˆNØ”A—J‘JÑ 4§>¢>Ü—6‘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     sS   „ ñ"ðF €Dàñ:ó ð:ó<ó*ò0ò ò(ò+ò/ò/ò/ó/r%   r4   c                 ó‚   — t        | j                  t        «      |«      xs t        | j                  t        «      |«      S r   )r   r©   r3   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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   rf   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!   r-   r/   rt   ÚComplexInfinityr3   )r6   rg   r5   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%   )rr   rg   r   r-   r   r.   r)   r*   r+   r   r,   )r5   r6   rÅ   ÚrealÚimagr=   r8   rg   s   `      @r#   r?   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_floor  s   € Ø”U˜3“ZÑÐr%   c                 ó    — |t        | «      z   S r   r�   r�   s      r#   r’   zfrac._eval_rewrite_as_ceiling  s   € Ø”W˜c˜T“]Ñ"Ð"r%   c                  ó   — y)NTrT   rD   s    r#   rF   zfrac._eval_is_finite	  s   € Ør%   c                 ó4   — | j                   d   j                  S rC   )r   Úis_extended_realrD   s    r#   rI   zfrac._eval_is_real  s   € Ø�y‰y˜‰|×,Ñ,Ð,r%   c                 ó4   — | j                   d   j                  S rC   )r   r)   rD   s    r#   Ú_eval_is_imaginaryzfrac._eval_is_imaginary  s   € Ø�y‰y˜‰|×(Ñ(Ð(r%   c                 ó4   — | j                   d   j                  S rC   )r   r!   rD   s    r#   rL   zfrac._eval_is_integer  s   € Ø�y‰y˜‰|×&Ñ&Ð&r%   c                 óx   — 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©y¸©|×/FÑ/FÐGÓHÐHr%   c                  ó   — y)NFrT   rD   s    r#   rˆ   zfrac._eval_is_negative  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   ©rE   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__'  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__3  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 )Nrl   )rÌ   r/   r2   r   r   r™   r!   rw   rØ   s      r#   r×   zfrac._value_one_or_moreK  sW   € Ø×!Ò!Ø�ŠØ˜q‘j�Ùœz¨#¬zÔ:ÜŸ6™6�MØ×Ò E×$5Ò$5Ü—v‘v�ð %6Ðð "r%   Nc                 óÐ  — 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   rf   rm   rp   rl   )rr   rg   r   rs   r(   rÑ   rk   rv   r   ÚOnerx   rÄ   rš   r¡   ry   s	            r#   r|   zfrac._eval_as_leading_termT  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~   rf   rl   rp   rm   )r�   r   r   rs   r€   rr   rg   r‚   rÑ   rk   rv   r   rà   r-   )rE   r"   r„   rq   rn   r   r6   rz   r>   rg   r†   rÙ   r{   s                r#   r‚   zfrac._eval_nseriesf  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%   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•   ¯  si   „ ñ/ð` ñ +ó ð +òD ò#òò-ò)ò'òIòò
/ò
/ò
/ò
/òó<ô$r%   r•   c                 ó¨   — | j                  t        «      |k(  s| j                  t        «      |k(  ry|j                  ry| j	                  |«      }|�yy )NTF)r©   r3   r4   rÛ   r×   )r«   r¬   rÙ   s      r#   r­   r­   z  sP   € à�‰”EÓ˜cÒ!Ø	�‰”WÓ	 Ò	$Øà
×ÒØà
×
 Ñ
  Ó
%€CØ
€Øð 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ï      s»   ðÝ "å "Ý  ç ß AÝ (Ý %ß 2ß C× CÝ 'ß 7Ý +ôH$�Hô H$ôV_/ˆMô _/ñD 
ˆ%�Óñ%ó ð%ô
_/ˆmô _/ñD 
ˆ'�5ÓñJó ðJôHˆ8ô HñV 
ˆ$�Óñ
ó ñ
r%   