
    \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  pVpxXX-  -
  pM'  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                    U/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/domains/realfield.pyr   r      s   qww'DA
 	AAAAANtNBBq
DB$Y>dB.ac'1  
"AYFdB2I&F[Ft	Vf_	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)(	RealField6   z(Real numbers up to the given precision. RRTF5   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     +<CK22GL[L\K:;;kkJJqM	::a= ao4b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^^,,dkk4>>JKKr'   c                 ,    [        XR                  5      $ )z%Convert ``element`` to SymPy number. )r   r:   )r2   elements     r&   to_sympyRealField.to_sympy   s    Whh''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?    dhh'::f%% !?$!FGGr'   c                 $    U R                  U5      $ r.   rG   r2   rb   bases      r&   from_ZZRealField.from_ZZ       zz'""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    zz#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   '    zz'++,s73F3F/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,    zz#g//01C8K8K4L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;;DHH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!    ||::gll++ 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    7OO5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    xx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    }}%%aI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    Avr'   c                     US:  a  US-  $ S$ )zNon-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     6qCx+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L5HLFNO9 9 " " ! !  54   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 "  ;#4L b,)< b, b,J [r'   