Ë
    7^(hS  ã                  óÄ  — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 e4e&fd„«       Z9e4e&fd„«       Z:e4e&fd„«       Z;e4d„ «       Z< G d„ de2«      Z= G d „ d!ee2e«      Z>y")#z!Sparse rational function fields. é    )Úannotations)Úreduce)ÚaddÚmulÚltÚleÚgtÚge)ÚExpr)ÚMod)ÚExp1)ÚS)ÚSymbol)ÚCantSympifyÚsympify)ÚExpBase)ÚDomain)ÚDomainElement©ÚFractionField)ÚPolynomialRing)Úconstruct_domain)ÚlexÚMonomialOrder)ÚCoercionFailed)Úbuild_options)Ú_parallel_dict_from_expr)ÚPolyRingÚPolyElement)ÚDefaultPrinting)Úpublic)Úis_sequence)Úpollutec                ó<   — t        | ||«      }|f|j                  z   S )zFConstruct new rational function field returning (field, x1, ..., xn). ©Ú	FracFieldÚgens©ÚsymbolsÚdomainÚorderÚ_fields       úP/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/fields.pyÚfieldr.      s#   € ô �w ¨Ó.€FØˆ9�v—{‘{Ñ"Ð"ó    c                ó8   — t        | ||«      }||j                  fS )zHConstruct new rational function field returning (field, (x1, ..., xn)). r%   r(   s       r-   Úxfieldr1   $   s!   € ô �w ¨Ó.€FØ�F—K‘KÐ Ð r/   c                óš   — t        | ||«      }t        |j                  D �cg c]  }|j                  ‘Œ c}|j                  «       |S c c}w )zSConstruct new rational function field and inject generators into global namespace. )r&   r#   r)   Únamer'   )r)   r*   r+   r,   Úsyms        r-   Úvfieldr5   *   s=   € ô �w ¨Ó.€FÜ &§.¡.Ö2˜3ˆc�h‹hÒ2°F·K±KÔ@Ø€Mùò 3s   ¡Ac                ó‚  — d}t        | «      s| gd}} t        t        t        | «      «      } t	        ||«      }g }| D ]!  }|j                  |j                  «       «       Œ# t        ||«      \  }}|j                  €Ft        |D �cg c]  }t        |j                  «       «      ‘Œ c}g «      }	t        |	|¬«      \  |_        }
t        |j                  |j                  |j                  «      }g }t        dt!        |«      d«      D ](  }|j#                   |t%        |||dz    «      «      «       Œ* |r||d   fS ||fS c c}w )a«  Construct a field deriving generators and domain
    from options and input expressions.

    Parameters
    ==========

    exprs   : py:class:`~.Expr` or sequence of :py:class:`~.Expr` (sympifiable)

    symbols : sequence of :py:class:`~.Symbol`/:py:class:`~.Expr`

    options : keyword arguments understood by :py:class:`~.Options`

    Examples
    ========

    >>> from sympy import exp, log, symbols, sfield

    >>> x = symbols("x")
    >>> K, f = sfield((x*log(x) + 4*x**2)*exp(1/x + log(x)/3)/x**2)
    >>> K
    Rational function field in x, exp(1/x), log(x), x**(1/3) over ZZ with lex order
    >>> f
    (4*x**2*(exp(1/x)) + x*(exp(1/x))*(log(x)))/((x**(1/3))**5)
    FT)Úoptr   é   )r"   ÚlistÚmapr   r   ÚextendÚas_numer_denomr   r*   ÚsumÚvaluesr   r&   r'   r+   ÚrangeÚlenÚappendÚtuple)Úexprsr)   ÚoptionsÚsingler7   ÚnumdensÚexprÚrepsÚrepÚcoeffsÚ_r,   ÚfracsÚis                 r-   ÚsfieldrN   1   s0  € ð4 €FÜ�uÔØ˜ ˆvˆä””W˜eÓ$Ó%€EÜ
˜ Ó
)€CØ€GØò .ˆØ�‰�t×*Ñ*Ó,Õ-ð.ä(¨°#Ó6�I€Dˆ#à
‡z�zÐô °DÖ9¨S”d˜3Ÿ:™:›<Õ(Ò9¸2Ó>ˆÜ(¨°SÔ9‰ˆŒ
�Aä�s—x‘x §¡¨S¯Y©YÓ7€FØ€EÜ�1”c˜$“i Ó#ò 1ˆØ�‰‘VœE $ q¨¨1© +Ó.Ó/Õ0ð1ñ Ø˜˜a™Ð!Ð!à˜ˆÐùò :s   Â D<c                  óÀ   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   efd„Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd d„Zd d„Zd„ Zd„ Zd„ ZeZd„ Zd„ Zd„ Zd„ Zy)!r&   z2Multivariate distributed rational function field. r   Úringztuple[FracElement, ...]r'   ztuple[Expr, ...]r)   ÚintÚngensr   r*   r   r+   c                óò  — t        |||«      }|j                  }|j                  }|j                  }|j                  }| j
                  ||||f}t        j                  | «      }||_        t        |«      |_
        ||_        ||_        ||_        ||_        ||_        t        ||j                  «      j                  |_        |j                  |j                  «      |_        |j                  |j                   «      |_        |j#                  «       |_        t'        |j                  |j$                  «      D ]<  \  }}	t)        |t*        «      sŒ|j,                  }
t/        ||
«      rŒ0t1        ||
|	«       Œ> |S ©N)r   r)   rR   r*   r+   Ú__name__ÚobjectÚ__new__Ú_hash_tupleÚhashÚ_hashrP   ÚFracElementÚzeroÚraw_newÚdtypeÚoneÚ_gensr'   ÚzipÚ
isinstancer   r3   ÚhasattrÚsetattr)Úclsr)   r*   r+   rP   rR   rX   ÚobjÚsymbolÚ	generatorr3   s              r-   rW   zFracField.__new__q   s,  € Ü˜ ¨Ó/ˆØ—,‘,ˆØ—
‘
ˆØ—‘ˆØ—
‘
ˆà—|‘| W¨e°V¸UÐCˆä�n‰n˜SÓ!ˆØ%ˆŒÜ˜Ó%ˆŒ	ØˆŒØˆŒØˆŒ	ØˆŒ
ØˆŒ	ä  T§Y¡YÓ/×7Ñ7ˆŒ	à—9‘9˜TŸY™YÓ'ˆŒØ—)‘)˜DŸH™HÓ%ˆŒà—9‘9“;ˆŒä!$ S§[¡[°#·(±(Ó!;ò 	2ÑˆF�IÜ˜&¤&Õ)Ø—{‘{�ä˜s DÕ)Ü˜C  yÕ1ð	2ð ˆ
r/   c                ó„   — t        | j                  j                  D �cg c]  }| j                  |«      ‘Œ c}«      S c c}w )z(Return a list of polynomial generators. )rB   rP   r'   r^   ©ÚselfÚgens     r-   r`   zFracField._gens“   s+   € ä°$·)±)·.±.ÖB¨3�t—z‘z #•ÒBÓCÐCùÒBs   ž=c                óH   — | j                   | j                  | j                  fS rT   )r)   r*   r+   ©rk   s    r-   Ú__getnewargs__zFracField.__getnewargs__—   s   € Ø—‘˜dŸk™k¨4¯:©:Ð6Ð6r/   c                ó   — | j                   S rT   )rZ   rn   s    r-   Ú__hash__zFracField.__hash__š   s   € Ø�z‰zÐr/   c                ó®   — | j                  |«      r)| j                  j                  |j                  «       «      S t	        d| j
                  ›d|›d�«      ‚)Nzexpected a ú, got z instead)Ú
is_elementrP   ÚindexÚto_polyÚ
ValueErrorr^   rj   s     r-   ru   zFracField.index�   s;   € Ø�?‰?˜3ÔØ—9‘9—?‘? 3§;¡;£=Ó1Ð1åÀÇ
Ã
Ê3ÐOÓPÐPr/   c                óà   — t        |t        «      xr] | j                  | j                  | j                  | j
                  f|j                  |j                  |j                  |j
                  fk(  S rT   )rb   r&   r)   rR   r*   r+   ©rk   Úothers     r-   Ú__eq__zFracField.__eq__£   sV   € Ü˜%¤Ó+ò DØ�\‰\˜4Ÿ:™: t§{¡{°D·J±JÐ?Ø�]‰]˜EŸK™K¨¯©°u·{±{ÐCñDð	Dr/   c                ó   — | |k(   S rT   © ry   s     r-   Ú__ne__zFracField.__ne__¨   s   € Ø˜5‘=Ð Ð r/   c                óD   — t        |t        «      xr |j                  | k(  S )zBTrue if ``element`` is an element of this field. False otherwise. )rb   r[   r.   ©rk   Úelements     r-   rt   zFracField.is_element«   s   € ä˜'¤;Ó/ÒI°G·M±MÀTÑ4IÐIr/   Nc                ó&   — | j                  ||«      S rT   )r^   ©rk   ÚnumerÚdenoms      r-   r]   zFracField.raw_new¯   s   € Ø�z‰z˜% Ó'Ð'r/   c                ó~   — |€| j                   j                  }|j                  |«      \  }}| j                  ||«      S rT   )rP   r_   Úcancelr]   rƒ   s      r-   ÚnewzFracField.new²   s6   € Øˆ= $§)¡)§-¡-˜%Ø—|‘| EÓ*‰ˆˆuØ�|‰|˜E 5Ó)Ð)r/   c                ó8   — | j                   j                  |«      S rT   )r*   Úconvertr€   s     r-   Ú
domain_newzFracField.domain_new·   s   € Ø�{‰{×"Ñ" 7Ó+Ð+r/   c                ó¾  — 	 | j                  | j                  j                  |«      «      S # t        $ r§ | j                  }|j
                  s�|j                  r�| j                  }|j                  «       }|j                  |«      }|j                  |j                  |«      «      }|j                  |j                  |«      «      }| j                  ||«      cY S ‚ w xY wrT   )rˆ   rP   Ú
ground_newr   r*   Úis_FieldÚhas_assoc_FieldÚ	get_fieldrŠ   r„   r…   r]   )rk   r�   r*   rP   Úground_fieldr„   r…   s          r-   r�   zFracField.ground_newº   s¹   € ð	Ø—8‘8˜DŸI™I×0Ñ0°Ó9Ó:Ð:øÜò 	Ø—[‘[ˆFà—?’? v×'=Ò'=Ø—y‘y�Ø%×/Ñ/Ó1�Ø&×.Ñ.¨wÓ7�ØŸ™¨×(:Ñ(:¸7Ó(CÓD�ØŸ™¨×(:Ñ(:¸7Ó(CÓD�Ø—|‘| E¨5Ó1Ò1àð	ús   ‚), ¬B,CÃCc                óX  — t        |t        «      rÆ| |j                  k(  r|S t        | j                  t        «      r4| j                  j                  |j                  k(  r| j                  |«      S t        | j                  t        «      rB| j                  j                  j                  «       |j                  k(  r| j                  |«      S t        d«      ‚t        |t        «      �r|j                  «       \  }}t        | j                  t        «      r?|j                  | j                  j                  k(  r| j                  j                  |«      }n‚t        | j                  t        «      rM|j                  | j                  j                  j                  «       k(  r| j                  j                  |«      }n|j                  | j                  «      }| j                  j                  |«      }| j                  ||«      S t        |t        «      rLt!        |«      dk(  r>t#        t%        | j                  j&                  |«      «      \  }}| j)                  ||«      S t        |t*        «      rt        d«      ‚t        |t,        «      r| j/                  |«      S | j                  |«      S )NÚ
conversionr8   Úparsing)rb   r[   r.   r*   r   r�   r   rP   Úto_fieldÚNotImplementedErrorr   Úclear_denomsÚto_ringÚset_ringr]   rB   r@   r9   r:   Úring_newrˆ   Ústrr   Ú	from_expr)rk   r�   r…   r„   s       r-   Ú	field_newzFracField.field_newÊ   så  € Ü�gœ{Ô+Ø�w—}‘}Ò$Ø�ä˜$Ÿ+™+¤}Ô5Ø—‘×!Ñ! W§]¡]Ò2Ø—‘ wÓ/Ð/Ü˜DŸK™K¬Ô8Ø—‘× Ñ ×)Ñ)Ó+¨w¯}©}Ò<Ø—‘ wÓ/Ð/ä)¨,Ó7Ð7Ü˜¤Õ-Ø"×/Ñ/Ó1‰LˆE�5ä˜$Ÿ+™+¤~Ô6Ø—
‘
˜dŸk™k×.Ñ.Ò.ØŸ	™	×,Ñ,¨UÓ3‘Ü˜DŸK™K¬Ô7Ø—
‘
˜dŸk™k×/Ñ/×7Ñ7Ó9Ò9ØŸ	™	×,Ñ,¨UÓ3‘àŸ™ t§y¡yÓ1�à—I‘I×(Ñ(¨Ó/ˆEØ—<‘<  uÓ-Ð-Ü˜¤Ô'¬C°«L¸AÒ,=Ü¤ D§I¡I×$6Ñ$6¸Ó @ÓA‰LˆE�5Ø—8‘8˜E 5Ó)Ð)Ü˜¤Ô%Ü% iÓ0Ð0Ü˜¤Ô&Ø—>‘> 'Ó*Ð*à—?‘? 7Ó+Ð+r/   c                ó‚   ‡‡‡‡— | j                   Št        d„ ‰j                  «       D «       «      Šˆˆˆˆfd„Š ‰|«      S )Nc              3  óx   K  — | ]2  }|j                   st        |t        «      r||j                  «       f–— Œ4 y ­wrT   )Úis_Powrb   r   Úas_base_exp)Ú.0rl   s     r-   ú	<genexpr>z*FracField._rebuild_expr.<locals>.<genexpr>ó   s3   è ø€ ò 7°CØ�zŠzœZ¨¬WÔ5ð ˜SŸ_™_Ó.Ô/ñ 7ùs   ‚8:c           	     óp  •— ‰	j                  | «      }|�|S | j                  r-t        t        t	        t        ‰| j                  «      «      «      S | j                  r-t        t        t	        t        ‰| j                  «      «      «      S | j                  st        | t        t        f«      r‰| j                  «       \  }}‰
D ]?  \  }\  }}||k(  sŒt        ||«      dk(  sŒ‰	j                  |«      t        ||z  «      z  c S  |j                   rQ|t"        j$                  ur? ‰|«      t        |«      z  S ‰	j                  d| z  «      �d‰	j                  d| z  «      z  S 	 ‰j'                  | «      S # t(        $ r; ‰j*                  s-‰j,                  r!‰j/                  «       j'                  | «      cY S ‚ w xY w)Nr   é   )ÚgetÚis_Addr   r   r9   r:   ÚargsÚis_Mulr   r    rb   r   r   r¡   r   rQ   Ú
is_Integerr   ÚOnerŠ   r   rŽ   r�   r�   )rG   rh   ÚbÚerl   ÚbgÚegÚ_rebuildr*   ÚmappingÚpowerss          €€€€r-   r°   z)FracField._rebuild_expr.<locals>._rebuildö   sq  ø€ ØŸ™ DÓ)ˆIàÐ$Ø Ð Ø—’Üœc¤4¬¨H°d·i±iÓ(@Ó#AÓBÐBØ—’Üœc¤4¬¨H°d·i±iÓ(@Ó#AÓBÐBØ—’¤
¨4´'¼4°Ô AØ×'Ñ'Ó)‘��1à%+ò ;‘M�C™˜"˜bØ˜Q“w¤3 q¨"£:°£?Ø&Ÿ{™{¨3Ó/´°Q°r±T³Ñ:Ò:ð;ð —<’< A¬Q¯U©U¡NÙ# A›;¬¨A«Ñ.Ð.Ø—‘˜Q˜t™VÓ$Ð0Ø˜Ÿ™ Q t¡VÓ,Ñ,Ð,ðØ—~‘~ dÓ+Ð+øÜ!ò Ø—’¨6×+AÒ+AØ!×+Ñ+Ó-×5Ñ5°dÓ;Ò;àð	ús   Å E1 Å1A F5Æ3F5)r*   rB   Úkeys)rk   rG   r±   r°   r*   r²   s     `@@@r-   Ú_rebuild_exprzFracField._rebuild_exprñ   s9   û€ Ø—‘ˆÜñ 7¸7¿<¹<»>ô 7ó 7ˆ÷	ñ8 ˜‹~Ðr/   c                óü   — t        t        t        | j                  | j                  «      «      «      }	 | j                  t        |«      |«      }| j                  |«      S # t        $ r t        d| ›d|›�«      ‚w xY w)Nz=expected an expression convertible to a rational function in rs   )
Údictr9   ra   r)   r'   r´   r   r�   r   rw   )rk   rG   r±   Úfracs       r-   rœ   zFracField.from_expr  sq   € Ü”tœC §¡¨d¯i©iÓ8Ó9Ó:ˆð	(Ø×%Ñ%¤g¨d£m°WÓ=ˆDð —>‘> $Ó'Ð'øô ò 	wÝÒjnÑptÐuÓvÐvð	wús   ´A  Á A;c                ó   — t        | «      S rT   r   rn   s    r-   Ú	to_domainzFracField.to_domain  s   € Ü˜TÓ"Ð"r/   c                óX   — t        | j                  | j                  | j                  «      S rT   )r   r)   r*   r+   rn   s    r-   r˜   zFracField.to_ring!  s   € Ü˜Ÿ™ d§k¡k°4·:±:Ó>Ð>r/   rT   )rU   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   rW   r`   ro   rq   ru   r{   r~   rt   r]   rˆ   r‹   r�   r�   Ú__call__r´   rœ   r¹   r˜   r}   r/   r-   r&   r&   g   sŒ   … Ù<à
ƒNØ
!Ó!ØÓØƒJØƒNØÓà,/ó  òDDò7òòQòDò
!òJó(ó*ò
,òò #,ðJ €Hò!òF(ò#ó?r/   r&   c                  óö   — e Zd ZdZd'd„Zd'd„Zd„ Zd„ Zd„ Zd„ Z	dZ
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d'd$„Z&d'd%„Z'd'd&„Z(y)(r[   z=Element of multivariate distributed rational function field. Nc                óz   — |€|j                   j                  }n|st        d«      ‚|| _        || _        || _        y )Nzzero denominator)rP   r_   ÚZeroDivisionErrorr.   r„   r…   )rk   r.   r„   r…   s       r-   Ú__init__zFracElement.__init__'  s8   € Øˆ=Ø—J‘J—N‘N‰EÙÜ#Ð$6Ó7Ð7àˆŒ
ØˆŒ
Øˆ�
r/   c                ó<   — | j                  | j                  ||«      S rT   )Ú	__class__r.   ©Úfr„   r…   s      r-   r]   zFracElement.raw_new1  s   € Ø�{‰{˜1Ÿ7™7 E¨5Ó1Ð1r/   c                ó>   —  | j                   |j                  |«      Ž S rT   )r]   r‡   rÆ   s      r-   rˆ   zFracElement.new4  s   € Øˆq�y‰y˜%Ÿ,™, uÓ-Ð.Ð.r/   c                óN   — | j                   dk7  rt        d«      ‚| j                  S )Nr¥   zf.denom should be 1)r…   rw   r„   ©rÇ   s    r-   rv   zFracElement.to_poly7  s"   € Ø�7‰7�aŠ<ÜÐ2Ó3Ð3Ø�w‰wˆr/   c                ó6   — | j                   j                  «       S rT   )r.   r¹   rn   s    r-   ÚparentzFracElement.parent<  s   € Ø�z‰z×#Ñ#Ó%Ð%r/   c                óH   — | j                   | j                  | j                  fS rT   )r.   r„   r…   rn   s    r-   ro   zFracElement.__getnewargs__?  s   € Ø—
‘
˜DŸJ™J¨¯
©
Ð3Ð3r/   c                óˆ   — | j                   }|€3t        | j                  | j                  | j                  f«      x| _         }|S rT   )rZ   rY   r.   r„   r…   )rk   rZ   s     r-   rq   zFracElement.__hash__D  s9   € Ø—
‘
ˆØˆ=Ü!% t§z¡z°4·:±:¸t¿z¹zÐ&JÓ!KÐKˆDŒJ˜Øˆr/   c                ó†   — | j                  | j                  j                  «       | j                  j                  «       «      S rT   )r]   r„   Úcopyr…   rn   s    r-   rÐ   zFracElement.copyJ  s)   € Ø�|‰|˜DŸJ™JŸO™OÓ-¨t¯z©z¯©Ó/@ÓAÐAr/   c                óÌ   — | j                   |k(  r| S |j                  }| j                  j                  |«      }| j                  j                  |«      }|j                  ||«      S rT   )r.   rP   r„   r™   r…   rˆ   )rk   Ú	new_fieldÚnew_ringr„   r…   s        r-   Ú	set_fieldzFracElement.set_fieldM  sU   € Ø�:‰:˜Ò"ØˆKà —~‘~ˆHØ—J‘J×'Ñ'¨Ó1ˆEØ—J‘J×'Ñ'¨Ó1ˆEØ—=‘= ¨Ó.Ð.r/   c                óh   —  | j                   j                  |Ž  | j                  j                  |Ž z  S rT   )r„   Úas_exprr…   )rk   r)   s     r-   rÖ   zFracElement.as_exprV  s0   € Ø!ˆt�z‰z×!Ñ! 7Ð+Ð,>¨D¯J©J×,>Ñ,>ÀÐ,HÑHÐHr/   c                ó8  — t        |t        «      rM| j                  |j                  k(  r4| j                  |j                  k(  xr | j                  |j                  k(  S | j                  |k(  xr- | j                  | j                  j
                  j                  k(  S rT   )rb   r[   r.   r„   r…   rP   r_   ©rÇ   Úgs     r-   r{   zFracElement.__eq__Y  sj   € Ü�aœÔ%¨!¯'©'°Q·W±WÒ*<Ø—7‘7˜aŸg™gÑ%Ò<¨!¯'©'°Q·W±WÑ*<Ð<à—7‘7˜a‘<Ò? A§G¡G¨q¯w©w¯|©|×/?Ñ/?Ñ$?Ð?r/   c                ó   — | |k(   S rT   r}   rØ   s     r-   r~   zFracElement.__ne___  s   € Ø˜‘6ˆzÐr/   c                ó,   — t        | j                  «      S rT   )Úboolr„   rÊ   s    r-   Ú__bool__zFracElement.__bool__b  s   € Ü�A—G‘G‹}Ðr/   c                ój   — | j                   j                  «       | j                  j                  «       fS rT   )r…   Úsort_keyr„   rn   s    r-   rß   zFracElement.sort_keye  s'   € Ø—
‘
×#Ñ#Ó% t§z¡z×':Ñ':Ó'<Ð=Ð=r/   c                óŽ   — | j                   j                  |«      r% || j                  «       |j                  «       «      S t        S rT   )r.   rt   rß   ÚNotImplemented)Úf1Úf2Úops      r-   Ú_cmpzFracElement._cmph  s3   € Ø�8‰8×Ñ˜rÔ"Ù�b—k‘k“m R§[¡[£]Ó3Ð3ä!Ð!r/   c                ó.   — | j                  |t        «      S rT   )rå   r   ©râ   rã   s     r-   Ú__lt__zFracElement.__lt__n  ó   € Ø�w‰w�rœ2‹Ðr/   c                ó.   — | j                  |t        «      S rT   )rå   r   rç   s     r-   Ú__le__zFracElement.__le__p  ré   r/   c                ó.   — | j                  |t        «      S rT   )rå   r	   rç   s     r-   Ú__gt__zFracElement.__gt__r  ré   r/   c                ó.   — | j                  |t        «      S rT   )rå   r
   rç   s     r-   Ú__ge__zFracElement.__ge__t  ré   r/   c                óN   — | j                  | j                  | j                  «      S ©z"Negate all coefficients in ``f``. ©r]   r„   r…   rÊ   s    r-   Ú__pos__zFracElement.__pos__w  s   € à�y‰y˜Ÿ™ !§'¡'Ó*Ð*r/   c                óP   — | j                  | j                   | j                  «      S rñ   rò   rÊ   s    r-   Ú__neg__zFracElement.__neg__{  s   € à�y‰y˜!Ÿ'™'˜ 1§7¡7Ó+Ð+r/   c                óX  — | j                   j                  }	 |j                  |«      }d|d fS # t        $ rr |j                  sc|j
                  rW|j                  «       }	 |j                  |«      }d|j                  |«      |j                  |«      fcY S # t        $ r Y Y yw xY wY yw xY w)Nr¥   éÿÿÿÿ)r   NN)	r.   r*   rŠ   r   rŽ   r�   r�   r„   r…   )rk   r�   r*   r‘   s       r-   Ú_extract_groundzFracElement._extract_ground  sº   € Ø—‘×"Ñ"ˆð	$Ø—n‘n WÓ-ˆGð �g˜tÐ#Ð#øô ò 	!Ø—?’? v×'=Ò'=Ø%×/Ñ/Ó1�ðXØ*×2Ñ2°7Ó;�Gð ˜|×1Ñ1°'Ó:¸L×<NÑ<NÈwÓ<WÐWÒWøô &ò Øñ !ðúñ
 !ð	!ús3   ˜. ®1B)Á BÁ1#B)Â	B#ÂB)Â"B#Â#B)Â(B)c                ór  — | j                   }|s| S | s|S |j                  |«      r¦| j                  |j                  k(  r3| j                  | j                  |j                  z   | j                  «      S | j                  | j                  |j                  z  | j                  |j                  z  z   | j                  |j                  z  «      S |j
                  j                  |«      r6| j                  | j                  | j                  |z  z   | j                  «      S t        |t        «      rœt        |j                  t        «      r$|j                  j                   |j                   k(  rn½t        |j                   j                  t        «      r4|j                   j                  j                   |k(  r|j                  | «      S t        S t        |t        «      rOt        |j                  t        «      r$|j                  j
                  |j
                  k(  rn|j                  | «      S | j                  |«      S )z(Add rational functions ``f`` and ``g``. )r.   rt   r…   rˆ   r„   rP   rb   r[   r*   r   Ú__radd__rá   r   r   ©rÇ   rÙ   r.   s      r-   Ú__add__zFracElement.__add__“  s‹  € à—‘ˆáØˆHÙØˆHØ×Ñ˜aÔ Ø�w‰w˜!Ÿ'™'Ò!Ø—u‘u˜QŸW™W q§w¡wÑ.°·±Ó8Ð8à—u‘u˜QŸW™W Q§W¡W™_¨q¯w©w°q·w±w©Ñ>ÀÇÁÈÏÉÁÓPÐPØ�Z‰Z×"Ñ" 1Ô%Ø—5‘5˜Ÿ™ 1§7¡7¨1¡9Ñ,¨a¯g©gÓ6Ð6ä˜!œ[Ô)Ü˜eŸl™l¬MÔ:¸u¿|¹|×?QÑ?QÐUV×U\ÑU\Ò?\ØÜ §¡§¡´Ô>À1Ç7Á7Ç>Á>×CWÑCWÐ[`ÒC`ØŸ:™: a›=Ð(ä)Ð)Ü˜Aœ{Ô+Ü˜eŸl™l¬NÔ;ÀÇÁ×@QÑ@QÐUV×U[ÑU[Ò@[ØàŸ:™: a›=Ð(à�z‰z˜!‹}Ðr/   c                óà  — | j                   j                  j                  |«      r6| j                  | j                  | j
                  |z  z   | j
                  «      S | j                  |«      \  }}}|dk(  r6| j                  | j                  | j
                  |z  z   | j
                  «      S |st        S | j                  | j                  |z  | j
                  |z  z   | j
                  |z  «      S ©Nr¥   ©r.   rP   rt   rˆ   r„   r…   rø   rá   ©rÇ   Úcrä   Úg_numerÚg_denoms        r-   rú   zFracElement.__radd__²  s¹   € Ø�7‰7�<‰<×"Ñ" 1Ô%Ø—5‘5˜Ÿ™ 1§7¡7¨1¡9Ñ,¨a¯g©gÓ6Ð6à ×0Ñ0°Ó3ÑˆˆG�Wà�Š7Ø—5‘5˜Ÿ™ 1§7¡7¨7¡?Ñ2°A·G±GÓ<Ð<ÙÜ!Ð!à—5‘5˜Ÿ™ ™¨1¯7©7°7©?Ñ:¸A¿G¹GÀG¹OÓLÐLr/   c                óz  — | j                   }|s| S | s| S |j                  |«      r¦| j                  |j                  k(  r3| j                  | j                  |j                  z
  | j                  «      S | j                  | j                  |j                  z  | j                  |j                  z  z
  | j                  |j                  z  «      S |j
                  j                  |«      r6| j                  | j                  | j                  |z  z
  | j                  «      S t        |t        «      rœt        |j                  t        «      r$|j                  j                   |j                   k(  rn½t        |j                   j                  t        «      r4|j                   j                  j                   |k(  r|j                  | «      S t        S t        |t        «      rOt        |j                  t        «      r$|j                  j
                  |j
                  k(  rn|j                  | «      S | j                  |«      \  }}}|dk(  r6| j                  | j                  | j                  |z  z
  | j                  «      S |st        S | j                  | j                  |z  | j                  |z  z
  | j                  |z  «      S )z-Subtract rational functions ``f`` and ``g``. r¥   )r.   rt   r…   rˆ   r„   rP   rb   r[   r*   r   Ú__rsub__rá   r   r   rø   ©rÇ   rÙ   r.   rä   r  r  s         r-   Ú__sub__zFracElement.__sub__¿  sú  € à—‘ˆáØˆHÙØ�2ˆIØ×Ñ˜aÔ Ø�w‰w˜!Ÿ'™'Ò!Ø—u‘u˜QŸW™W q§w¡wÑ.°·±Ó8Ð8à—u‘u˜QŸW™W Q§W¡W™_¨q¯w©w°q·w±w©Ñ>ÀÇÁÈÏÉÁÓPÐPØ�Z‰Z×"Ñ" 1Ô%Ø—5‘5˜Ÿ™ 1§7¡7¨1¡9Ñ,¨a¯g©gÓ6Ð6ä˜!œ[Ô)Ü˜eŸl™l¬MÔ:¸u¿|¹|×?QÑ?QÐUV×U\ÑU\Ò?\ØÜ §¡§¡´Ô>À1Ç7Á7Ç>Á>×CWÑCWÐ[`ÒC`ØŸ:™: a›=Ð(ä)Ð)Ü˜Aœ{Ô+Ü˜eŸl™l¬NÔ;ÀÇÁ×@QÑ@QÐUV×U[ÑU[Ò@[ØàŸ:™: a›=Ð(à ×0Ñ0°Ó3ÑˆˆG�Wà�Š7Ø—5‘5˜Ÿ™ 1§7¡7¨7¡?Ñ2°A·G±GÓ<Ð<ÙÜ!Ð!à—5‘5˜Ÿ™ ™¨1¯7©7°7©?Ñ:¸A¿G¹GÀG¹OÓLÐLr/   c                óæ  — | j                   j                  j                  |«      r7| j                  | j                   | j
                  |z  z   | j
                  «      S | j                  |«      \  }}}|dk(  r7| j                  | j                   | j
                  |z  z   | j
                  «      S |st        S | j                  | j                   |z  | j
                  |z  z   | j
                  |z  «      S rþ   rÿ   r   s        r-   r  zFracElement.__rsub__å  sÀ   € Ø�7‰7�<‰<×"Ñ" 1Ô%Ø—5‘5˜!Ÿ'™'˜ A§G¡G¨A¡IÑ-¨q¯w©wÓ7Ð7à ×0Ñ0°Ó3ÑˆˆG�Wà�Š7Ø—5‘5˜!Ÿ'™'˜ A§G¡G¨G¡OÑ3°Q·W±WÓ=Ð=ÙÜ!Ð!à—5‘5˜!Ÿ'™'˜ 'Ñ)¨A¯G©G°G©OÑ;¸Q¿W¹WÀW¹_ÓMÐMr/   c                óœ  — | j                   }| r|s|j                  S |j                  |«      r@| j                  | j                  |j                  z  | j
                  |j
                  z  «      S |j                  j                  |«      r)| j                  | j                  |z  | j
                  «      S t        |t        «      rœt        |j                  t        «      r$|j                  j                   |j                   k(  rn½t        |j                   j                  t        «      r4|j                   j                  j                   |k(  r|j                  | «      S t        S t        |t        «      rOt        |j                  t        «      r$|j                  j                  |j                  k(  rn|j                  | «      S | j                  |«      S )z-Multiply rational functions ``f`` and ``g``. )r.   r\   rt   rˆ   r„   r…   rP   rb   r[   r*   r   Ú__rmul__rá   r   r   rû   s      r-   Ú__mul__zFracElement.__mul__ò  s>  € à—‘ˆá™Ø—:‘:ÐØ×Ñ˜aÔ Ø—5‘5˜Ÿ™ §¡™¨!¯'©'°!·'±'©/Ó:Ð:Ø�Z‰Z×"Ñ" 1Ô%Ø—5‘5˜Ÿ™ ™ A§G¡GÓ,Ð,ä˜!œ[Ô)Ü˜eŸl™l¬MÔ:¸u¿|¹|×?QÑ?QÐUV×U\ÑU\Ò?\ØÜ §¡§¡´Ô>À1Ç7Á7Ç>Á>×CWÑCWÐ[`ÒC`ØŸ:™: a›=Ð(ä)Ð)Ü˜Aœ{Ô+Ü˜eŸl™l¬NÔ;ÀÇÁ×@QÑ@QÐUV×U[ÑU[Ò@[ØàŸ:™: a›=Ð(à�z‰z˜!‹}Ðr/   c                óŒ  — | j                   j                  j                  |«      r)| j                  | j                  |z  | j
                  «      S | j                  |«      \  }}}|dk(  r)| j                  | j                  |z  | j
                  «      S |st        S | j                  | j                  |z  | j
                  |z  «      S rþ   rÿ   r   s        r-   r
  zFracElement.__rmul__  sš   € Ø�7‰7�<‰<×"Ñ" 1Ô%Ø—5‘5˜Ÿ™ ™ A§G¡GÓ,Ð,à ×0Ñ0°Ó3ÑˆˆG�Wà�Š7Ø—5‘5˜Ÿ™ ™¨!¯'©'Ó2Ð2ÙÜ!Ð!à—5‘5˜Ÿ™ ™¨!¯'©'°'©/Ó:Ð:r/   c                óX  — | j                   }|st        ‚|j                  |«      r@| j                  | j                  |j
                  z  | j
                  |j                  z  «      S |j                  j                  |«      r)| j                  | j                  | j
                  |z  «      S t        |t        «      rœt        |j                  t        «      r$|j                  j                   |j                   k(  rn½t        |j                   j                  t        «      r4|j                   j                  j                   |k(  r|j                  | «      S t        S t        |t        «      rOt        |j                  t        «      r$|j                  j                  |j                  k(  rn|j                  | «      S | j                  |«      \  }}}|dk(  r)| j                  | j                  | j
                  |z  «      S |st        S | j                  | j                  |z  | j
                  |z  «      S )z0Computes quotient of fractions ``f`` and ``g``. r¥   )r.   rÂ   rt   rˆ   r„   r…   rP   rb   r[   r*   r   Ú__rtruediv__rá   r   r   rø   r  s         r-   Ú__truediv__zFracElement.__truediv__  s‘  € à—‘ˆáÜ#Ð#Ø×Ñ˜aÔ Ø—5‘5˜Ÿ™ §¡™¨!¯'©'°!·'±'©/Ó:Ð:Ø�Z‰Z×"Ñ" 1Ô%Ø—5‘5˜Ÿ™ !§'¡'¨!¡)Ó,Ð,ä˜!œ[Ô)Ü˜eŸl™l¬MÔ:¸u¿|¹|×?QÑ?QÐUV×U\ÑU\Ò?\ØÜ §¡§¡´Ô>À1Ç7Á7Ç>Á>×CWÑCWÐ[`ÒC`ØŸ>™>¨!Ó,Ð,ä)Ð)Ü˜Aœ{Ô+Ü˜eŸl™l¬NÔ;ÀÇÁ×@QÑ@QÐUV×U[ÑU[Ò@[ØàŸ>™>¨!Ó,Ð,à ×0Ñ0°Ó3ÑˆˆG�Wà�Š7Ø—5‘5˜Ÿ™ !§'¡'¨'¡/Ó2Ð2ÙÜ!Ð!à—5‘5˜Ÿ™ ™¨!¯'©'°'©/Ó:Ð:r/   c                óœ  — | st         ‚| j                  j                  j                  |«      r)| j	                  | j
                  |z  | j                  «      S | j                  |«      \  }}}|dk(  r)| j	                  | j
                  |z  | j                  «      S |st        S | j	                  | j
                  |z  | j                  |z  «      S rþ   )	rÂ   r.   rP   rt   rˆ   r…   r„   rø   rá   r   s        r-   r  zFracElement.__rtruediv__:  s£   € ÙÜ#Ð#Ø�W‰W�\‰\×$Ñ$ QÔ'Ø—5‘5˜Ÿ™ ™ A§G¡GÓ,Ð,à ×0Ñ0°Ó3ÑˆˆG�Wà�Š7Ø—5‘5˜Ÿ™ ™¨!¯'©'Ó2Ð2ÙÜ!Ð!à—5‘5˜Ÿ™ ™¨!¯'©'°'©/Ó:Ð:r/   c                óÐ   — |dk\  r,| j                  | j                  |z  | j                  |z  «      S | st        ‚| j                  | j                  | z  | j                  | z  «      S )z+Raise ``f`` to a non-negative power ``n``. r   )r]   r„   r…   rÂ   )rÇ   Úns     r-   Ú__pow__zFracElement.__pow__I  sX   € à�Š6Ø—9‘9˜QŸW™W a™Z¨¯©°!©Ó4Ð4ÙÜ#Ð#à—9‘9˜QŸW™W q b™[¨!¯'©'°A°2©+Ó6Ð6r/   c                óþ   — |j                  «       }| j                  | j                  j                  |«      | j                  z  | j                  | j                  j                  |«      z  z
  | j                  dz  «      S )a  Computes partial derivative in ``x``.

        Examples
        ========

        >>> from sympy.polys.fields import field
        >>> from sympy.polys.domains import ZZ

        >>> _, x, y, z = field("x,y,z", ZZ)
        >>> ((x**2 + y)/(z + 1)).diff(x)
        2*x/(z + 1)

        r8   )rv   rˆ   r„   Údiffr…   )rÇ   Úxs     r-   r  zFracElement.diffR  sX   € ð �I‰I‹KˆØ�u‰u�Q—W‘W—\‘\ !“_ Q§W¡WÑ,¨q¯w©w°q·w±w·|±|ÀA³Ñ/FÑFÈÏÉÐQRÉ
ÓSÐSr/   c                ó$  — dt        |«      cxk  r| j                  j                  k  r;n n8| j                  t	        t        | j                  j                  |«      «      «      S t        d| j                  j                  ›dt        |«      ›�«      ‚)Nr   z expected at least 1 and at most z values, got )r@   r.   rR   Úevaluater9   ra   r'   rw   )rÇ   r>   s     r-   r¿   zFracElement.__call__c  sb   € ØŒs�6‹{Ô+˜aŸg™gŸm™mÕ+Ø—:‘:œd¤3 q§w¡w§|¡|°VÓ#<Ó=Ó>Ð>åÐTU×T[ÑT[×TaÓTaÔcfÐgmÔcnÐoÓpÐpr/   c                óÐ  — t        |t        «      r]|€[|D ��cg c]  \  }}|j                  «       |f‘Œ }}}| j                  j	                  |«      | j
                  j	                  |«      }}nH|j                  «       }| j                  j	                  ||«      | j
                  j	                  ||«      }}|j                  j                  «       }|j                  ||«      S c c}}w rT   )	rb   r9   rv   r„   r  r…   rP   r•   rˆ   )rÇ   r  ÚaÚXr„   r…   r.   s          r-   r  zFracElement.evaluatei  s·   € Ü�aœÔ 1 9Ø/0×2¡t q¨!�1—9‘9“; Ò"Ð2ˆAÑ2ØŸ7™7×+Ñ+¨AÓ.°·±×0@Ñ0@ÀÓ0C�5‰Eà—	‘	“ˆAØŸ7™7×+Ñ+¨A¨qÓ1°1·7±7×3CÑ3CÀAÀqÓ3I�5ˆEà—
‘
×#Ñ#Ó%ˆØ�y‰y˜ Ó&Ð&ùó 3s   ˜C"c                óœ  — t        |t        «      r]|€[|D ��cg c]  \  }}|j                  «       |f‘Œ }}}| j                  j	                  |«      | j
                  j	                  |«      }}nH|j                  «       }| j                  j	                  ||«      | j
                  j	                  ||«      }}| j                  ||«      S c c}}w rT   )rb   r9   rv   r„   Úsubsr…   rˆ   )rÇ   r  r  r  r„   r…   s         r-   r  zFracElement.subst  s›   € Ü�aœÔ 1 9Ø/0×2¡t q¨!�1—9‘9“; Ò"Ð2ˆAÑ2ØŸ7™7Ÿ<™<¨›?¨A¯G©G¯L©L¸«O�5‰Eà—	‘	“ˆAØŸ7™7Ÿ<™<¨¨1Ó-¨q¯w©w¯|©|¸A¸qÓ/A�5ˆEà�u‰u�U˜EÓ"Ð"ùó 3s   ˜Cc                ó   — t         ‚rT   )r–   )rÇ   r  r  s      r-   ÚcomposezFracElement.compose~  s   € Ü!Ð!r/   rT   ))rU   r»   r¼   r½   rÃ   r]   rˆ   rv   rÌ   ro   rZ   rq   rÐ   rÔ   rÖ   r{   r~   rÝ   rß   rå   rè   rë   rí   rï   ró   rõ   rø   rü   rú   r  r  r  r
  r  r  r  r  r¿   r  r  r  r}   r/   r-   r[   r[   $  sÊ   „ ÙGóó2ò/òò
&ò4ð €EòòBò/òIò@òòò>ò"òòòòò+ò,ò$ò(ò>Mò$MòLNòò4;ò;òB;ò7òTò"qó	'ó#ô"r/   r[   N)?r½   Ú
__future__r   Ú	functoolsr   Úoperatorr   r   r   r   r	   r
   Úsympy.core.exprr   Úsympy.core.modr   Úsympy.core.numbersr   Úsympy.core.singletonr   Úsympy.core.symbolr   Úsympy.core.sympifyr   r   Ú&sympy.functions.elementary.exponentialr   Úsympy.polys.domains.domainr   Ú!sympy.polys.domains.domainelementr   Ú!sympy.polys.domains.fractionfieldr   Ú"sympy.polys.domains.polynomialringr   Úsympy.polys.constructorr   Úsympy.polys.orderingsr   r   Úsympy.polys.polyerrorsr   Úsympy.polys.polyoptionsr   Úsympy.polys.polyutilsr   Úsympy.polys.ringsr   r   Úsympy.printing.defaultsr    Úsympy.utilitiesr!   Úsympy.utilities.iterablesr"   Úsympy.utilities.magicr#   r.   r1   r5   rN   r&   r[   r}   r/   r-   ú<module>r8     sÌ   ðÙ 'å "Ý ç -× -å  Ý Ý #Ý "Ý $ß 3Ý :Ý -Ý ;Ý ;Ý =Ý 4ß 4Ý 1Ý 1Ý :ß 3Ý 3Ý "Ý 1Ý )àØ!$ò #ó ð#ð
 Ø"%ò !ó ð!ð
 Ø"%ò ó ðð ñ2ó ð2ôj{?�ô {?ôz["�- °+õ ["r/   