o
    i                     @   sT   d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 e
G dd deZdS )	z6Implementation of :class:`PythonRationalField` class.     )PythonIntegerPythonRationalSymPyRational)RationalField)CoercionFailed)publicc                   @   s   e Zd ZdZeZedZedZdZdd Z	dd Z
d	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )PythonRationalFieldzRational field based on :ref:`MPQ`.

    This will be used as :ref:`QQ` if ``gmpy`` and ``gmpy2`` are not
    installed. Elements are instances of :ref:`MPQ`.
    r      Z	QQ_pythonc                 C   s   d S )N )selfr
   r
   v/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sympy/polys/domains/pythonrationalfield.py__init__   s   zPythonRationalField.__init__c                 C   s   ddl m} | S )z'Returns ring associated with ``self``. r   )PythonIntegerRing)sympy.polys.domainsr   )r   r   r
   r
   r   get_ring   s   zPythonRationalField.get_ringc                 C   s   t |j|jS )zConvert `a` to a SymPy object. )r   	numeratordenominatorr   ar
   r
   r   to_sympy   s   zPythonRationalField.to_sympyc                 C   sR   |j r
t|j|jS |jr#ddlm} ||\}}tt|t|S t	d| )z%Convert SymPy's Rational to `dtype`. r   )RRz"expected `Rational` object, got %s)
Zis_Rationalr   pqZis_Floatr   r   to_rationalintr   )r   r   r   r   r   r
   r
   r   
from_sympy"   s   zPythonRationalField.from_sympyc                 C   s   t |S )z*Convert a Python `int` object to `dtype`. )r   K1r   K0r
   r
   r   from_ZZ_python-   s   z"PythonRationalField.from_ZZ_pythonc                 C   s   |S )z/Convert a Python `Fraction` object to `dtype`. r
   r   r
   r
   r   from_QQ_python1   s   z"PythonRationalField.from_QQ_pythonc                 C   s   t t|S )z(Convert a GMPY `mpz` object to `dtype`. )r   r   r   r
   r
   r   from_ZZ_gmpy5   s   z PythonRationalField.from_ZZ_gmpyc                 C   s   t t| t| S )z(Convert a GMPY `mpq` object to `dtype`. )r   r   numerdenomr   r
   r
   r   from_QQ_gmpy9   s   
z PythonRationalField.from_QQ_gmpyc                 C   s    | |\}}tt|t|S )z*Convert a mpmath `mpf` object to `dtype`. )r   r   r   )r   r   r   r   r   r
   r
   r   from_RealField>   s   z"PythonRationalField.from_RealFieldc                 C      |j S )zReturns numerator of `a`. )r   r   r
   r
   r   r"   C      zPythonRationalField.numerc                 C   r&   )zReturns denominator of `a`. )r   r   r
   r
   r   r#   G   r'   zPythonRationalField.denomN)__name__
__module____qualname____doc__r   Zdtypezeroonealiasr   r   r   r   r   r    r!   r$   r%   r"   r#   r
   r
   r
   r   r   	   s"    r   N)r+   Zsympy.polys.domains.groundtypesr   r   r   Z!sympy.polys.domains.rationalfieldr   Zsympy.polys.polyerrorsr   Zsympy.utilitiesr   r   r
   r
   r
   r   <module>   s    