
    \hj                     h    S r SSKJrJrJrJrJr  SSKJ	r	  SSK
Jr  SSKJr  \ " S S\	5      5       rg)	z4Implementation of :class:`GMPYRationalField` class.     )GMPYRationalSymPyRational
gmpy_numer
gmpy_denom	factorial)RationalField)CoercionFailed)publicc                       \ rS rSrSr\r\" S5      r\" S5      r\	" \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 rS rS rS rSrg)GMPYRationalField   zRational field based on GMPY's ``mpq`` type.

This will be the implementation of :ref:`QQ` if ``gmpy`` or ``gmpy2`` is
installed. Elements will be of type ``gmpy.mpq``.
r      QQ_gmpyc                     g )N )selfs    ]/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/domains/gmpyrationalfield.py__init__GMPYRationalField.__init__   s        c                     SSK Jn  U" 5       $ )z'Returns ring associated with ``self``. r   )GMPYIntegerRing)sympy.polys.domainsr   )r   r   s     r   get_ringGMPYRationalField.get_ring   s    7  r   c                 b    [        [        [        U5      5      [        [        U5      5      5      $ )z!Convert ``a`` to a SymPy object. )r   intr   r   r   as     r   to_sympyGMPYRationalField.to_sympy"   s&    SA/ A/1 	1r   c                     UR                   (       a   [        UR                  UR                  5      $ UR                  (       a+  SSKJn  [        [        [        UR                  U5      5      6 $ [        SU-  5      e)z&Convert SymPy's Integer to ``dtype``. r   )RRz$expected ``Rational`` object, got %s)is_Rationalr   pqis_Floatr   r#   mapr   to_rationalr	   )r   r   r#   s      r   
from_sympyGMPYRationalField.from_sympy'   sT    ==QSS))ZZ.S"..*;!<== !G!!KLLr   c                     [        U5      $ )z.Convert a Python ``int`` object to ``dtype``. r   K1r   K0s      r   from_ZZ_python GMPYRationalField.from_ZZ_python1       Ar   c                 B    [        UR                  UR                  5      $ )z3Convert a Python ``Fraction`` object to ``dtype``. )r   	numeratordenominatorr.   s      r   from_QQ_python GMPYRationalField.from_QQ_python5   s    AKK77r   c                     [        U5      $ )z,Convert a GMPY ``mpz`` object to ``dtype``. r-   r.   s      r   from_ZZ_gmpyGMPYRationalField.from_ZZ_gmpy9   r3   r   c                     U$ )z,Convert a GMPY ``mpq`` object to ``dtype``. r   r.   s      r   from_QQ_gmpyGMPYRationalField.from_QQ_gmpy=   s    r   c                 N    UR                   S:X  a  [        UR                  5      $ g)z3Convert a ``GaussianElement`` object to ``dtype``. r   N)yr   xr.   s      r   from_GaussianRationalField,GMPYRationalField.from_GaussianRationalFieldA   s!    33!8$$ r   c                 L    [        [        [        UR                  U5      5      6 $ )z.Convert a mpmath ``mpf`` object to ``dtype``. )r   r(   r   r)   r.   s      r   from_RealField GMPYRationalField.from_RealFieldF   s    SbnnQ&7899r   c                 0    [        U5      [        U5      -  $ )z=Exact quotient of ``a`` and ``b``, implies ``__truediv__``.  r-   r   r   bs      r   exquoGMPYRationalField.exquoJ       Aa00r   c                 0    [        U5      [        U5      -  $ )z6Quotient of ``a`` and ``b``, implies ``__truediv__``. r-   rH   s      r   quoGMPYRationalField.quoN   rL   r   c                     U R                   $ )z0Remainder of ``a`` and ``b``, implies nothing.  )zerorH   s      r   remGMPYRationalField.remR   s    yyr   c                 H    [        U5      [        U5      -  U R                  4$ )z6Division of ``a`` and ``b``, implies ``__truediv__``. )r   rQ   rH   s      r   divGMPYRationalField.divV   s    Aa0$));;r   c                     UR                   $ )zReturns numerator of ``a``. )r5   r   s     r   numerGMPYRationalField.numerZ   s    {{r   c                     UR                   $ )zReturns denominator of ``a``. )r6   r   s     r   denomGMPYRationalField.denom^   s    }}r   c                 <    [        [        [        U5      5      5      $ )zReturns factorial of ``a``. )r   gmpy_factorialr   r   s     r   r   GMPYRationalField.factorialb   s    N3q6233r   r   N)__name__
__module____qualname____firstlineno____doc__r   dtyperQ   onetypetpaliasr   r   r    r*   r1   r7   r:   r=   rB   rE   rJ   rN   rR   rU   rX   r[   r   __static_attributes__r   r   r   r   r      s     E8D
(C	cBE!
1
M8%
:11<4r   r   N)rd   sympy.polys.domains.groundtypesr   r   r   r   r   r^   !sympy.polys.domains.rationalfieldr   sympy.polys.polyerrorsr	   sympy.utilitiesr
   r   r   r   r   <module>ro      s9    :  < 1 "W4 W4 W4r   