
    Цi                         S 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\\
\5      5       r\" 5       rg)z,Implementation of :class:`RealField` class.     )
SYMPY_INTS)Float)Field)SimpleDomain)CharacteristicZero)	MPContext)CoercionFailed)publicc                   (   \ 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4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   z(Real numbers up to the given precision. RRTF5   c                 4    U R                   U R                  :H  $ N)	precision_default_precisionselfs    \/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sympy/polys/domains/realfield.pyhas_default_precisionRealField.has_default_precision   s    ~~!8!888    c                 .    U R                   R                  $ r   )_contextprecr   s    r   r   RealField.precision"   s    }}!!!r   c                 .    U R                   R                  $ r   )r   dpsr   s    r   r   RealField.dps&   s    }}   r   c                 .    U R                   R                  $ r   )r   	tolerancer   s    r   r"   RealField.tolerance*   s    }}&&&r   Nc                     [        XUS5      nXl        X@l        UR                  U l        U R                  S5      U l        U R                  S5      U l        g )NTr      )r   _parentr   mpf_dtypedtypezeroone)r   r   r   tolcontexts        r   __init__RealField.__init__.   sC    DsD1kkJJqM	::a=r   c                     U R                   $ r   )r(   r   s    r   tpRealField.tp7   s     {{r   c                 d    [        U[        5      (       a  [        U5      nU R                  U5      $ r   )
isinstancer   intr(   )r   args     r   r)   RealField.dtype?   s)     c:&&c(C{{3r   c                     [        U[        5      =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r4   r   r   r"   )r   others     r   __eq__RealField.__eq__G   s;    5), 1~~01~~0	2r   c                     [        U R                  R                  U R                  U R                  U R
                  45      $ r   )hash	__class____name__r(   r   r"   r   s    r   __hash__RealField.__hash__L   s,    T^^,,dkk4>>4>>Z[[r   c                 ,    [        XR                  5      $ )z%Convert ``element`` to SymPy number. )r   r   )r   elements     r   to_sympyRealField.to_sympyO   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``. )nzexpected real number, got %s)evalfr   	is_Numberr)   r	   )r   exprnumbers      r   
from_sympyRealField.from_sympyS   s?    dhh'::f%% !?$!FGGr   c                 $    U R                  U5      $ r   r)   r   rC   bases      r   from_ZZRealField.from_ZZ\       zz'""r   c                 $    U R                  U5      $ r   rO   rP   s      r   from_ZZ_pythonRealField.from_ZZ_python_   rT   r   c                 6    U R                  [        U5      5      $ r   )r)   r5   rP   s      r   from_ZZ_gmpyRealField.from_ZZ_gmpyb   s    zz#g,''r   c                 d    U R                  UR                  5      [        UR                  5      -  $ r   r)   	numeratorr5   denominatorrP   s      r   from_QQRealField.from_QQi   '    zz'++,s73F3F/GGGr   c                 d    U R                  UR                  5      [        UR                  5      -  $ r   r\   rP   s      r   from_QQ_pythonRealField.from_QQ_pythonl   ra   r   c                 v    U R                  [        UR                  5      5      [        UR                  5      -  $ r   )r)   r5   r]   r^   rP   s      r   from_QQ_gmpyRealField.from_QQ_gmpyo   s,    zz#g//01C8K8K4LLLr   c                 t    U R                  UR                  U5      R                  U R                  5      5      $ r   )rL   rD   rH   r   rP   s      r   from_AlgebraicFieldRealField.from_AlgebraicFieldr   s)    t}}W5;;DHHEFFr   c                 2    X:X  a  U$ U R                  U5      $ r   rO   rP   s      r   from_RealFieldRealField.from_RealFieldu   s    <N::g&&r   c                 \    UR                   (       d  U R                  UR                  5      $ g r   )imagr)   realrP   s      r   from_ComplexFieldRealField.from_ComplexField{   s!    ||::gll++ r   c                 8    U R                   R                  X5      $ )z*Convert a real number to rational number. )r   to_rational)r   rC   limits      r   rt   RealField.to_rational   s    }}((88r   c                     U $ )z)Returns a ring associated with ``self``.  r   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|   )r   r|   s     r   	get_exactRealField.get_exact   s
    *	r   c                     U R                   $ )z Returns GCD of ``a`` and ``b``. )r+   r   abs      r   gcdRealField.gcd   s    xxr   c                 
    X-  $ )z Returns LCM of ``a`` and ``b``. rx   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. )r   almosteq)r   r   r   r"   s       r   r   RealField.almosteq   s    }}%%aI66r   c                     US:  $ )z8Returns ``True`` if ``a >= 0`` and ``False`` otherwise. r   rx   r   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      ?Nrx   r   s     r   exsqrtRealField.exsqrt   s     6qCx+t+r   )r   r(   r+   r*   )Tr   ),r?   
__module____qualname____firstlineno____doc__repis_RealFieldis_RRis_Exactis_Numericalis_PIDhas_assoc_Ringhas_assoc_Fieldr   propertyr   r   r   r"   r.   r1   r)   r:   r@   rD   rL   rR   rV   rY   r_   rc   rf   ri   rl   rq   rt   ry   r~   r   r   r   r   r   __static_attributes__rx   r   r   r   r      s   2
CL5HLFNO9 9 " " ! ! ' ' /Dd !   2
\(H##(HHMG',9
7,r   r   N)r   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   rx   r   r   <module>r      sM    2 + $ + 9 E 4 1 "V,)< V, V,r [r   