§
    OŠtj8  ã                   óÆ   — d Z ddlmZ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 dd
lmZ dd„Ze G d„ deee	¦  «        ¦   «         Z e¦   «         ZdS )z,Implementation of :class:`RealField` class. é    )Ú
SYMPY_INTSÚMPQ)ÚFloat)ÚField)ÚSimpleDomain)ÚCharacteristicZero)ÚCoercionFailed)Úpublic)Ú	MPContext)Úto_rationalTc                 ó  — t          | j        ¦  «        \  }}t          |¦  «        }t          |¦  «        }|r||k    r||fS d\  }}}}||}
}		 |	|
z  }|||z  z   }||k    rn|||||z  z   |f\  }}}}|
|	||
z  z
  }
}	Œ0||z
  |z  }t          ||¦  «        }t          |||z  z   |||z  z   ¦  «        }t          ||¦  «        }|r|s||fS t	          ||z
  ¦  «        t	          ||z
  ¦  «        k    r|j        |j        fS |j        |j        fS )N)r   é   r   r   )Ú_mpmath_to_rationalÚ_mpf_Úintr   ÚabsÚ	numeratorÚdenominator)ÚsÚ	max_denomÚlimitÚpÚqÚp0Úq0Úp1Úq1ÚnÚdÚaÚq2ÚkÚnumberÚbound1Úbound2s                    ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/domains/realfield.pyr   r      s]  € å˜qœwÑ'Ô'�D€A€qõ
 	ˆA‰Œ€AÝˆA‰Œ€Aàð �A˜’N�NØ�!ˆtˆà�N€BˆˆB�Øˆa€q€AðØˆq‰DˆØ�!�B‘$‰YˆØ�	Š>ˆ>ØØ˜R  a¨¡d¡¨BÐ.‰ˆˆB��BØ�!�a˜‘c‘'ˆ1ˆðð 
�R‰˜"Ñ€Aå��A‰YŒY€FÝ��a˜‘d‘˜B  2¡™IÑ&Ô&€FÝ��R‰[Œ[€Fàð 4˜ð 4Ø�!ˆtˆÝ	ˆV�f‰_Ñ	Ô	¥ V¨f¡_Ñ!5Ô!5Ò	5Ð	5ØÔ Ô!3Ð3Ð3àÔ Ô!3Ð3Ð3ó    c                   ó4  — 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d#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    r&   Úhas_default_precisionzRealField.has_default_precisionG   s   € àŒ~ Ô!8Ò8Ð8r'   c                 ó   — | j         j        S r-   )Ú_contextÚprecr0   s    r&   r.   zRealField.precisionK   s   € àŒ}Ô!Ð!r'   c                 ó   — | j         j        S r-   )r4   Údpsr0   s    r&   r7   zRealField.dpsO   s   € àŒ}Ô Ð r'   c                 ó   — | j         S r-   )Ú
_tolerancer0   s    r&   Ú	tolerancezRealField.toleranceS   s
   € àŒÐr'   Nc                 ó€  — t          ¦   «         }|€|€| j        |_        n#|€||_        n|€||_        nt	          d¦  «        ‚|| _        |j        | _        |                      d¦  «        | _	        |                      d¦  «        | _
        t          d|j        z  dz  d¦  «        | _        | j
        | j        z  | _        d S )NzCannot set both prec and dpsr   r   é   éÈ   éc   )r   r/   r5   r7   Ú	TypeErrorr4   ÚmpfÚ_dtypeÚdtypeÚzeroÚoneÚmaxÚ
_max_denomr9   )r1   r5   r7   ÚtolÚcontexts        r&   Ú__init__zRealField.__init__W   s±   € õ ‘+”+ˆàˆ<˜C˜KØÔ2ˆGŒLˆLØˆ[ØˆGŒLˆLØˆ\ØˆGŒKˆKåÐ:Ñ;Ô;Ð;àˆŒà”kˆŒØ—J’J˜q‘M”MˆŒ	Ø—:’:˜a‘=”=ˆŒõ ˜a ¤™o°Ñ4°bÑ9Ô9ˆŒØœ( T¤_Ñ4ˆŒˆˆr'   c                 ó   — | j         S r-   )rA   r0   s    r&   ÚtpzRealField.tpq   s   € ð Œ{Ðr'   c                 ót   — t          |t          ¦  «        rt          |¦  «        }|                      |¦  «        S r-   )Ú
isinstancer   r   rA   )r1   Úargs     r&   rB   zRealField.dtypey   s3   € õ �c�:Ñ&Ô&ð 	Ý�c‘(”(ˆCØ�{Š{˜3ÑÔÐr'   c                 óL   — t          |t          ¦  «        o| j        |j        k    S r-   )rM   r)   r.   )r1   Úothers     r&   Ú__eq__zRealField.__eq__�   s    € Ý˜%¥Ñ+Ô+ÐQ°´À%Ä/Ò0QÐQr'   c                 óN   — t          | j        j        | j        | j        f¦  «        S r-   )ÚhashÚ	__class__Ú__name__rA   r.   r0   s    r&   Ú__hash__zRealField.__hash__„   s    € Ý�T”^Ô,¨d¬k¸4¼>ÐJÑKÔKÐKr'   c                 ó,   — t          || j        ¦  «        S )z%Convert ``element`` to SymPy number. )r   r7   )r1   Úelements     r&   Úto_sympyzRealField.to_sympy‡   s   € å�W˜dœhÑ'Ô'Ð'r'   c                 ó”   — |                      | j        ¬¦  «        }|j        r|                      |¦  «        S t	          d|z  ¦  «        ‚)z%Convert SymPy's number to ``dtype``. )r   zexpected real number, got %s)Úevalfr7   Ú	is_NumberrB   r	   )r1   Úexprr#   s      r&   Ú
from_sympyzRealField.from_sympy‹   sI   € à—’˜dœh�Ñ'Ô'ˆàÔð 	HØ—:’:˜fÑ%Ô%Ð%å Ð!?À$Ñ!FÑGÔGÐGr'   c                 ó,   — |                       |¦  «        S r-   ©rB   ©r1   rX   Úbases      r&   Úfrom_ZZzRealField.from_ZZ”   ó   € Ø�zŠz˜'Ñ"Ô"Ð"r'   c                 ó,   — |                       |¦  «        S r-   r`   ra   s      r&   Úfrom_ZZ_pythonzRealField.from_ZZ_python—   rd   r'   c                 óF   — |                       t          |¦  «        ¦  «        S r-   )rB   r   ra   s      r&   Úfrom_ZZ_gmpyzRealField.from_ZZ_gmpyš   s   € Ø�zŠz�#˜g™,œ,Ñ'Ô'Ð'r'   c                 ó`   — |                       |j        ¦  «        t          |j        ¦  «        z  S r-   ©rB   r   r   r   ra   s      r&   Úfrom_QQzRealField.from_QQ¡   ó'   € Ø�zŠz˜'Ô+Ñ,Ô,­s°7Ô3FÑ/GÔ/GÑGÐGr'   c                 ó`   — |                       |j        ¦  «        t          |j        ¦  «        z  S r-   rj   ra   s      r&   Úfrom_QQ_pythonzRealField.from_QQ_python¤   rl   r'   c                 óz   — |                       t          |j        ¦  «        ¦  «        t          |j        ¦  «        z  S r-   )rB   r   r   r   ra   s      r&   Úfrom_QQ_gmpyzRealField.from_QQ_gmpy§   s/   € Ø�zŠz�#˜gÔ/Ñ0Ô0Ñ1Ô1µC¸Ô8KÑ4LÔ4LÑLÐLr'   c                 ó‚   — |                       |                     |¦  «                             | j        ¦  «        ¦  «        S r-   )r^   rY   r[   r7   ra   s      r&   Úfrom_AlgebraicFieldzRealField.from_AlgebraicFieldª   s0   € Ø�Š˜tŸ}š}¨WÑ5Ô5×;Ò;¸D¼HÑEÔEÑFÔFÐFr'   c                 ó,   — |                       |¦  «        S r-   r`   ra   s      r&   Úfrom_RealFieldzRealField.from_RealField­   rd   r'   c                 óH   — |j         s|                      |j        ¦  «        S d S r-   )ÚimagrB   Úrealra   s      r&   Úfrom_ComplexFieldzRealField.from_ComplexField°   s*   € ØŒ|ð 	,Ø—:’:˜gœlÑ+Ô+Ð+ð	,ð 	,r'   c                 ó0   — t          || j        |¬¦  «        S )z*Convert a real number to rational number. )r   )r   rF   )r1   rX   r   s      r&   r   zRealField.to_rational´   s   € å˜7 D¤O¸5ÐAÑAÔAÐAr'   c                 ó   — | S )z)Returns a ring associated with ``self``. © r0   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.domainsr~   )r1   r~   s     r&   Ú	get_exactzRealField.get_exact¼   s   € à*Ð*Ð*Ð*Ð*Ð*Øˆ	r'   c                 ó   — | j         S )z Returns GCD of ``a`` and ``b``. )rD   ©r1   r    Úbs      r&   ÚgcdzRealField.gcdÁ   s	   € àŒxˆr'   c                 ó   — ||z  S )z Returns LCM of ``a`` and ``b``. r{   r‚   s      r&   ÚlcmzRealField.lcmÅ   s   € à�‰sˆ
r'   c                 ó:   — | j                              |||¦  «        S )z+Check if ``a`` and ``b`` are almost equal. )r4   Úalmosteq)r1   r    rƒ   r:   s       r&   rˆ   zRealField.almosteqÉ   s   € àŒ}×%Ò% a¨¨IÑ6Ô6Ð6r'   c                 ó   — |dk    S )z8Returns ``True`` if ``a >= 0`` and ``False`` otherwise. r   r{   ©r1   r    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      à?Nr{   rŠ   s     r&   ÚexsqrtzRealField.exsqrtÑ   s   € ð  š6˜6ˆq�C‰xˆx tÐ+r'   )NNN©Tr-   )*rU   Ú
__module__Ú__qualname__Ú__doc__ÚrepÚis_RealFieldÚis_RRÚis_ExactÚis_NumericalÚis_PIDÚhas_assoc_RingÚhas_assoc_Fieldr/   Úpropertyr2   r.   r7   r:   rI   rK   rB   rQ   rV   rY   r^   rc   rf   rh   rk   rn   rp   rr   rt   rx   r   r|   r€   r„   r†   rˆ   r‹   r�   r{   r'   r&   r)   r)   6   sN  € € € € € à2Ð2à
€CàÐ€L�5à€HØ€LØ€Fà€NØ€OàÐàð9ð 9ñ „Xð9ð ð"ð "ñ „Xð"ð ð!ð !ñ „Xð!ð ðð ñ „Xðð5ð 5ð 5ð 5ð4 ðð ñ „Xðð ð  ð  ðRð Rð RðLð Lð Lð(ð (ð (ðHð Hð Hð#ð #ð #ð#ð #ð #ð(ð (ð (ðHð Hð HðHð Hð HðMð Mð MðGð Gð Gð#ð #ð #ð,ð ,ð ,ðBð Bð Bð Bðð ð ðð ð ð
ð ð ðð ð ð7ð 7ð 7ð 7ðð ð ð,ð ,ð ,ð ,ð ,r'   r)   NrŽ   )r‘   Úsympy.external.gmpyr   r   Úsympy.core.numbersr   Úsympy.polys.domains.fieldr   Ú sympy.polys.domains.simpledomainr   Ú&sympy.polys.domains.characteristiczeror   Úsympy.polys.polyerrorsr	   Úsympy.utilitiesr
   Úmpmathr   Úmpmath.libmpr   r   r)   r*   r{   r'   r&   ú<module>r¤      s  ðØ 2Ð 2ð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø $Ð $Ð $Ð $Ð $Ð $Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø EÐ EÐ EÐ EÐ EÐ EØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ð#4ð #4ð #4ð #4ðL ðb,ð b,ð b,ð b,ð b,�Ð)¨<ñ b,ô b,ñ „ðb,ðJ €Y�[„[€€€r'   