ó
    Š*£h8  ã                   ó´   • S r SSKJrJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJr  SS
KJr  SS jr\ " S S\\\	5      5       r\" 5       rg)z,Implementation of :class:`RealField` class. é    )Ú
SYMPY_INTSÚMPQ)ÚFloat)ÚField)ÚSimpleDomain)ÚCharacteristicZero)ÚCoercionFailed)Úpublic)Ú	MPContext)Úto_rationalc                 óú  • [        U R                  5      u  p4[        U5      n[        U5      nU(       a  XA::  a  X44$ Su  pVpxX4p© Xš-  nXkU-  -   nXÁ:”  a  OXxX[U-  -   U4u  pVpxX©Xº-  -
  p©M'  X-
  U-  n[        X45      n[        X]U-  -   XmU-  -   5      n[        Xx5      nU(       a  U(       d  X44$ [	        UU-
  5      [	        Xþ-
  5      ::  a  UR
                  UR                  4$ UR
                  UR                  4$ )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                    ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/polys/domains/realfield.pyr   r      s  € ä˜qŸw™wÓ'�D€Aô
 	ˆA‹€AÜˆA‹€Aæ�A“NØˆtˆà�N€BˆBØ€qà
Ø‰DˆØ�B‘$‰YˆØ‹>ØØ ¨¡d¡¨BÐ.‰ˆ�Ø�a‘c‘'ˆ1ñ ð 
‰˜"Ñ€Aä�‹Y€FÜ�˜‘d‘˜B 2¡™IÓ&€FÜ�‹[€FæžØˆtˆÜ	ˆV�f‰_Ó	¤ V¡_Ó!5Ó	5Ø×Ñ ×!3Ñ!3Ð3Ð3à×Ñ ×!3Ñ!3Ð3Ð3ó    c                   ó"  • \ rS rSrSrSrS=rrSrSr	Sr
SrSrSr\S 5       r\S 5       r\S	 5       r\S
 5       rS%S jr\S 5       rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S&S jr#S r$S r%S r&S  r'S'S! jr(S" r)S# r*S$r+g)(Ú	RealFieldé6   z(Real numbers up to the given precision. ÚRRTFé5   c                 ó4   • U R                   U R                  :H  $ ©N)Ú	precisionÚ_default_precision©Úselfs    r&   Úhas_default_precisionÚRealField.has_default_precisionG   s   € à�~‰~ ×!8Ñ!8Ñ8Ð8r'   c                 ó.   • U R                   R                  $ r.   )Ú_contextÚprecr1   s    r&   r/   ÚRealField.precisionK   s   € à�}‰}×!Ñ!Ð!r'   c                 ó.   • U R                   R                  $ r.   )r6   Údpsr1   s    r&   r:   ÚRealField.dpsO   s   € à�}‰}× Ñ Ð r'   c                 ó   • U R                   $ r.   )Ú
_tolerancer1   s    r&   Ú	toleranceÚRealField.toleranceS   s   € à�‰Ðr'   Nc                 óŠ  • [        5       nUc  Uc  U R                  Ul        OUc  Xl        OUc  X$l        O[	        S5      eX@l        UR                  U l        U R                  S5      U l	        U R                  S5      U l
        [        SUR                  -  S-  S5      U l        U R                  U R                  -  U l        g )NzCannot set both prec and dpsr   r   é   éÈ   éc   )r   r0   r7   r:   Ú	TypeErrorr6   ÚmpfÚ_dtypeÚdtypeÚzeroÚoneÚmaxÚ
_max_denomr=   )r2   r7   r:   ÚtolÚcontexts        r&   Ú__init__ÚRealField.__init__W   s    € ô “+ˆà‰<˜C™KØ×2Ñ2ˆG�LØ‰[Ø�LØ‰\Ø�KäÐ:Ó;Ð;àŒà—k‘kˆŒØ—J‘J˜q“MˆŒ	Ø—:‘:˜a“=ˆŒô ˜a §¡™o°Ñ4°bÓ9ˆŒØŸ(™( T§_¡_Ñ4ˆ�r'   c                 ó   • U R                   $ r.   )rF   r1   s    r&   ÚtpÚRealField.tpq   s   € ð �{‰{Ðr'   c                 ód   • [        U[        5      (       a  [        U5      nU R                  U5      $ r.   )Ú
isinstancer   r   rF   )r2   Úargs     r&   rG   ÚRealField.dtypey   s)   € ô �cœ:×&Ñ&Ü�c“(ˆCØ�{‰{˜3ÓÐr'   c                 ób   • [        U[        5      =(       a    U R                  UR                  :H  $ r.   )rT   r)   r/   )r2   Úothers     r&   Ú__eq__ÚRealField.__eq__�   s!   € Ü˜%¤Ó+×Q°·±À%Ç/Á/Ñ0QÐQr'   c                 ón   • [        U R                  R                  U R                  U R                  45      $ r.   )ÚhashÚ	__class__Ú__name__rF   r/   r1   s    r&   Ú__hash__ÚRealField.__hash__„   s&   € Ü�T—^‘^×,Ñ,¨d¯k©k¸4¿>¹>ÐJÓKÐKr'   c                 ó,   • [        XR                  5      $ )z%Convert ``element`` to SymPy number. )r   r:   )r2   Úelements     r&   Úto_sympyÚRealField.to_sympy‡   s   € ä�WŸh™hÓ'Ð'r'   c                 ó”   • UR                  U R                  S9nUR                  (       a  U R                  U5      $ [	        SU-  5      e)z%Convert SymPy's number to ``dtype``. )r   zexpected real number, got %s)Úevalfr:   Ú	is_NumberrG   r	   )r2   Úexprr#   s      r&   Ú
from_sympyÚRealField.from_sympy‹   s?   € à—‘˜dŸh™h�Ð'ˆà××Ø—:‘:˜fÓ%Ð%ä Ð!?À$Ñ!FÓGÐGr'   c                 ó$   • U R                  U5      $ r.   ©rG   ©r2   rb   Úbases      r&   Úfrom_ZZÚRealField.from_ZZ”   ó   € Ø�z‰z˜'Ó"Ð"r'   c                 ó$   • U R                  U5      $ r.   rl   rm   s      r&   Úfrom_ZZ_pythonÚRealField.from_ZZ_python—   rq   r'   c                 ó6   • U R                  [        U5      5      $ r.   )rG   r   rm   s      r&   Úfrom_ZZ_gmpyÚRealField.from_ZZ_gmpyš   s   € Ø�z‰zœ#˜g›,Ó'Ð'r'   c                 ód   • U R                  UR                  5      [        UR                  5      -  $ r.   ©rG   r   r   r   rm   s      r&   Úfrom_QQÚRealField.from_QQ¡   ó'   € Ø�z‰z˜'×+Ñ+Ó,¬s°7×3FÑ3FÓ/GÑGÐGr'   c                 ód   • U R                  UR                  5      [        UR                  5      -  $ r.   ry   rm   s      r&   Úfrom_QQ_pythonÚRealField.from_QQ_python¤   r|   r'   c                 óv   • U R                  [        UR                  5      5      [        UR                  5      -  $ r.   )rG   r   r   r   rm   s      r&   Úfrom_QQ_gmpyÚRealField.from_QQ_gmpy§   s,   € Ø�z‰zœ#˜g×/Ñ/Ó0Ó1´C¸×8KÑ8KÓ4LÑLÐLr'   c                 ót   • U R                  UR                  U5      R                  U R                  5      5      $ r.   )ri   rc   rf   r:   rm   s      r&   Úfrom_AlgebraicFieldÚRealField.from_AlgebraicFieldª   s)   € Ø�‰˜tŸ}™}¨WÓ5×;Ñ;¸D¿H¹HÓEÓFÐFr'   c                 ó$   • U R                  U5      $ r.   rl   rm   s      r&   Úfrom_RealFieldÚRealField.from_RealField­   rq   r'   c                 ó\   • UR                   (       d  U R                  UR                  5      $ g r.   )ÚimagrG   Úrealrm   s      r&   Úfrom_ComplexFieldÚRealField.from_ComplexField°   s!   € Ø�|�|Ø—:‘:˜gŸl™lÓ+Ð+ð r'   c                 ó*   • [        XR                  US9$ )z*Convert a real number to rational number. )r   )r   rK   )r2   rb   r   s      r&   r   ÚRealField.to_rational´   s   € ä˜7§O¡O¸5ÑAÐAr'   c                 ó   • U $ )z)Returns a ring associated with ``self``. © r1   s    r&   Úget_ringÚRealField.get_ring¸   s   € àˆr'   c                 ó   • SSK Jn  U$ )z2Returns an exact domain associated with ``self``. r   )ÚQQ)Úsympy.polys.domainsr•   )r2   r•   s     r&   Ú	get_exactÚRealField.get_exact¼   s
   € å*Øˆ	r'   c                 ó   • U R                   $ )z Returns GCD of ``a`` and ``b``. )rI   ©r2   r    Úbs      r&   ÚgcdÚRealField.gcdÁ   s   € à�x‰xˆr'   c                 ó
   • X-  $ )z Returns LCM of ``a`` and ``b``. r‘   rš   s      r&   ÚlcmÚRealField.lcmÅ   s	   € à‰sˆ
r'   c                 ó:   • U R                   R                  XU5      $ )z+Check if ``a`` and ``b`` are almost equal. )r6   Úalmosteq)r2   r    r›   r>   s       r&   r¢   ÚRealField.almosteqÉ   s   € à�}‰}×%Ñ% a¨IÓ6Ð6r'   c                 ó   • US:¬  $ )z8Returns ``True`` if ``a >= 0`` and ``False`` otherwise. r   r‘   ©r2   r    s     r&   Ú	is_squareÚRealField.is_squareÍ   s   € à�A‰vˆr'   c                 ó   • US:¼  a  US-  $ 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&   ÚexsqrtÚRealField.exsqrtÑ   s   € ð  ›6ˆq�C‰xÐ+ tÐ+r'   )r6   rF   rK   r=   rI   rH   )NNN©Tr.   ),r^   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚrepÚis_RealFieldÚis_RRÚis_ExactÚis_NumericalÚis_PIDÚhas_assoc_RingÚhas_assoc_Fieldr0   Úpropertyr3   r/   r:   r>   rN   rQ   rG   rY   r_   rc   ri   ro   rs   rv   rz   r~   r�   r„   r‡   rŒ   r   r’   r—   rœ   rŸ   r¢   r¦   r©   Ú__static_attributes__r‘   r'   r&   r)   r)   6   s  † á2à
€CàÐ€L�5à€HØ€LØ€Fà€NØ€OàÐàñ9ó ð9ð ñ"ó ð"ð ñ!ó ð!ð ñó ðô5ð4 ñó ðò òRòLò(òHò#ò#ò(òHòHòMòGò#ò,ôBòòò
òô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Ã      sX   ðÙ 2÷ 0Ý $Ý +Ý 9Ý EÝ 1Ý "å Ý ;ô#4ðL ôb,�Ð)¨<ó b,ó ðb,ñJ ƒ[�r'   