
    Цi                     ^    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 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         `/var/www/html/ai-image-ml/venv/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                 .    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.one,   s    zz~~r   c                 .    U R                   R                  $ r   )r   r   r%   s    r   r   FractionField.order0   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__4   s4    4;;#%S$,,1G(HH3NNr   c                     [        U R                  R                  U R                  R                  U R
                  U R                  45      $ r   )hash	__class____name__r   r   r   r   r%   s    r   __hash__FractionField.__hash__7   s2    T^^,,djj.>.>T\\Z[[r   c                     [        U[        5      =(       a[    U R                  R                  U R                  U R
                  4UR                  R                  UR                  UR
                  4:H  $ )z0Returns ``True`` if two domains are equivalent. )r   r	   r   r   r   r   )r   others     r   __eq__FractionField.__eq__:   sS    %/ =ZZt{{DLL9[[emm<=	=r   c                 "    UR                  5       $ )z!Convert ``a`` to a SymPy object. )as_exprr   as     r   to_sympyFractionField.to_sympy@   s    yy{r   c                 8    U R                   R                  U5      $ )z)Convert SymPy's expression to ``dtype``. )r   	from_exprrA   s     r   
from_sympyFractionField.from_sympyD   s    zz##A&&r   c                 D    U " U R                   R                  X5      5      $ z.Convert a Python ``int`` object to ``dtype``. r   convertK1rB   K0s      r   from_ZZFractionField.from_ZZH       "))##A*++r   c                 D    U " U R                   R                  X5      5      $ rJ   rK   rM   s      r   from_ZZ_pythonFractionField.from_ZZ_pythonL   rR   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)rN   rB   rO   r   convs        r   from_QQFractionField.from_QQP   s^    ii99d288A;+,r$rxx{B2G/HHHd1k?"r   c                 D    U " U R                   R                  X5      5      $ rW   rK   rM   s      r   from_QQ_pythonFractionField.from_QQ_pythonY   rR   r   c                 D    U " U R                   R                  X5      5      $ )z,Convert a GMPY ``mpz`` object to ``dtype``. rK   rM   s      r   from_ZZ_gmpyFractionField.from_ZZ_gmpy]   rR   r   c                 D    U " U R                   R                  X5      5      $ )z,Convert a GMPY ``mpq`` object to ``dtype``. rK   rM   s      r   from_QQ_gmpyFractionField.from_QQ_gmpya   rR   r   c                 D    U " U R                   R                  X5      5      $ )z4Convert a ``GaussianRational`` object to ``dtype``. rK   rM   s      r   from_GaussianRationalField(FractionField.from_GaussianRationalFielde   rR   r   c                 D    U " U R                   R                  X5      5      $ )z3Convert a ``GaussianInteger`` object to ``dtype``. rK   rM   s      r   from_GaussianIntegerRing&FractionField.from_GaussianIntegerRingi   rR   r   c                 D    U " U R                   R                  X5      5      $ z.Convert a mpmath ``mpf`` object to ``dtype``. rK   rM   s      r   from_RealFieldFractionField.from_RealFieldm   rR   r   c                 D    U " U R                   R                  X5      5      $ ro   rK   rM   s      r   from_ComplexFieldFractionField.from_ComplexFieldq   rR   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   rX   r!   rM   s      r   from_AlgebraicField!FractionField.from_AlgebraicFieldu   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_groundrX   coeffr   r!   set_ringr   ringr   r   rM   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   rM   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_positiverZ   LCrA   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_negativerZ   r   rA   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_nonpositiverZ   r   rA   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_nonnegativerZ   r   rA   s     r   r   FractionField.is_nonnegative   r   r   c                     UR                   $ )zReturns numerator of ``a``. )rZ   rA   s     r   rZ   FractionField.numer       wwr   c                     UR                   $ )zReturns denominator of ``a``. )r[   rA   s     r   r[   FractionField.denom   r   r   c                 V    U R                  U R                  R                  U5      5      $ )zReturns factorial of ``a``. )r   r   	factorialrA   s     r   r   FractionField.factorial   s     zz$++//233r   )r   r   r   r   r   r   r   )NN)*r8   
__module____qualname____firstlineno____doc__is_FractionFieldis_Frachas_assoc_Ringhas_assoc_Fieldr   r!   propertyr$   r(   r   r3   r9   r=   rC   rG   rP   rT   r]   r`   rc   rf   ri   rl   rp   rs   rv   r~   r   r   r   r   r   r   rZ   r[   r   __static_attributes__ r   r   r	   r	   	   s    J!%%wNO&-        O\=',,#,,,,,,, 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 "g4E? g4 g4r   