
    \h                     ^    S r SSKJr  SSKJr  SSKJrJr  SSKJ	r	  \	 " S S\\5      5       r
g)	z0Implementation of :class:`FractionField` class.     )CompositeDomain)Field)CoercionFailedGeneratorsError)publicc                   
   \ rS rSrSrS=rrSrSrS&S jr	S r
S r\S 5       r\S	 5       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 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)'FractionField	   z@A class for representing multivariate rational function fields. TNc                 ,   SSK Jn  [        X5      (       a	  Uc  Uc  UnO	U" X!U5      nXPl        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        UR                  U l        U R                  U l	        g )Nr   )	FracField)
sympy.polys.fieldsr   
isinstancefielddtypegensngenssymbolsdomaindom)selfdomain_or_fieldr   orderr   r   s         Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/domains/fractionfield.py__init__FractionField.__init__   sr    0o11go%-#Eg>E
[[
JJ	[[
}}ll ;;    c                 8    U R                   R                  U5      $ N)r   	field_newr   elements     r   newFractionField.new%   s    zz##G,,r   c                 8    U R                   R                  U5      $ )z%Check if ``a`` is of type ``dtype``. )r   
is_elementr    s     r   of_typeFractionField.of_type(   s    zz$$W--r   c                 .    U R                   R                  $ r   )r   zeror   s    r   r)   FractionField.zero,   s    zzr   c                 .    U R                   R                  $ r   )r   oner*   s    r   r-   FractionField.one0   s    zz~~r   c                 .    U R                   R                  $ r   )r   r   r*   s    r   r   FractionField.order4   s    zzr   c                     [        U R                  5      S-   SR                  [        [         U R                  5      5      -   S-   $ )N(,))strr   joinmapr   r*   s    r   __str__FractionField.__str__8   s4    4;;#%S$,,1G(HH3NNr   c                     [        U R                  R                  U R                  U R                  U R
                  45      $ r   )hash	__class____name__r   r   r   r*   s    r   __hash__FractionField.__hash__;   s,    T^^,,djj$++t||TUUr   c                 j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ )z0Returns ``True`` if two domains are equivalent. )r   r	   NotImplementedr   )r   others     r   __eq__FractionField.__eq__>   s(    %//!!zzU[[((r   c                 "    UR                  5       $ )z!Convert ``a`` to a SymPy object. )as_exprr   as     r   to_sympyFractionField.to_sympyD   s    yy{r   c                 8    U R                   R                  U5      $ )z)Convert SymPy's expression to ``dtype``. )r   	from_exprrG   s     r   
from_sympyFractionField.from_sympyH   s    zz##A&&r   c                 D    U " U R                   R                  X5      5      $ z.Convert a Python ``int`` object to ``dtype``. r   convertK1rH   K0s      r   from_ZZFractionField.from_ZZL       "))##A*++r   c                 D    U " U R                   R                  X5      5      $ rP   rQ   rS   s      r   from_ZZ_pythonFractionField.from_ZZ_pythonP   rX   r   c                     U R                   nUR                  nUR                  (       a=  U " U" UR                  U5      U5      5      U " U" UR	                  U5      U5      5      -  $ U " U" X5      5      $ z3Convert a Python ``Fraction`` object to ``dtype``. )r   convert_fromis_ZZnumerdenom)rT   rH   rU   r   convs        r   from_QQFractionField.from_QQT   s^    ii99d288A;+,r$rxx{B2G/HHHd1k?"r   c                 D    U " U R                   R                  X5      5      $ r]   rQ   rS   s      r   from_QQ_pythonFractionField.from_QQ_python]   rX   r   c                 D    U " U R                   R                  X5      5      $ )z,Convert a GMPY ``mpz`` object to ``dtype``. rQ   rS   s      r   from_ZZ_gmpyFractionField.from_ZZ_gmpya   rX   r   c                 D    U " U R                   R                  X5      5      $ )z,Convert a GMPY ``mpq`` object to ``dtype``. rQ   rS   s      r   from_QQ_gmpyFractionField.from_QQ_gmpye   rX   r   c                 D    U " U R                   R                  X5      5      $ )z4Convert a ``GaussianRational`` object to ``dtype``. rQ   rS   s      r   from_GaussianRationalField(FractionField.from_GaussianRationalFieldi   rX   r   c                 D    U " U R                   R                  X5      5      $ )z3Convert a ``GaussianInteger`` object to ``dtype``. rQ   rS   s      r   from_GaussianIntegerRing&FractionField.from_GaussianIntegerRingm   rX   r   c                 D    U " U R                   R                  X5      5      $ z.Convert a mpmath ``mpf`` object to ``dtype``. rQ   rS   s      r   from_RealFieldFractionField.from_RealFieldq   rX   r   c                 D    U " U R                   R                  X5      5      $ ru   rQ   rS   s      r   from_ComplexFieldFractionField.from_ComplexFieldu   rX   r   c                     U R                   U:w  a  U R                   R                  X5      nUb  U R                  U5      $ g)z*Convert an algebraic number to ``dtype``. N)r   r^   r"   rS   s      r   from_AlgebraicField!FractionField.from_AlgebraicFieldy   s9    99?		&&q-A=66!9 r   c                 b   UR                   (       a+  U R                  UR                  S5      UR                  5      $  U R	                  UR                  U R                  R                  5      5      $ ! [        [        4 a,     U R	                  U5      s $ ! [        [        4 a      gf = ff = f)z#Convert a polynomial to ``dtype``.    N)
	is_groundr^   coeffr   r"   set_ringr   ringr   r   rS   s      r   from_PolynomialRing!FractionField.from_PolynomialRing   s    ;;??1771:ryy99
	66!**RXX]]3440 	
vvay "O4 	s/   3A2 2B.BB.B*&B.)B**B.c                 f     UR                  U R                  5      $ ! [        [        4 a     gf = f)z*Convert a rational function to ``dtype``. N)	set_fieldr   r   r   rS   s      r   from_FractionField FractionField.from_FractionField   s1    	;;rxx((0 		s    00c                 R    U R                   R                  5       R                  5       $ )z*Returns a field associated with ``self``. )r   to_ring	to_domainr*   s    r   get_ringFractionField.get_ring   s    zz!!#--//r   c                 `    U R                   R                  UR                  R                  5      $ )z'Returns True if ``LC(a)`` is positive. )r   is_positiver`   LCrG   s     r   r   FractionField.is_positive       {{&&qwwzz22r   c                 `    U R                   R                  UR                  R                  5      $ )z'Returns True if ``LC(a)`` is negative. )r   is_negativer`   r   rG   s     r   r   FractionField.is_negative   r   r   c                 `    U R                   R                  UR                  R                  5      $ )z+Returns True if ``LC(a)`` is non-positive. )r   is_nonpositiver`   r   rG   s     r   r   FractionField.is_nonpositive       {{))!''**55r   c                 `    U R                   R                  UR                  R                  5      $ )z+Returns True if ``LC(a)`` is non-negative. )r   is_nonnegativer`   r   rG   s     r   r   FractionField.is_nonnegative   r   r   c                     UR                   $ )zReturns numerator of ``a``. )r`   rG   s     r   r`   FractionField.numer       wwr   c                     UR                   $ )zReturns denominator of ``a``. )ra   rG   s     r   ra   FractionField.denom   r   r   c                 V    U R                  U R                  R                  U5      5      $ )zReturns factorial of ``a``. )r   r   	factorialrG   s     r   r   FractionField.factorial   s     zz$++//233r   )r   r   r   r   r   r   r   )NN)+r=   
__module____qualname____firstlineno____doc__is_FractionFieldis_Frachas_assoc_Ringhas_assoc_Fieldr   r"   r&   propertyr)   r-   r   r8   r>   rC   rI   rM   rV   rZ   rc   rf   ri   rl   ro   rr   rv   ry   r|   r   r   r   r   r   r   r   r`   ra   r   __static_attributes__ r   r   r	   r	   	   s    J!%%wNO&-.        OV)',,#,,,,,,, 033664r   r	   N)r   #sympy.polys.domains.compositedomainr   sympy.polys.domains.fieldr   sympy.polys.polyerrorsr   r   sympy.utilitiesr   r	   r   r   r   <module>r      s5    6 @ + B "k4E? k4 k4r   