Ë
    O/æjí  ã                   óš   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ e G d
„ dee
e«      «       Z e«       Zy)z,Implementation of :class:`RealField` class. é    )Ú
SYMPY_INTS)ÚFloat)ÚField)ÚSimpleDomain)ÚCharacteristicZero)Ú	MPContext)ÚCoercionFailed)Úpublicc                   ó  — e Zd ZdZdZdxZZdZdZdZ	dZ
dZdZed„ «       Zed„ «       Zed„ «       Zed	„ «       Zed
d
f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"d„ Z#d„ Z$d„ Z%d„ Z&d$d „Z'd!„ Z(d"„ Z)y
)%Ú	RealFieldz(Real numbers up to the given precision. ÚRRTFé5   c                 ó4   — | j                   | j                  k(  S ©N)Ú	precisionÚ_default_precision©Úselfs    ú`/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/polys/domains/realfield.pyÚhas_default_precisionzRealField.has_default_precision   s   € à�~‰~ ×!8Ñ!8Ñ8Ð8ó    c                 ó.   — | j                   j                  S r   )Ú_contextÚprecr   s    r   r   zRealField.precision"   s   € à�}‰}×!Ñ!Ð!r   c                 ó.   — | j                   j                  S r   )r   Údpsr   s    r   r   zRealField.dps&   s   € à�}‰}× Ñ Ð r   c                 ó.   — | j                   j                  S r   )r   Ú	tolerancer   s    r   r   zRealField.tolerance*   s   € à�}‰}×&Ñ&Ð&r   Nc                 ó¶   — t        |||d«      }| |_        || _        |j                  | _        | j                  d«      | _        | j                  d«      | _        y )NTr   é   )r   Ú_parentr   ÚmpfÚ_dtypeÚdtypeÚzeroÚone)r   r   r   ÚtolÚcontexts        r   Ú__init__zRealField.__init__.   sI   € Ü˜D # s¨DÓ1ˆØˆŒØˆŒà—k‘kˆŒØ—J‘J˜q“MˆŒ	Ø—:‘:˜a“=ˆ�r   c                 ó   — | j                   S r   )r#   r   s    r   ÚtpzRealField.tp7   s   € ð �{‰{Ðr   c                 óZ   — t        |t        «      rt        |«      }| j                  |«      S r   )Ú
isinstancer   Úintr#   )r   Úargs     r   r$   zRealField.dtype?   s&   € ô �cœ:Ô&Ü�c“(ˆCØ�{‰{˜3ÓÐr   c                 óŽ   — t        |t        «      xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )r-   r   r   r   )r   Úothers     r   Ú__eq__zRealField.__eq__G   s;   € Ü˜5¤)Ó,ò 1Ø�~‰~ §¡Ñ0ò1à�~‰~ §¡Ñ0ð	2r   c                 ó„   — t        | j                  j                  | j                  | j                  | j
                  f«      S r   )ÚhashÚ	__class__Ú__name__r#   r   r   r   s    r   Ú__hash__zRealField.__hash__L   s,   € Ü�T—^‘^×,Ñ,¨d¯k©k¸4¿>¹>È4Ï>É>ÐZÓ[Ð[r   c                 ó.   — t        || j                  «      S )z%Convert ``element`` to SymPy number. )r   r   )r   Úelements     r   Úto_sympyzRealField.to_sympyO   s   € ä�W˜dŸh™hÓ'Ð'r   c                 ó�   — |j                  | j                  ¬«      }|j                  r| j                  |«      S t	        d|z  «      ‚)z%Convert SymPy's number to ``dtype``. )Únzexpected real number, got %s)Úevalfr   Ú	is_Numberr$   r	   )r   ÚexprÚnumbers      r   Ú
from_sympyzRealField.from_sympyS   s?   € à—‘˜dŸh™h�Ó'ˆà×ÒØ—:‘:˜fÓ%Ð%ä Ð!?À$Ñ!FÓGÐGr   c                 ó$   — | j                  |«      S r   ©r$   ©r   r9   Úbases      r   Úfrom_ZZzRealField.from_ZZ\   ó   € Ø�z‰z˜'Ó"Ð"r   c                 ó$   — | j                  |«      S r   rC   rD   s      r   Úfrom_ZZ_pythonzRealField.from_ZZ_python_   rG   r   c                 ó6   — | j                  t        |«      «      S r   )r$   r.   rD   s      r   Úfrom_ZZ_gmpyzRealField.from_ZZ_gmpyb   s   € Ø�z‰zœ#˜g›,Ó'Ð'r   c                 ód   — | j                  |j                  «      t        |j                  «      z  S r   ©r$   Ú	numeratorr.   ÚdenominatorrD   s      r   Úfrom_QQzRealField.from_QQi   ó'   € Ø�z‰z˜'×+Ñ+Ó,¬s°7×3FÑ3FÓ/GÑGÐGr   c                 ód   — | j                  |j                  «      t        |j                  «      z  S r   rM   rD   s      r   Úfrom_QQ_pythonzRealField.from_QQ_pythonl   rQ   r   c                 óv   — | j                  t        |j                  «      «      t        |j                  «      z  S r   )r$   r.   rN   rO   rD   s      r   Úfrom_QQ_gmpyzRealField.from_QQ_gmpyo   s,   € Ø�z‰zœ#˜g×/Ñ/Ó0Ó1´C¸×8KÑ8KÓ4LÑLÐLr   c                 ót   — | j                  |j                  |«      j                  | j                  «      «      S r   )rA   r:   r=   r   rD   s      r   Úfrom_AlgebraicFieldzRealField.from_AlgebraicFieldr   s)   € Ø�‰˜tŸ}™}¨WÓ5×;Ñ;¸D¿H¹HÓEÓFÐFr   c                 ó2   — | |k(  r|S | j                  |«      S r   rC   rD   s      r   Úfrom_RealFieldzRealField.from_RealFieldu   s   € Ø�4Š<ØˆNà—:‘:˜gÓ&Ð&r   c                 óR   — |j                   s| j                  |j                  «      S y r   )Úimagr$   ÚrealrD   s      r   Úfrom_ComplexFieldzRealField.from_ComplexField{   s!   € Ø�|Š|Ø—:‘:˜gŸl™lÓ+Ð+ð r   c                 ó:   — | j                   j                  ||«      S )z*Convert a real number to rational number. )r   Úto_rational)r   r9   Úlimits      r   r_   zRealField.to_rational   s   € à�}‰}×(Ñ(¨°%Ó8Ð8r   c                 ó   — | S )z)Returns a ring associated with ``self``. © r   s    r   Úget_ringzRealField.get_ringƒ   s   € àˆr   c                 ó   — ddl m} |S )z2Returns an exact domain associated with ``self``. r   )ÚQQ)Úsympy.polys.domainsre   )r   re   s     r   Ú	get_exactzRealField.get_exact‡   s
   € å*Øˆ	r   c                 ó   — | j                   S )z Returns GCD of ``a`` and ``b``. )r&   ©r   ÚaÚbs      r   ÚgcdzRealField.gcdŒ   s   € à�x‰xˆr   c                 ó   — ||z  S )z Returns LCM of ``a`` and ``b``. rb   ri   s      r   ÚlcmzRealField.lcm�   s   € à�‰sˆ
r   c                 ó<   — | j                   j                  |||«      S )z+Check if ``a`` and ``b`` are almost equal. )r   Úalmosteq)r   rj   rk   r   s       r   rp   zRealField.almosteq”   s   € à�}‰}×%Ñ% a¨¨IÓ6Ð6r   c                 ó   — |dk\  S )z8Returns ``True`` if ``a >= 0`` and ``False`` otherwise. r   rb   ©r   rj   s     r   Ú	is_squarezRealField.is_square˜   s   € à�A‰vˆr   c                 ó   — |dk\  r|dz  S dS )zÒNon-negative square root for ``a >= 0`` and ``None`` otherwise.

        Explanation
        ===========
        The square root may be slightly inaccurate due to floating point
        rounding error.
        r   g      à?Nrb   rr   s     r   ÚexsqrtzRealField.exsqrtœ   s   € ð  š6ˆq�C‰xÐ+ tÐ+r   )Tr   )*r6   Ú
__module__Ú__qualname__Ú__doc__ÚrepÚis_RealFieldÚis_RRÚis_ExactÚis_NumericalÚis_PIDÚhas_assoc_RingÚhas_assoc_Fieldr   Úpropertyr   r   r   r   r)   r+   r$   r2   r7   r:   rA   rF   rI   rK   rP   rS   rU   rW   rY   r]   r_   rc   rg   rl   rn   rp   rs   ru   rb   r   r   r   r      s  „ á2à
€CàÐ€L�5à€HØ€LØ€Fà€NØ€OàÐàñ9ó ð9ð ñ"ó ð"ð ñ!ó ð!ð ñ'ó ð'ð /°D¸dó !ð ñó ðò ò2ò
\ò(òHò#ò#ò(òHòHòMòGò'ò,ó9òòò
òó7òó,r   r   N)rx   Úsympy.external.gmpyr   Úsympy.core.numbersr   Úsympy.polys.domains.fieldr   Ú sympy.polys.domains.simpledomainr   Ú&sympy.polys.domains.characteristiczeror   Úsympy.polys.domains.mpelementsr   Úsympy.polys.polyerrorsr	   Úsympy.utilitiesr
   r   r   rb   r   r   ú<module>rŠ      sM   ðÙ 2õ +Ý $Ý +Ý 9Ý EÝ 4Ý 1Ý "àôV,�Ð)¨<ó V,ó ðV,ñr ƒ[�r   