§
    ¬³Ùgí  ã                   ó®   — 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dS )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)d
S )%Ú	RealFieldz(Real numbers up to the given precision. ÚRRTFé5   c                 ó"   — | j         | j        k    S ©N)Ú	precisionÚ_default_precision©Úselfs    úS/granary/edev/quantum/lib/python3.11/site-packages/sympy/polys/domains/realfield.pyÚhas_default_precisionzRealField.has_default_precision   s   € àŒ~ Ô!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        | _        |                      d¦  «        | _        |                      d¦  «        | _        d S )NTr   é   )r   Ú_parentr   ÚmpfÚ_dtypeÚdtypeÚzeroÚone)r   r   r   ÚtolÚcontexts        r   Ú__init__zRealField.__init__.   sR   € Ý˜D # s¨DÑ1Ô1ˆØˆŒØˆŒà”kˆŒØ—J’J˜q‘M”MˆŒ	Ø—:’:˜a‘=”=ˆŒˆˆr   c                 ó   — | j         S r   )r#   r   s    r   ÚtpzRealField.tp7   s   € ð Œ{Ðr   c                 ót   — t          |t          ¦  «        rt          |¦  «        }|                      |¦  «        S r   )Ú
isinstancer   Úintr#   )r   Úargs     r   r$   zRealField.dtype?   s3   € õ �c�:Ñ&Ô&ð 	Ý�c‘(”(ˆCØ�{Š{˜3ÑÔÐr   c                 ól   — t          |t          ¦  «        o| j        |j        k    o| j        |j        k    S r   )r-   r   r   r   )r   Úothers     r   Ú__eq__zRealField.__eq__G   s6   € Ý˜5¥)Ñ,Ô,ð 1ØŒ~ ¤Ò0ð1àŒ~ ¤Ò0ð	2r   c                 óZ   — 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¸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Ñ'Ô'Ð'r   c                 ó”   — |                      | j        ¬¦  «        }|j        r|                      |¦  «        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   sI   € à—’˜dœh�Ñ'Ô'ˆàÔð 	HØ—:’:˜fÑ%Ô%Ð%å Ð!?À$Ñ!FÑGÔGÐGr   c                 ó,   — |                       |¦  «        S r   ©r$   ©r   r9   Úbases      r   Úfrom_ZZzRealField.from_ZZ\   ó   € Ø�zŠz˜'Ñ"Ô"Ð"r   c                 ó,   — |                       |¦  «        S r   rC   rD   s      r   Úfrom_ZZ_pythonzRealField.from_ZZ_python_   rG   r   c                 óF   — |                       t          |¦  «        ¦  «        S r   )r$   r.   rD   s      r   Úfrom_ZZ_gmpyzRealField.from_ZZ_gmpyb   s   € Ø�zŠz�#˜g™,œ,Ñ'Ô'Ð'r   c                 ó`   — |                       |j        ¦  «        t          |j        ¦  «        z  S r   ©r$   Ú	numeratorr.   ÚdenominatorrD   s      r   Úfrom_QQzRealField.from_QQi   ó'   € Ø�zŠz˜'Ô+Ñ,Ô,­s°7Ô3FÑ/GÔ/GÑGÐGr   c                 ó`   — |                       |j        ¦  «        t          |j        ¦  «        z  S r   rM   rD   s      r   Úfrom_QQ_pythonzRealField.from_QQ_pythonl   rQ   r   c                 óz   — |                       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Ô0Ñ1Ô1µC¸Ô8KÑ4LÔ4LÑLÐLr   c                 ó‚   — |                       |                     |¦  «                             | j        ¦  «        ¦  «        S r   )rA   r:   r=   r   rD   s      r   Úfrom_AlgebraicFieldzRealField.from_AlgebraicFieldr   s0   € Ø�Š˜tŸ}š}¨WÑ5Ô5×;Ò;¸D¼HÑEÔEÑFÔFÐFr   c                 ó<   — | |k    r|S |                       |¦  «        S r   rC   rD   s      r   Úfrom_RealFieldzRealField.from_RealFieldu   s"   € Ø�4Š<ˆ<ØˆNà—:’:˜gÑ&Ô&Ð&r   c                 óH   — |j         s|                      |j        ¦  «        S d S r   )Úimagr$   ÚrealrD   s      r   Úfrom_ComplexFieldzRealField.from_ComplexField{   s*   € ØŒ|ð 	,Ø—:’:˜gœlÑ+Ô+Ð+ð	,ð 	,r   c                 ó8   — | j                              ||¦  «        S )z*Convert a real number to rational number. )r   Úto_rational)r   r9   Úlimits      r   r_   zRealField.to_rational   s   € àŒ}×(Ò(¨°%Ñ8Ô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ˆr   c                 ó   — ||z  S )z Returns LCM of ``a`` and ``b``. rb   ri   s      r   ÚlcmzRealField.lcm�   s   € à�‰sˆ
r   c                 ó:   — | 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Ô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  n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˜6ˆq�C‰xˆ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      sP  € € € € € à2Ð2à
€CàÐ€L�5à€HØ€LØ€Fà€NØ€OàÐàð9ð 9ñ „Xð9ð ð"ð "ñ „Xð"ð ð!ð !ñ „Xð!ð ð'ð 'ñ „Xð'ð /°D¸dð !ð !ð !ð !ð ðð ñ „Xðð ð  ð  ð2ð 2ð 2ð
\ð \ð \ð(ð (ð (ðHð Hð Hð#ð #ð #ð#ð #ð #ð(ð (ð (ðHð Hð HðHð Hð HðMð Mð MðGð Gð Gð'ð 'ð 'ð,ð ,ð ,ð9ð 9ð 9ð 9ðð ð ðð ð ð
ð ð ðð ð ð7ð 7ð 7ð 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Š      sð   ðØ 2Ð 2ð +Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø EÐ EÐ EÐ EÐ EÐ EØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø "Ð "Ð "Ð "Ð "Ð "àðV,ð V,ð V,ð V,ð V,�Ð)¨<ñ V,ô V,ñ „ðV,ðr €Y�[„[€€€r   