K i8dZddlmZmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZdd lmZdd lmZdd ZeGd d ee e ZeZy)z,Implementation of :class:`RealField` class. ) SYMPY_INTSMPQ)Float)Field) SimpleDomain)CharacteristicZero)CoercionFailed)public) MPContext) to_rationalct|j\}}t|}t|}|r||kr||fSd\}}}}||} } | | z} || |zz} | |kDrn|||| |zz| f\}}}}| | | | zz } } /||z |z} t||}t|| |zz|| |zz}t||}|r|s||fSt ||z t ||z kr|j |j fS|j |j fS)N)rrr)_mpmath_to_rational_mpf_intrabs numerator denominator)s max_denomlimitpqp0q0p1q1ndaq2knumberbound1bound2s c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/polys/domains/realfield.pyr r s? qww 'DAq AA AA AN!t NBB aqA  qD !B$Y > RadB.BB!ac'1  R"A AYF adB2I &F R[F !t Vf_ Vf_!5 5!3!333!3!333ceZdZdZdZdxZZdZdZdZ dZ dZ dZ e dZe dZe dZe d Zd#d Ze d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d$dZ"dZ#dZ$dZ%dZ&d%d Z'd!Z(d"Z)y )& RealFieldz(Real numbers up to the given precision. RRTF5c4|j|jk(SN) precision_default_precisionselfs r&has_default_precisionzRealField.has_default_precisionGs~~!8!888r'c.|jjSr-)_contextprecr0s r&r.zRealField.precisionKs}}!!!r'c.|jjSr-)r4dpsr0s r&r7z RealField.dpsOs}}   r'c|jSr-) _tolerancer0s r& tolerancezRealField.toleranceSs r'Nct}|||j|_n|||_n|||_n t d||_|j |_|jd|_ |jd|_ td|jzdzd|_ |j|jz |_ y)NzCannot set both prec and dpsrrc)r r/r5r7 TypeErrorr4mpf_dtypedtypezeroonemax _max_denomr9)r1r5r7tolcontexts r&__init__zRealField.__init__Ws+ >JKKr'c.t||jS)z%Convert ``element`` to SymPy number. )rr7)r1elements r&to_sympyzRealField.to_sympysWdhh''r'c|j|j}|jr|j|St d|z)z%Convert SymPy's number to ``dtype``. )rzexpected real number, got %s)evalfr7 is_NumberrBr )r1exprr#s r& from_sympyzRealField.from_sympys?dhh'   ::f% % !?$!FG Gr'c$|j|Sr-rBr1rXbases r&from_ZZzRealField.from_ZZzz'""r'c$|j|Sr-r`ras r&from_ZZ_pythonzRealField.from_ZZ_pythonrdr'c6|jt|Sr-)rBrras r& from_ZZ_gmpyzRealField.from_ZZ_gmpyszz#g,''r'cd|j|jt|jz Sr-rBrrrras r&from_QQzRealField.from_QQ'zz'++,s73F3F/GGGr'cd|j|jt|jz Sr-rjras r&from_QQ_pythonzRealField.from_QQ_pythonrlr'cv|jt|jt|jz Sr-)rBrrrras r& from_QQ_gmpyzRealField.from_QQ_gmpys,zz#g//01C8K8K4LLLr'ct|j|j|j|jSr-)r^rYr[r7ras r&from_AlgebraicFieldzRealField.from_AlgebraicFields)t}}W5;;DHHEFFr'c$|j|Sr-r`ras r&from_RealFieldzRealField.from_RealFieldrdr'cR|js|j|jSyr-)imagrBrealras r&from_ComplexFieldzRealField.from_ComplexFields!||::gll+ +r'c2t||j|S)z*Convert a real number to rational number. )r)r rF)r1rXrs r&r zRealField.to_rationals7DOO5AAr'c|S)z)Returns a ring associated with ``self``. r0s r&get_ringzRealField.get_rings r'cddlm}|S)z2Returns an exact domain associated with ``self``. r)QQ)sympy.polys.domainsr~)r1r~s r& get_exactzRealField.get_exacts * r'c|jS)z Returns GCD of ``a`` and ``b``. )rDr1r bs r&gcdz RealField.gcds xxr'c ||zS)z Returns LCM of ``a`` and ``b``. r{rs r&lcmz RealField.lcms s r'c<|jj|||S)z+Check if ``a`` and ``b`` are almost equal. )r4almosteq)r1r rr:s r&rzRealField.almosteqs}}%%aI66r'c |dk\S)z8Returns ``True`` if ``a >= 0`` and ``False`` otherwise. rr{r1r s r& is_squarezRealField.is_squares Av r'c|dk\r|dzSdS)zNon-negative square root for ``a >= 0`` and ``None`` otherwise. Explanation =========== The square root may be slightly inaccurate due to floating point rounding error. rg?Nr{rs r&exsqrtzRealField.exsqrts6qCx+t+r')NNNTr-)*rU __module__ __qualname____doc__rep is_RealFieldis_RRis_Exact is_Numericalis_PIDhas_assoc_Ringhas_assoc_Fieldr/propertyr2r.r7r:rIrKrBrQrVrYr^rcrfrhrkrnrprrrtrxr r|rrrrrrr{r'r&r)r)6s2 CL5HL FNO 99""!!54 RL(H##(HHMG#,B 7,r'r)Nr)rsympy.external.gmpyrrsympy.core.numbersrsympy.polys.domains.fieldr sympy.polys.domains.simpledomainr&sympy.polys.domains.characteristiczerorsympy.polys.polyerrorsr sympy.utilitiesr mpmathr mpmath.libmpr rr)r*r{r'r&rsX20$+9E1";#4Lb,)<b,b,J[r'