
    g                        d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ e G d de	e                      Ze G d	 d
e
e                      Zej        Ze G d de                      Z dS )zReal and complex elements.     )MPQ)DomainElement)public)PythonMPContext_mpf_mpc	_constant)MPZ_ONEfzerofonefinffninffnanround_nearestmpf_mulrepr_dps	int_typesfrom_int
from_floatfrom_strto_rationalc                   <    e Zd ZdZdZd Z ed e          Zd ZdS )RealElementzAn element of a real domain. __mpf__c                     || _         d S Nr   selfvals     Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/domains/mpelements.py_set_mpfzRealElement._set_mpf           c                     | j         S r   r   r   s    r!   <lambda>zRealElement.<lambda>       $, r$   c                     | j         j        S r   context_parentr&   s    r!   parentzRealElement.parent       |##r$   N)	__name__
__module____qualname____doc__	__slots__r"   property_mpf_r-    r$   r!   r   r      sT        ''I   H..99E$ $ $ $ $r$   r   c                   <    e Zd ZdZdZd Z ed e          Zd ZdS )ComplexElementz An element of a complex domain. __mpc__c                     || _         d S r   r9   r   s     r!   _set_mpczComplexElement._set_mpc"   r#   r$   c                     | j         S r   r9   r&   s    r!   r'   zComplexElement.<lambda>%   r(   r$   c                     | j         j        S r   r*   r&   s    r!   r-   zComplexElement.parent'   r.   r$   N)	r/   r0   r1   r2   r3   r<   r4   _mpc_r-   r6   r$   r!   r8   r8      sT        **I   H..99E$ $ $ $ $r$   r8   c                   j    e Zd ZddZd Zd Zd Zd Zed	             Z	ed
             Z
ddZddZdS )	MPContext5   NFc                    |t           g| _        ||                     |           n|                     |           t          | _        t          | _        | j        t          | j        g| j        _	        | j        t          | j        g| j        _	        |r| | j        _
        n| | j        _
        t          | _        | j        t          | j        g| j        _	        | | j        _
        | j        | j        | j        g| _        d| _        d| _        ||                                 | _        n+|du rt$          | _        n|                     |          | _        |                     | j                  | _        | j        sd| _        nt/          d| j        z            | _        |                     t$                    | _        |                     t2                    | _        |                     t$          t2          f          | _        |                     t:                    | _        |                     t>                    | _         |                     tB                    | _"        d S )NTFi@B    )#r   _prec_rounding	_set_prec_set_dpsr   mpfr8   mpcnew_ctxdatar+   r	   constanttypestrap_complexpretty	_make_toltolr   _convert_tolmake_mpf	tolerance	max_denomintzeror   onemake_mpcjr   infr   ninfr   nan)ctxprecdpsrQ   reals        r!   __init__zMPContext.__init__/   s   "M2;MM$LL GS#*<=GS#*<= 	"!CGOO!CGO !$#s/A B"Wcgs|4	
;mmooCGGE\\CGG&&s++CGSW--} 	1#CMM#-00CM<<&&,,t$$eT]++,,t$$<<&&,,t$$r$   c                 L    d}dt           d| j        z
  df}t          ||          S )N)r            r   rD   )r
   r_   r   )r^   hundredepss      r!   rP   zMPContext._make_tol^   s+    '1SX:q)w$$$r$   c                 P    |                      |                                           S r   )rS   rP   r^   s    r!   make_tolzMPContext.make_tolc   s    ||CMMOO,,,r$   c                 D   t          |t                    rt          |          S t          |t                    rt	          |          S t          |d          r|j        S | j        \  }}t          |t                    rt          |||          S t          d|z            )Nr5   zexpected a real number, got %s)
isinstancer   r   floatr   hasattrr5   rE   strr   
ValueError)r^   rQ   r_   roundings       r!   rR   zMPContext._convert_tolf   s    c9%% 	!C== c5!! 	#c??"3   	9+hc3 	1Cx0009C?@@@r$   c                 @    t          dt          |          z             )Nzcannot create mpf from )	TypeErrorrepr)r^   xstringss      r!   _convert_fallbackzMPContext._convert_fallbackr   s    1DGG;<<<r$   c                 *    t          | j                  S r   )r   _precrj   s    r!   _repr_digitszMPContext._repr_digitsu   s    	"""r$   c                     | j         S r   )_dpsrj   s    r!   _str_digitszMPContext._str_digitsy   s	    xr$   Tc                    t          |j                  \  }}t          |          }|r|| j        k    r||fS d\  }}}}||}
}		 |	|
z  }|||z  z   }|| j        k    rn|||||z  z   |f\  }}}}|
|	||
z  z
  }
}	5| j        |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   rD   rD   r   )r   r5   rV   rU   r   abs	numeratordenominator)r^   slimitpqp0q0p1q1ndaq2knumberbound1bound2s                    r!   r   zMPContext.to_rational}   s]   17##1
 FF 	S]**a4K#BB!1	1AadBCM!!R!B$Y2NBBa!A#gqA	 ]R"$QR!B$YQrT	**R 	8V 	8a4K&!!S&%9%999#V%777#V%777r$   c                 j   |                      |          }||| j        p|                                 x}}||                      |          }n||                      |          }t          ||z
            }||k    rdS t          |          }t          |          }||k     r||z  }n||z  }||k    S )NT)convertrT   rk   r   )	r^   r   trel_epsabs_epsdiffabssabsterrs	            r!   almosteqzMPContext.almosteq   s    KKNN?w # ??Gg?kk'**GG_kk'**G1Q3xx7??41vv1vv$;;t)CCt)Cg~r$   )rB   NNF)T)NN)r/   r0   r1   rb   rP   rk   rR   rx   r4   r{   r~   r   r   r6   r$   r!   rA   rA   ,   s        -% -% -% -%^% % %
- - -
A 
A 
A= = = # # X#   X!8 !8 !8 !8F     r$   rA   N)!r2   sympy.external.gmpyr   !sympy.polys.domains.domainelementr   sympy.utilitiesr   mpmath.ctx_mp_pythonr   r   r   r	   mpmath.libmpr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   object__new__rJ   rA   r6   r$   r!   <module>r      s   ! ! $ # # # # # ; ; ; ; ; ; " " " " " " G G G G G G G G G G G G1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 $ $ $ $ $$ $ $ $ $ $ $ $ $T= $ $ $ nD D D D D D D D D Dr$   