ó
    Š*£hS  ã                  óÊ  • S r SSKJr  SSKJr  SSKJr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KJr  SS	KJr  SS
KJrJr  SSKJr  SSKJr  SSKJr  SSKJ 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K*J+r+  SSK,J-r-  SSK.J/r/J0r0  SSK1J2r2  SSK3J4r4  SSK5J6r6  SSK7J8r8  \4\&4S j5       r9\4\&4S j5       r:\4\&4S j5       r;\4S 5       r< " S S\25      r= " S  S!\\2\5      r>g")#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                ó:   • [        XU5      nU4UR                  -   $ )zFConstruct new rational function field returning (field, x1, ..., xn). ©Ú	FracFieldÚgens©ÚsymbolsÚdomainÚorderÚ_fields       ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/polys/fields.pyÚfieldr.      s!   € ô �w¨Ó.€FØˆ9�v—{‘{Ñ"Ð"ó    c                ó4   • [        XU5      nX3R                  4$ )zHConstruct new rational function field returning (field, (x1, ..., xn)). r%   r(   s       r-   Úxfieldr1   $   s   € ô �w¨Ó.€FØ—K‘KÐ Ð r/   c                óœ   • [        XU5      n[        UR                   Vs/ s H  oDR                  PM     snUR                  5        U$ s  snf )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�hŒh¡.Ñ2°F·K±KÔ@Ø€Mùò 3s    A	c                ó�  • Sn[        U 5      (       d  U /Sp0[        [        [        U 5      5      n [	        X5      n/ nU  H"  nUR                  UR                  5       5        M$     [        XT5      u  ptUR                  cE  [        U Vs/ s H  n[        UR                  5       5      PM     sn/ 5      n	[        X”S9u  Ul        n
[        UR                  UR                  UR                  5      n/ n[        S[!        U5      S5       H(  nUR#                  U" [%        X}US-    5      5      5        M*     U(       a  X¼S   4$ X¼4$ s  snf )ak  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   s  € ð4 €FÜ�u×ÑØ˜ ˆvä””W˜eÓ$Ó%€EÜ
˜Ó
)€CØ€GÛˆØ�‰�t×*Ñ*Ó,Ö-ñ ä(¨Ó6�I€Dà
‡z�zÑô ±DÓ9²D¨S”d˜3Ÿ:™:›<Ö(±DÑ9¸2Ó>ˆÜ(¨Ñ9‰ˆŒ
�Aä�s—x‘x §¡¨S¯Y©YÓ7€FØ€EÜ�1”c˜$“i Ö#ˆØ�‰‘VœE $¨¨1© +Ó.Ó/Ö0ñ $ö Ø˜a™Ð!Ð!àˆÐùò :s   Â#Ec                  óÎ   • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   \4S jrS rS r	S r
S rS rS rS rS"S jrS"S jrS rS rS r\rS rS rS rS  rS!rg)#r&   ég   z2Multivariate distributed rational function field. r   Úringztuple[FracElement, ...]r'   ztuple[Expr, ...]r)   ÚintÚngensr   r*   r   r+   c                óô  • [        XU5      nUR                  nUR                  nUR                  nUR                  nU R
                  XX#4n[        R                  U 5      nXgl        [        U5      Ul
        XGl        Xl        XWl        X'l        X7l        [        XtR                  5      R                  Ul        UR                  UR                  5      Ul        UR                  UR                   5      Ul        UR#                  5       Ul        ['        UR                  UR$                  5       HF  u  p‰[)        U[*        5      (       d  M  UR,                  n
[/        Xz5      (       a  M:  [1        XzU	5        MH     U$ ©N)r   r)   rS   r*   r+   Ú__name__ÚobjectÚ__new__Ú_hash_tupleÚhashÚ_hashrQ   ÚFracElementÚzeroÚraw_newÚdtypeÚoneÚ_gensr'   ÚzipÚ
isinstancer   r3   ÚhasattrÚsetattr)Úclsr)   r*   r+   rQ   rS   rY   ÚobjÚsymbolÚ	generatorr3   s              r-   rX   ÚFracField.__new__q   s  € Ü˜¨Ó/ˆØ—,‘,ˆØ—
‘
ˆØ—‘ˆØ—
‘
ˆà—|‘| W°VÐCˆä�n‰n˜SÓ!ˆØ%ŒÜ˜Ó%ˆŒ	ØŒØŒØŒ	ØŒ
ØŒ	ä §Y¡YÓ/×7Ñ7ˆŒ	à—9‘9˜TŸY™YÓ'ˆŒØ—)‘)˜DŸH™HÓ%ˆŒà—9‘9“;ˆŒä!$ S§[¡[°#·(±(Ö!;ÑˆFÜ˜&¤&×)Ó)Ø—{‘{�ä˜s×)Ó)Ü˜C yÖ1ñ "<ð ˆ
r/   c                óˆ   • [        U R                  R                   Vs/ s H  oR                  U5      PM     sn5      $ s  snf )z(Return a list of polynomial generators. )rB   rQ   r'   r_   ©ÚselfÚgens     r-   ra   ÚFracField._gens“   s-   € ä°$·)±)·.².ÓB².¨3—z‘z #–±.ÑBÓCÐCùÒBs   ž?c                óH   • U R                   U R                  U R                  4$ rU   )r)   r*   r+   ©rm   s    r-   Ú__getnewargs__ÚFracField.__getnewargs__—   s   € Ø—‘˜dŸk™k¨4¯:©:Ð6Ð6r/   c                ó   • U R                   $ rU   )r[   rq   s    r-   Ú__hash__ÚFracField.__hash__š   s   € Ø�z‰zÐr/   c                ó¼   • U R                  U5      (       a)  U R                  R                  UR                  5       5      $ [	        SU R
                  < SU< S35      e)Nzexpected a ú, got z instead)Ú
is_elementrQ   ÚindexÚto_polyÚ
ValueErrorr_   rl   s     r-   rz   ÚFracField.index�   s>   € Ø�?‰?˜3×ÑØ—9‘9—?‘? 3§;¡;£=Ó1Ð1åÀÇ
Ä
Ë3ÐOÓPÐPr/   c                óê   • [        U[        5      =(       a]    U R                  U R                  U R                  U R
                  4UR                  UR                  UR                  UR
                  4:H  $ rU   )rc   r&   r)   rS   r*   r+   ©rm   Úothers     r-   Ú__eq__ÚFracField.__eq__£   sV   € Ü˜%¤Ó+÷ DØ�\‰\˜4Ÿ:™: t§{¡{°D·J±JÐ?Ø�]‰]˜EŸK™K¨¯©°u·{±{ÐCñDð	Dr/   c                ó   • X:X  + $ rU   © r   s     r-   Ú__ne__ÚFracField.__ne__¨   s   € ØÒ Ð r/   c                óN   • [        U[        5      =(       a    UR                  U :H  $ )zBTrue if ``element`` is an element of this field. False otherwise. )rc   r\   r.   ©rm   Úelements     r-   ry   ÚFracField.is_element«   s   € ä˜'¤;Ó/×I°G·M±MÀTÑ4IÐIr/   Nc                ó$   • U R                  X5      $ rU   )r_   ©rm   ÚnumerÚdenoms      r-   r^   ÚFracField.raw_new¯   s   € Ø�z‰z˜%Ó'Ð'r/   c                ó|   • Uc  U R                   R                  nUR                  U5      u  pU R                  X5      $ rU   )rQ   r`   Úcancelr^   rŒ   s      r-   ÚnewÚFracField.new²   s2   € Ø‰= $§)¡)§-¡-˜%Ø—|‘| EÓ*‰ˆØ�|‰|˜EÓ)Ð)r/   c                ó8   • U R                   R                  U5      $ rU   )r*   Úconvertrˆ   s     r-   Ú
domain_newÚFracField.domain_new·   s   € Ø�{‰{×"Ñ" 7Ó+Ð+r/   c                óÒ  •  U R                  U R                  R                  U5      5      $ ! [         a°    U R                  nUR
                  (       d‘  UR                  (       a€  U R                  nUR                  5       nUR                  U5      nUR                  UR                  U5      5      nUR                  UR                  U5      5      nU R                  XV5      s $ e f = frU   )r’   rQ   Ú
ground_newr   r*   Úis_FieldÚhas_assoc_FieldÚ	get_fieldr•   r�   rŽ   r^   )rm   r‰   r*   rQ   Úground_fieldr�   rŽ   s          r-   r™   Ú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Ó1Ò1àð	ús   ‚), ¬B6C&Ã$C&c                ó´  • [        U[        5      (       aÒ  XR                  :X  a  U$ [        U R                  [        5      (       a5  U R                  R                  UR                  :X  a  U R                  U5      $ [        U R                  [        5      (       aC  U R                  R                  R                  5       UR                  :X  a  U R                  U5      $ [        S5      e[        U[        5      (       Ga%  UR                  5       u  p#[        U R                  [        5      (       a@  UR                  U R                  R                  :X  a  U R                  R                  U5      nOˆ[        U R                  [        5      (       aN  UR                  U R                  R                  R                  5       :X  a  U R                  R                  U5      nOUR                  U R                  5      nU R                  R                  U5      nU R                  X25      $ [        U[        5      (       aK  [!        U5      S:X  a<  [#        [%        U R                  R&                  U5      5      u  p2U R)                  X25      $ [        U[*        5      (       a  [        S5      e[        U[,        5      (       a  U R/                  U5      $ U R                  U5      $ )NÚ
conversionr8   Úparsing)rc   r\   r.   r*   r   r™   r   rQ   Úto_fieldÚNotImplementedErrorr   Úclear_denomsÚto_ringÚset_ringr^   rB   r@   r9   r:   Úring_newr’   Ústrr   Ú	from_expr)rm   r‰   rŽ   r�   s       r-   Ú	field_newÚFracField.field_newÊ   sö  € Ü�gœ{×+Ñ+Ø—}‘}Ó$Ø�ä˜$Ÿ+™+¤}×5Ñ5Ø—‘×!Ñ! W§]¡]Ó2Ø—‘ wÓ/Ð/Ü˜DŸK™K¬×8Ñ8Ø—‘× Ñ ×)Ñ)Ó+¨w¯}©}Ó<Ø—‘ wÓ/Ð/ä)¨,Ó7Ð7Ü˜¤×-Ò-Ø"×/Ñ/Ó1‰LˆEä˜$Ÿ+™+¤~×6Ñ6Ø—
‘
˜dŸk™k×.Ñ.Ó.ØŸ	™	×,Ñ,¨UÓ3‘Ü˜DŸK™K¬×7Ñ7Ø—
‘
˜dŸk™k×/Ñ/×7Ñ7Ó9Ó9ØŸ	™	×,Ñ,¨UÓ3‘àŸ™ t§y¡yÓ1�à—I‘I×(Ñ(¨Ó/ˆEØ—<‘< Ó-Ð-Ü˜¤×'Ñ'¬C°«L¸AÓ,=Ü¤ D§I¡I×$6Ñ$6¸Ó @ÓA‰LˆEØ—8‘8˜EÓ)Ð)Ü˜¤×%Ñ%Ü% iÓ0Ð0Ü˜¤×&Ñ&Ø—>‘> 'Ó*Ð*à—?‘? 7Ó+Ð+r/   c                ó„   ^^^^• U R                   m[        S TR                  5        5       5      mUUUU4S jmT" U5      $ )Nc              3  ó”   #   • U  H>  nUR                   (       d  [        U[        5      (       d  M+  XR                  5       4v •  M@     g 7frU   )Úis_Powrc   r   Úas_base_exp)Ú.0rn   s     r-   Ú	<genexpr>Ú*FracField._rebuild_expr.<locals>.<genexpr>ó   s1   é € ð 7º>°CØ�z�zœZ¨¬W×5ó 0˜Ÿ_™_Ó.Õ/º>ùs
   ‚*A°Ac           	     óÀ  >• T	R                  U 5      nUb  U$ U R                  (       a-  [        [        [	        [        TU R                  5      5      5      $ U R                  (       a-  [        [        [	        [        TU R                  5      5      5      $ U R                  (       d  [        U [        [        45      (       a�  U R                  5       u  p#T
 H?  u  nu  pVXR:X  d  M  [        X65      S:X  d  M   T	R                  U5      [        X6-  5      -  s  $    UR                   (       a'  U["        R$                  La  T" U5      [        U5      -  $ O,T	R                  SU -  5      b  ST	R                  SU -  5      -  $  TR'                  U 5      $ ! [(         aE    TR*                  (       d2  TR,                  (       a!  TR/                  5       R'                  U 5      s $ e f = f)Nr   é   )ÚgetÚis_Addr   r   r9   r:   ÚargsÚis_Mulr   r®   rc   r   r   r¯   r   rR   Ú
is_Integerr   ÚOner•   r   rš   r›   rœ   )rG   ri   ÚbÚern   ÚbgÚegÚ_rebuildr*   ÚmappingÚpowerss          €€€€r-   r¿   Ú)FracField._rebuild_expr.<locals>._rebuildö   sf  ø€ ØŸ™ DÓ)ˆIàÑ$Ø Ð Ø——Üœc¤4¬¨H°d·i±iÓ(@Ó#AÓBÐBØ——Üœc¤4¬¨H°d·i±iÓ(@Ó#AÓBÐBØ——¤
¨4´'¼4°× AÑ AØ×'Ñ'Ó)‘�ã%+‘M�C™˜"Ø•w¤3 q£:°¥?Ø&Ÿ{™{¨3Ó/´°Q±T³Ñ:Ò:ñ &,ð —<—< A¬Q¯U©U¢NÙ# A›;¬¨A«Ñ.Ð.øØ—‘˜Q˜t™VÓ$Ñ0Ø˜Ÿ™ Q t¡VÓ,Ñ,Ð,ðØ—~‘~ dÓ+Ð+øÜ!ó Ø——¨6×+A×+AØ!×+Ñ+Ó-×5Ñ5°dÓ;Ò;àð	ús   Å=F ÆAGÇG)r*   rB   Úkeys)rm   rG   rÀ   r¿   r*   rÁ   s     `@@@r-   Ú_rebuild_exprÚFracField._rebuild_exprñ   s>   û€ Ø—‘ˆÜñ 7¸7¿<¹<¼>ó 7ó 7ˆ÷	ð 	ñ8 ˜‹~Ðr/   c                ó  • [        [        [        U R                  U R                  5      5      5      n U R                  [        U5      U5      nU R                  U5      $ ! [         a    [        SU < SU< 35      ef = f)Nz=expected an expression convertible to a rational function in rx   )
Údictr9   rb   r)   r'   rÄ   r   rª   r   r|   )rm   rG   rÀ   Úfracs       r-   r©   Ú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                ó   • [        U 5      $ rU   r   rq   s    r-   Ú	to_domainÚFracField.to_domain  s   € Ü˜TÓ"Ð"r/   c                óX   • [        U R                  U R                  U R                  5      $ rU   )r   r)   r*   r+   rq   s    r-   r¥   ÚFracField.to_ring!  s   € Ü˜Ÿ™ d§k¡k°4·:±:Ó>Ð>r/   r„   rU   )rV   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   rX   ra   rr   ru   rz   r�   r…   ry   r^   r’   r–   r™   rª   Ú__call__rÄ   r©   rË   r¥   Ú__static_attributes__r„   r/   r-   r&   r&   g   sŒ   ‡ Ù<à
ƒNØ
!Ó!ØÓØƒJØƒNØÓà,/ô  òDDò7òòQòDò
!òJô(ô*ò
,òò #,ðJ €Hò!òF(ò#õ?r/   r&   c                  ó  • \ rS rSrSrS)S jrS)S j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!S  r"S! r#S" r$S# r%S$ r&S)S% jr'S)S& jr(S)S' jr)S(r*g)*r\   i$  z=Element of multivariate distributed rational function field. Nc                ó€   • Uc  UR                   R                  nOU(       d  [        S5      eXl        X l        X0l        g )Nzzero denominator)rQ   r`   ÚZeroDivisionErrorr.   r�   rŽ   )rm   r.   r�   rŽ   s       r-   Ú__init__ÚFracElement.__init__'  s2   € Ø‰=Ø—J‘J—N‘N‰EÞÜ#Ð$6Ó7Ð7àŒ
ØŒ
Ø�
r/   c                ó:   • U R                  U R                  X5      $ rU   )Ú	__class__r.   ©Úfr�   rŽ   s      r-   r^   ÚFracElement.raw_new1  s   € Ø�{‰{˜1Ÿ7™7 EÓ1Ð1r/   c                ó>   • U R                   " UR                  U5      6 $ rU   )r^   r‘   rÝ   s      r-   r’   ÚFracElement.new4  s   € Ø�yŠy˜%Ÿ,™, uÓ-Ð.Ð.r/   c                óP   • U R                   S:w  a  [        S5      eU R                  $ )Nr´   zf.denom should be 1)rŽ   r|   r�   ©rÞ   s    r-   r{   ÚFracElement.to_poly7  s"   € Ø�7‰7�a‹<ÜÐ2Ó3Ð3Ø�w‰wˆr/   c                ó6   • U R                   R                  5       $ rU   )r.   rË   rq   s    r-   ÚparentÚFracElement.parent<  s   € Ø�z‰z×#Ñ#Ó%Ð%r/   c                óH   • U R                   U R                  U R                  4$ rU   )r.   r�   rŽ   rq   s    r-   rr   ÚFracElement.__getnewargs__?  s   € Ø—
‘
˜DŸJ™J¨¯
©
Ð3Ð3r/   c                óŠ   • U R                   nUc3  [        U R                  U R                  U R                  45      =U l         nU$ rU   )r[   rZ   r.   r�   rŽ   )rm   r[   s     r-   ru   ÚFracElement.__hash__D  s9   € Ø—
‘
ˆØ‰=Ü!% t§z¡z°4·:±:¸t¿z¹zÐ&JÓ!KÐKˆDŒJ˜Øˆr/   c                ó†   • U R                  U R                  R                  5       U R                  R                  5       5      $ rU   )r^   r�   ÚcopyrŽ   rq   s    r-   rí   ÚFracElement.copyJ  s)   € Ø�|‰|˜DŸJ™JŸO™OÓ-¨t¯z©z¯©Ó/@ÓAÐAr/   c                óÌ   • U R                   U:X  a  U $ UR                  nU R                  R                  U5      nU R                  R                  U5      nUR                  X45      $ rU   )r.   rQ   r�   r¦   rŽ   r’   )rm   Ú	new_fieldÚnew_ringr�   rŽ   s        r-   Ú	set_fieldÚFracElement.set_fieldM  sS   € Ø�:‰:˜Ó"ØˆKà —~‘~ˆHØ—J‘J×'Ñ'¨Ó1ˆEØ—J‘J×'Ñ'¨Ó1ˆEØ—=‘= Ó.Ð.r/   c                óh   • U R                   R                  " U6 U R                  R                  " U6 -  $ rU   )r�   Úas_exprrŽ   )rm   r)   s     r-   rõ   ÚFracElement.as_exprV  s+   € Ø�z‰z×!Ò! 7Ð+¨D¯J©J×,>Ò,>ÀÐ,HÑHÐHr/   c                óX  • [        U[        5      (       aS  U R                  UR                  :X  a9  U R                  UR                  :H  =(       a    U R                  UR                  :H  $ U R                  U:H  =(       a-    U R                  U R                  R
                  R                  :H  $ rU   )rc   r\   r.   r�   rŽ   rQ   r`   ©rÞ   Úgs     r-   r�   ÚFracElement.__eq__Y  sm   € Ü�aœ×%Ñ%¨!¯'©'°Q·W±WÓ*<Ø—7‘7˜aŸg™gÑ%×<¨!¯'©'°Q·W±WÑ*<Ð<à—7‘7˜a‘<×? A§G¡G¨q¯w©w¯|©|×/?Ñ/?Ñ$?Ð?r/   c                ó   • X:X  + $ rU   r„   rø   s     r-   r…   ÚFracElement.__ne___  s
   € ØŠzÐr/   c                ó,   • [        U R                  5      $ rU   )Úboolr�   rã   s    r-   Ú__bool__ÚFracElement.__bool__b  s   € Ü�A—G‘G‹}Ðr/   c                ój   • U R                   R                  5       U R                  R                  5       4$ rU   )rŽ   Úsort_keyr�   rq   s    r-   r  ÚFracElement.sort_keye  s'   € Ø—
‘
×#Ñ#Ó% t§z¡z×':Ñ':Ó'<Ð=Ð=r/   c                ó˜   • U R                   R                  U5      (       a%  U" U R                  5       UR                  5       5      $ [        $ rU   )r.   ry   r  ÚNotImplemented)Úf1Úf2Úops      r-   Ú_cmpÚFracElement._cmph  s6   € Ø�8‰8×Ñ˜r×"Ñ"Ù�b—k‘k“m R§[¡[£]Ó3Ð3ä!Ð!r/   c                ó.   • U R                  U[        5      $ rU   )r	  r   ©r  r  s     r-   Ú__lt__ÚFracElement.__lt__n  ó   € Ø�w‰w�rœ2‹Ðr/   c                ó.   • U R                  U[        5      $ rU   )r	  r   r  s     r-   Ú__le__ÚFracElement.__le__p  r  r/   c                ó.   • U R                  U[        5      $ rU   )r	  r	   r  s     r-   Ú__gt__ÚFracElement.__gt__r  r  r/   c                ó.   • U R                  U[        5      $ rU   )r	  r
   r  s     r-   Ú__ge__ÚFracElement.__ge__t  r  r/   c                óN   • U R                  U R                  U R                  5      $ ©z"Negate all coefficients in ``f``. ©r^   r�   rŽ   rã   s    r-   Ú__pos__ÚFracElement.__pos__w  s   € à�y‰y˜Ÿ™ !§'¡'Ó*Ð*r/   c                óP   • U R                  U R                  * U R                  5      $ r  r  rã   s    r-   Ú__neg__ÚFracElement.__neg__{  s   € à�y‰y˜!Ÿ'™'˜ 1§7¡7Ó+Ð+r/   c                ón  • U R                   R                  n UR                  U5      nSUS 4$ ! [         a|    UR                  (       dh  UR
                  (       aW  UR                  5       n UR                  U5      nSUR                  U5      UR                  U5      4s $ ! [         a     Of = f gf = f)Nr´   éÿÿÿÿ)r   NN)	r.   r*   r•   r   rš   r›   rœ   r�   rŽ   )rm   r‰   r*   r�   s       r-   Ú_extract_groundÚ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   ˜. ®<B4Á+B!Á<#B4Â!
B.Â+B4Â-B.Â.B4Â3B4c                óÔ  • U R                   nU(       d  U $ U (       d  U$ UR                  U5      (       a§  U R                  UR                  :X  a3  U R                  U R                  UR                  -   U R                  5      $ U R                  U R                  UR                  -  U R                  UR                  -  -   U R                  UR                  -  5      $ UR
                  R                  U5      (       a6  U R                  U R                  U R                  U-  -   U R                  5      $ [        U[        5      (       a¨  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  OÎ[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R
                  UR
                  :X  a  OUR                  U 5      $ U R                  U5      $ )z(Add rational functions ``f`` and ``g``. )r.   ry   rŽ   r’   r�   rQ   rc   r\   r*   r   Ú__radd__r  r   r   ©rÞ   rù   r.   s      r-   Ú__add__Ú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                óô  • U R                   R                  R                  U5      (       a6  U R                  U R                  U R
                  U-  -   U R
                  5      $ U R                  U5      u  p#nUS:X  a6  U R                  U R                  U R
                  U-  -   U R
                  5      $ U(       d  [        $ U R                  U R                  U-  U R
                  U-  -   U R
                  U-  5      $ ©Nr´   ©r.   rQ   ry   r’   r�   rŽ   r#  r  ©rÞ   Úcr  Úg_numerÚg_denoms        r-   r&  ÚFracElement.__radd__²  sº   € Ø�7‰7�<‰<×"Ñ" 1×%Ñ%Ø—5‘5˜Ÿ™ 1§7¡7¨1¡9Ñ,¨a¯g©gÓ6Ð6à ×0Ñ0°Ó3Ñˆ�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                óæ  • U R                   nU(       d  U $ U (       d  U* $ UR                  U5      (       a§  U R                  UR                  :X  a3  U R                  U R                  UR                  -
  U R                  5      $ U R                  U R                  UR                  -  U R                  UR                  -  -
  U R                  UR                  -  5      $ UR
                  R                  U5      (       a6  U R                  U R                  U R                  U-  -
  U R                  5      $ [        U[        5      (       a¨  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  OÎ[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R
                  UR
                  :X  a  OUR                  U 5      $ U R                  U5      u  p4nUS:X  a6  U R                  U R                  U R                  U-  -
  U R                  5      $ U(       d  [        $ U R                  U R                  U-  U R                  U-  -
  U R                  U-  5      $ )z-Subtract rational functions ``f`` and ``g``. r´   )r.   ry   rŽ   r’   r�   rQ   rc   r\   r*   r   Ú__rsub__r  r   r   r#  ©rÞ   rù   r.   r  r/  r0  s         r-   Ú__sub__Ú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Ñˆ�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                óú  • U R                   R                  R                  U5      (       a7  U R                  U R                  * U R
                  U-  -   U R
                  5      $ U R                  U5      u  p#nUS:X  a7  U R                  U R                  * U R
                  U-  -   U R
                  5      $ U(       d  [        $ U R                  U R                  * U-  U R
                  U-  -   U R
                  U-  5      $ r+  r,  r-  s        r-   r3  ÚFracElement.__rsub__å  sÁ   € Ø�7‰7�<‰<×"Ñ" 1×%Ñ%Ø—5‘5˜!Ÿ'™'˜ A§G¡G¨A¡IÑ-¨q¯w©wÓ7Ð7à ×0Ñ0°Ó3Ñˆ�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                óü  • U R                   nU (       a  U(       d  UR                  $ UR                  U5      (       a@  U R                  U R                  UR                  -  U R
                  UR
                  -  5      $ UR                  R                  U5      (       a)  U R                  U R                  U-  U R
                  5      $ [        U[        5      (       a¨  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  OÎ[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R                  UR                  :X  a  OUR                  U 5      $ U R                  U5      $ )z-Multiply rational functions ``f`` and ``g``. )r.   r]   ry   r’   r�   rŽ   rQ   rc   r\   r*   r   Ú__rmul__r  r   r   r'  s      r-   Ú__mul__ÚFracElement.__mul__ò  sS  € à—‘ˆæžØ—:‘:ÐØ×Ñ˜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                ó   • U R                   R                  R                  U5      (       a)  U R                  U R                  U-  U R
                  5      $ U R                  U5      u  p#nUS:X  a)  U R                  U R                  U-  U R
                  5      $ U(       d  [        $ U R                  U R                  U-  U R
                  U-  5      $ r+  r,  r-  s        r-   r:  ÚFracElement.__rmul__  s›   € Ø�7‰7�<‰<×"Ñ" 1×%Ñ%Ø—5‘5˜Ÿ™ ™ A§G¡GÓ,Ð,à ×0Ñ0°Ó3Ñˆ�Wà�‹7Ø—5‘5˜Ÿ™ ™¨!¯'©'Ó2Ð2ÞÜ!Ð!à—5‘5˜Ÿ™ ™¨!¯'©'°'©/Ó:Ð:r/   c                ó¸  • U R                   nU(       d  [        eUR                  U5      (       a@  U R                  U R                  UR
                  -  U R
                  UR                  -  5      $ UR                  R                  U5      (       a)  U R                  U R                  U R
                  U-  5      $ [        U[        5      (       a¨  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  OÎ[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R                  UR                  :X  a  OUR                  U 5      $ U R                  U5      u  p4nUS:X  a)  U R                  U R                  U R
                  U-  5      $ U(       d  [        $ U R                  U R                  U-  U R
                  U-  5      $ )z0Computes quotient of fractions ``f`` and ``g``. r´   )r.   rØ   ry   r’   r�   rŽ   rQ   rc   r\   r*   r   Ú__rtruediv__r  r   r   r#  r4  s         r-   Ú__truediv__Ú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Ñˆ�Wà�‹7Ø—5‘5˜Ÿ™ !§'¡'¨'¡/Ó2Ð2ÞÜ!Ð!à—5‘5˜Ÿ™ ™¨!¯'©'°'©/Ó:Ð:r/   c                óº  • U (       d  [         eU R                  R                  R                  U5      (       a)  U R	                  U R
                  U-  U R                  5      $ U R                  U5      u  p#nUS:X  a)  U R	                  U R
                  U-  U R                  5      $ U(       d  [        $ U R	                  U R
                  U-  U R                  U-  5      $ r+  )	rØ   r.   rQ   ry   r’   rŽ   r�   r#  r  r-  s        r-   r@  ÚFracElement.__rtruediv__:  s¤   € ÞÜ#Ð#Ø�W‰W�\‰\×$Ñ$ Q×'Ñ'Ø—5‘5˜Ÿ™ ™ A§G¡GÓ,Ð,à ×0Ñ0°Ó3Ñˆ�Wà�‹7Ø—5‘5˜Ÿ™ ™¨!¯'©'Ó2Ð2ÞÜ!Ð!à—5‘5˜Ÿ™ ™¨!¯'©'°'©/Ó:Ð:r/   c                óÜ   • US:¼  a,  U R                  U R                  U-  U R                  U-  5      $ U (       d  [        eU R                  U R                  U* -  U R                  U* -  5      $ )z+Raise ``f`` to a non-negative power ``n``. r   )r^   r�   rŽ   rØ   )rÞ   Úns     r-   Ú__pow__Ú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                óþ   • UR                  5       nU R                  U R                  R                  U5      U R                  -  U R                  U R                  R                  U5      -  -
  U R                  S-  5      $ )zÝ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   )r{   r’   r�   ÚdiffrŽ   )rÞ   Úxs     r-   rJ  Ú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                ó,  • S[        U5      s=:  a  U R                  R                  ::  a;  O  O8U R                  [	        [        U R                  R                  U5      5      5      $ [        SU R                  R                  < S[        U5      < 35      e)Nr   z expected at least 1 and at most z values, got )r@   r.   rS   Úevaluater9   rb   r'   r|   )rÞ   r>   s     r-   rÔ   Ú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                óÖ  • [        U[        5      (       a_  Uc\  U VVs/ s H  u  p2UR                  5       U4PM     nnnU R                  R	                  U5      U R
                  R	                  U5      pTOEUR                  5       nU R                  R	                  X5      U R
                  R	                  X5      pTUR                  R                  5       nUR                  XE5      $ s  snnf rU   )	rc   r9   r{   r�   rN  rŽ   rQ   r¢   r’   )rÞ   rK  ÚaÚXr�   rŽ   r.   s          r-   rN  ÚFracElement.evaluatei  s¯   € Ü�aœ×Ñ 1¡9Ù/0Ô2ªq¡t q�1—9‘9“; Ó"©qˆAÑ2ØŸ7™7×+Ñ+¨AÓ.°·±×0@Ñ0@ÀÓ0C‘5à—	‘	“ˆAØŸ7™7×+Ñ+¨AÓ1°1·7±7×3CÑ3CÀAÓ3I�5à—
‘
×#Ñ#Ó%ˆØ�y‰y˜Ó&Ð&ùó 3s   žC%c                ó¢  • [        U[        5      (       a_  Uc\  U VVs/ s H  u  p2UR                  5       U4PM     nnnU R                  R	                  U5      U R
                  R	                  U5      pTOEUR                  5       nU R                  R	                  X5      U R
                  R	                  X5      pTU R                  XE5      $ s  snnf rU   )rc   r9   r{   r�   ÚsubsrŽ   r’   )rÞ   rK  rQ  rR  r�   rŽ   s         r-   rU  ÚFracElement.subst  s“   € Ü�aœ×Ñ 1¡9Ù/0Ô2ªq¡t q�1—9‘9“; Ó"©qˆAÑ2ØŸ7™7Ÿ<™<¨›?¨A¯G©G¯L©L¸«O‘5à—	‘	“ˆAØŸ7™7Ÿ<™<¨Ó-¨q¯w©w¯|©|¸AÓ/A�5à�u‰u�UÓ"Ð"ùó 3s   žCc                ó   • [         erU   )r£   )rÞ   rK  rQ  s      r-   ÚcomposeÚFracElement.compose~  s   € Ü!Ð!r/   )r[   rŽ   r.   r�   rU   )+rV   rÏ   rÐ   rÑ   rÒ   rÙ   r^   r’   r{   ræ   rr   r[   ru   rí   rò   rõ   r�   r…   rÿ   r  r	  r  r  r  r  r  r  r#  r(  r&  r5  r3  r;  r:  rA  r@  rG  rJ  rÔ   rN  rU  rX  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>rr     sÌ   ðÙ 'å "Ý ç -× -å  Ý Ý #Ý "Ý $ß 3Ý :Ý -Ý ;Ý ;Ý =Ý 4ß 4Ý 1Ý 1Ý :ß 3Ý 3Ý "Ý 1Ý )àØ!$ó #ó ð#ð
 Ø"%ó !ó ð!ð
 Ø"%ó ó ðð ñ2ó ð2ôj{?�ô {?ôz["�- °+õ ["r/   