Ë
    O/æjýR  ã                  óÌ  — U d Z ddlm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( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 e2e&fd„«       Z7e2e&fd„«       Z8e2e&fd„«       Z9e2d„ «       Z:i Z;de<d<    G d „ d!e0«      Z= G d"„ d#ee0e«      Z>y$)%z!Sparse rational function fields. é    )Úannotations)ÚAny)Úreduce)ÚaddÚmulÚltÚleÚgtÚge)ÚExpr)ÚMod)ÚExp1)ÚS)ÚSymbol)ÚCantSympifyÚsympify)ÚExpBase)ÚDomainElement©ÚFractionField)ÚPolynomialRing)Úconstruct_domain)Úlex)ÚCoercionFailed)Úbuild_options)Ú_parallel_dict_from_expr)Ú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       úU/root/repos/pocs/video-evals/.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+   Úxfieldr/   $   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+   Úvfieldr3   *   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Úsingler5   ÚnumdensÚexprÚrepsÚrepÚcoeffsÚ_r*   ÚfracsÚis                 r+   ÚsfieldrL   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<zdict[Any, Any]Ú_field_cachec                  ó|   — e Zd ZdZef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. c                ó"  — ddl m}  ||||«      }|j                  }|j                  }|j                  }|j
                  }| j                  ||||f}t        j                  |«      }|�€%t        j                  | «      }||_        t        |«      |_        ||_        t        dt         fd|i«      |_        ||_        ||_        ||_        ||_        |j#                  |j$                  «      |_        |j#                  |j&                  «      |_        |j)                  «       |_        t-        |j                  |j*                  «      D ]<  \  }	}
t/        |	t0        «      sŒ|	j2                  }t5        ||«      rŒ0t7        |||
«       Œ> |t        |<   |S )Nr   ©ÚPolyRingÚFracElementr,   )Úsympy.polys.ringsrQ   r'   Úngensr(   r)   Ú__name__rM   ÚgetÚobjectÚ__new__Ú_hash_tupleÚhashÚ_hashÚringÚtyperR   ÚdtypeÚzeroÚoneÚ_gensr%   ÚzipÚ
isinstancer   r1   ÚhasattrÚsetattr)Úclsr'   r(   r)   rQ   r\   rT   rY   ÚobjÚsymbolÚ	generatorr1   s               r+   rX   zFracField.__new__k   sL  € Ý.Ù˜ ¨Ó/ˆØ—,‘,ˆØ—
‘
ˆØ—‘ˆØ—
‘
ˆà—|‘| W¨e°V¸UÐCˆÜ×Ñ˜{Ó+ˆà‰;Ü—.‘. Ó%ˆCØ)ˆCŒOÜ˜[Ó)ˆCŒIØˆCŒHÜ˜]¬[¨N¸WÀc¸NÓKˆCŒIØ!ˆCŒKØˆCŒIØˆCŒJØˆCŒIà—y‘y §¡Ó+ˆCŒHØ—i‘i §¡Ó)ˆCŒGà—y‘y“{ˆCŒHä%(¨¯©°c·h±hÓ%?ò 6Ñ!�˜	Ü˜f¤fÕ-Ø!Ÿ;™;�Dä" 3¨Õ-Ü  T¨9Õ5ð6ð ),ŒL˜Ñ%àˆ
r-   c                ó„   — t        | j                  j                  D �cg c]  }| j                  |«      ‘Œ c}«      S c c}w )z(Return a list of polynomial generators. )r@   r\   r%   r^   ©ÚselfÚgens     r+   ra   zFracField._gens‘   s+   € ä°$·)±)·.±.ÖB¨3�t—z‘z #•ÒBÓCÐCùÒBs   ž=c                óH   — | j                   | j                  | j                  fS ©N)r'   r(   r)   ©rl   s    r+   Ú__getnewargs__zFracField.__getnewargs__•   s   € Ø—‘˜dŸk™k¨4¯:©:Ð6Ð6r-   c                ó   — | j                   S ro   )r[   rp   s    r+   Ú__hash__zFracField.__hash__˜   s   € Ø�z‰zÐr-   c                ó¸   — t        || j                  «      r)| j                  j                  |j	                  «       «      S t        d| j                  ›d|›d�«      ‚)Nzexpected a ú, got z instead)rc   r^   r\   ÚindexÚto_polyÚ
ValueErrorrk   s     r+   rv   zFracField.index›   s=   € Ü�c˜4Ÿ:™:Ô&Ø—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 ro   )rc   r$   r'   rT   r(   r)   ©rl   Úothers     r+   Ú__eq__zFracField.__eq__¡   sV   € Ü˜%¤Ó+ò DØ�\‰\˜4Ÿ:™: t§{¡{°D·J±JÐ?Ø�]‰]˜EŸK™K¨¯©°u·{±{ÐCñDð	Dr-   c                ó   — | |k(   S ro   © rz   s     r+   Ú__ne__zFracField.__ne__¦   s   € Ø˜5‘=Ð Ð r-   Nc                ó&   — | j                  ||«      S ro   )r^   ©rl   ÚnumerÚdenoms      r+   Úraw_newzFracField.raw_new©   s   € Ø�z‰z˜% Ó'Ð'r-   c                ó~   — |€| j                   j                  }|j                  |«      \  }}| j                  ||«      S ro   )r\   r`   Úcancelr„   r�   s      r+   ÚnewzFracField.new«   s6   € Øˆ= $§)¡)§-¡-˜%Ø—|‘| EÓ*‰ˆˆuØ�|‰|˜E 5Ó)Ð)r-   c                ó8   — | j                   j                  |«      S ro   )r(   Úconvert)rl   Úelements     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ro   )r‡   r\   Ú
ground_newr   r(   Úis_FieldÚhas_assoc_FieldÚ	get_fieldr‰   r‚   rƒ   r„   )rl   rŠ   r(   r\   Ú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Ú
conversionr6   Úparsing)rc   rR   r,   r(   r   r�   r   r\   Úto_fieldÚNotImplementedErrorr   Úclear_denomsÚto_ringÚset_ringr„   r@   r>   r7   r8   Úring_newr‡   Ústrr   Ú	from_expr)rl   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ro   )Úis_Powrc   r   Úas_base_exp)Ú.0rm   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   é   )rV   Úis_Addr   r   r7   r8   ÚargsÚis_Mulr   r    rc   r   r   r¡   r   ÚintÚ
is_Integerr   ÚOner‰   r   rŽ   r�   r�   )rE   ri   ÚbÚerm   Ú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(   r@   Úkeys)rl   rE   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 ru   )
Údictr7   rb   r'   r%   r´   r   r�   r   rx   )rl   rE   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 ro   r   rp   s    r+   Ú	to_domainzFracField.to_domain  s   € Ü˜TÓ"Ð"r-   c                ó^   — ddl m}  || j                  | j                  | j                  «      S )Nr   rP   )rS   rQ   r'   r(   r)   )rl   rQ   s     r+   r˜   zFracField.to_ring  s    € Ý.Ù˜Ÿ™ d§k¡k°4·:±:Ó>Ð>r-   ro   )rU   Ú
__module__Ú__qualname__Ú__doc__r   rX   ra   rq   rs   rv   r|   r   r„   r‡   r‹   r�   r�   Ú__call__r´   rœ   r¹   r˜   r~   r-   r+   r$   r$   h   se   „ Ù<à,/ó $òLDò7òòQòDò
!ó(ó*ò
,òò #,ðJ €Hò!òF(ò#ó?r-   r$   c                  óô   — e Zd Z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#„ Z%d'd$„Z&d'd%„Z'd'd&„Z(y)(rR   z=Element of multivariate distributed rational function field. Nc                ó€   — |€!| j                   j                  j                  }n|st        d«      ‚|| _        || _        y )Nzzero denominator)r,   r\   r`   ÚZeroDivisionErrorr‚   rƒ   r�   s      r+   Ú__init__zFracElement.__init__!  s7   € Øˆ=Ø—J‘J—O‘O×'Ñ'‰EÙÜ#Ð$6Ó7Ð7àˆŒ
Øˆ�
r-   c                ó&   — | j                  ||«      S ro   )Ú	__class__©Úfr‚   rƒ   s      r+   r„   zFracElement.raw_new*  s   € Ø�{‰{˜5 %Ó(Ð(r-   c                ó>   —  | j                   |j                  |«      Ž S ro   )r„   r†   rÅ   s      r+   r‡   zFracElement.new,  s   € Øˆq�y‰y˜%Ÿ,™, uÓ-Ð.Ð.r-   c                óN   — | j                   dk7  rt        d«      ‚| j                  S )Nr¥   zf.denom should be 1)rƒ   rx   r‚   ©rÆ   s    r+   rw   zFracElement.to_poly/  s"   € Ø�7‰7�aŠ<ÜÐ2Ó3Ð3Ø�w‰wˆr-   c                ó6   — | j                   j                  «       S ro   )r,   r¹   rp   s    r+   ÚparentzFracElement.parent4  s   € Ø�z‰z×#Ñ#Ó%Ð%r-   c                óH   — | j                   | j                  | j                  fS ro   )r,   r‚   rƒ   rp   s    r+   rq   zFracElement.__getnewargs__7  s   € Ø—
‘
˜DŸJ™J¨¯
©
Ð3Ð3r-   c                óˆ   — | j                   }|€3t        | j                  | j                  | j                  f«      x| _         }|S ro   )r[   rZ   r,   r‚   rƒ   )rl   r[   s     r+   rs   zFracElement.__hash__<  s9   € Ø—
‘
ˆØˆ=Ü!% t§z¡z°4·:±:¸t¿z¹zÐ&JÓ!KÐKˆDŒJ˜Øˆr-   c                ó†   — | j                  | j                  j                  «       | j                  j                  «       «      S ro   )r„   r‚   Úcopyrƒ   rp   s    r+   rÏ   zFracElement.copyB  s)   € Ø�|‰|˜DŸJ™JŸO™OÓ-¨t¯z©z¯©Ó/@ÓAÐAr-   c                óÌ   — | j                   |k(  r| S |j                  }| j                  j                  |«      }| j                  j                  |«      }|j                  ||«      S ro   )r,   r\   r‚   r™   rƒ   r‡   )rl   Ú	new_fieldÚnew_ringr‚   rƒ   s        r+   Ú	set_fieldzFracElement.set_fieldE  sU   € Ø�:‰:˜Ò"ØˆKà —~‘~ˆHØ—J‘J×'Ñ'¨Ó1ˆEØ—J‘J×'Ñ'¨Ó1ˆEØ—=‘= ¨Ó.Ð.r-   c                óh   —  | j                   j                  |Ž  | j                  j                  |Ž z  S ro   )r‚   Úas_exprrƒ   )rl   r'   s     r+   rÕ   zFracElement.as_exprN  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 ro   )rc   rR   r,   r‚   rƒ   r\   r`   ©rÆ   Úgs     r+   r|   zFracElement.__eq__Q  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 ro   r~   r×   s     r+   r   zFracElement.__ne__W  s   € Ø˜‘6ˆzÐr-   c                ó,   — t        | j                  «      S ro   )Úboolr‚   rÉ   s    r+   Ú__bool__zFracElement.__bool__Z  s   € Ü�A—G‘G‹}Ðr-   c                ój   — | j                   j                  «       | j                  j                  «       fS ro   )rƒ   Úsort_keyr‚   rp   s    r+   rÞ   zFracElement.sort_key]  s'   € Ø—
‘
×#Ñ#Ó% t§z¡z×':Ñ':Ó'<Ð=Ð=r-   c                ó˜   — t        || j                  j                  «      r% || j                  «       |j                  «       «      S t        S ro   )rc   r,   r^   rÞ   ÚNotImplemented)Úf1Úf2Úops      r+   Ú_cmpzFracElement._cmp`  s3   € Ü�b˜"Ÿ(™(Ÿ.™.Ô)Ù�b—k‘k“m R§[¡[£]Ó3Ð3ä!Ð!r-   c                ó.   — | j                  |t        «      S ro   )rä   r   ©rá   râ   s     r+   Ú__lt__zFracElement.__lt__f  ó   € Ø�w‰w�rœ2‹Ðr-   c                ó.   — | j                  |t        «      S ro   )rä   r	   ræ   s     r+   Ú__le__zFracElement.__le__h  rè   r-   c                ó.   — | j                  |t        «      S ro   )rä   r
   ræ   s     r+   Ú__gt__zFracElement.__gt__j  rè   r-   c                ó.   — | j                  |t        «      S ro   )rä   r   ræ   s     r+   Ú__ge__zFracElement.__ge__l  rè   r-   c                óN   — | j                  | j                  | j                  «      S ©z"Negate all coefficients in ``f``. ©r„   r‚   rƒ   rÉ   s    r+   Ú__pos__zFracElement.__pos__o  s   € à�y‰y˜Ÿ™ !§'¡'Ó*Ð*r-   c                óP   — | j                  | j                   | j                  «      S rð   rñ   rÉ   s    r+   Ú__neg__zFracElement.__neg__s  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ƒ   )rl   rŠ   r(   r‘   s       r+   Ú_extract_groundzFracElement._extract_groundw  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                ó†  — | j                   }|s| S | s|S t        ||j                  «      r¦| j                  |j                  k(  r3| j	                  | j
                  |j
                  z   | j                  «      S | j	                  | j
                  |j                  z  | j                  |j
                  z  z   | j                  |j                  z  «      S t        ||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,   rc   r^   rƒ   r‡   r‚   r\   rR   r(   r   Ú__radd__rà   r   r   ©rÆ   rØ   r,   s      r+   Ú__add__zFracElement.__add__‹  s�  € à—‘ˆáØˆHÙØˆHÜ˜˜5Ÿ;™;Ô'Ø�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Ü˜˜5Ÿ:™:×+Ñ+Ô,Ø—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                óê  — t        || 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¥   ©	rc   r,   r\   r^   r‡   r‚   rƒ   r÷   rà   ©rÆ   Úcrã   Úg_numerÚg_denoms        r+   rù   zFracElement.__radd__ª  s»   € Ü�a˜Ÿ™Ÿ™×+Ñ+Ô,Ø—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                óŽ  — | j                   }|s| S | s| S t        ||j                  «      r¦| j                  |j                  k(  r3| j	                  | j
                  |j
                  z
  | j                  «      S | j	                  | j
                  |j                  z  | j                  |j
                  z  z
  | j                  |j                  z  «      S t        ||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,   rc   r^   rƒ   r‡   r‚   r\   rR   r(   r   Ú__rsub__rà   r   r   r÷   ©rÆ   rØ   r,   rã   r  r  s         r+   Ú__sub__zFracElement.__sub__·  sü  € à—‘ˆáØˆHÙØ�2ˆIÜ˜˜5Ÿ;™;Ô'Ø�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Ü˜˜5Ÿ:™:×+Ñ+Ô,Ø—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                óð  — t        || 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Â   € Ü�a˜Ÿ™Ÿ™×+Ñ+Ô,Ø—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 t        ||j                  «      r@| j	                  | j
                  |j
                  z  | j                  |j                  z  «      S t        ||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_   rc   r^   r‡   r‚   rƒ   r\   rR   r(   r   Ú__rmul__rà   r   r   rú   s      r+   Ú__mul__zFracElement.__mul__ê  s@  € à—‘ˆá™Ø—:‘:ÐÜ˜˜5Ÿ;™;Ô'Ø—5‘5˜Ÿ™ §¡™¨!¯'©'°!·'±'©/Ó:Ð:Ü˜˜5Ÿ:™:×+Ñ+Ô,Ø—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                ó–  — 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ÿ   s        r+   r	  zFracElement.__rmul__  sœ   € Ü�a˜Ÿ™Ÿ™×+Ñ+Ô,Ø—5‘5˜Ÿ™ ™ A§G¡GÓ,Ð,à ×0Ñ0°Ó3ÑˆˆG�Wà�Š7Ø—5‘5˜Ÿ™ ™¨!¯'©'Ó2Ð2ÙÜ!Ð!à—5‘5˜Ÿ™ ™¨!¯'©'°'©/Ó:Ð:r-   c                ól  — | j                   }|st        ‚t        ||j                  «      r@| j	                  | j
                  |j                  z  | j                  |j
                  z  «      S t        ||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Á   rc   r^   r‡   r‚   rƒ   r\   rR   r(   r   Ú__rtruediv__rà   r   r   r÷   r  s         r+   Ú__truediv__zFracElement.__truediv__  s“  € à—‘ˆáÜ#Ð#Ü˜˜5Ÿ;™;Ô'Ø—5‘5˜Ÿ™ §¡™¨!¯'©'°!·'±'©/Ó:Ð:Ü˜˜5Ÿ:™:×+Ñ+Ô,Ø—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         ‚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Á   rc   r,   r\   r^   r‡   rƒ   r‚   r÷   rà   rÿ   s        r+   r  zFracElement.__rtruediv__2  s¥   € ÙÜ#Ð#Ü˜˜1Ÿ7™7Ÿ<™<×-Ñ-Ô.Ø—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__A  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)

        r6   )rw   r‡   r‚   Údiffrƒ   )rÆ   Úxs     r+   r  zFracElement.diffJ  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,   rT   Úevaluater7   rb   r%   rx   )rÆ   r<   s     r+   r¾   zFracElement.__call__[  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 ro   )	rc   r7   rw   r‚   r  rƒ   r\   r•   r‡   )rÆ   r  ÚaÚXr‚   rƒ   r,   s          r+   r  zFracElement.evaluatea  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 ro   )rc   r7   rw   r‚   Úsubsrƒ   r‡   )rÆ   r  r  r  r‚   rƒ   s         r+   r  zFracElement.subsl  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         ‚ro   )r–   )rÆ   r  r  s      r+   ÚcomposezFracElement.composev  s   € Ü!Ð!r-   ro   ))rU   r»   r¼   r½   rÂ   r„   r‡   rw   rË   rq   r[   rs   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+   rR   rR     sÊ   „ ÙGóò)ò/òò
&ò4ð €EòòBò/òIò@òòò>ò"òòòòò+ò,ò$ò(ò>Mò$MòLNòò4;ò;òB;ò7òTò"qó	'ó#ô"r-   rR   N)?r½   Ú
__future__r   Útypingr   Ú	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.domainelementr   Ú!sympy.polys.domains.fractionfieldr   Ú"sympy.polys.domains.polynomialringr   Úsympy.polys.constructorr   Úsympy.polys.orderingsr   Úsympy.polys.polyerrorsr   Úsympy.polys.polyoptionsr   Úsympy.polys.polyutilsr   rS   r   Úsympy.printing.defaultsr   Úsympy.utilitiesr   Úsympy.utilities.iterablesr    Úsympy.utilities.magicr!   r,   r/   r3   rL   rM   Ú__annotations__r$   rR   r~   r-   r+   ú<module>r7     sØ   ðÚ 'å "Ý Ý ç -× -å  Ý Ý #Ý "Ý $ß 3Ý :Ý ;Ý ;Ý =Ý 4Ý %Ý 1Ý 1Ý :Ý )Ý 3Ý "Ý 1Ý )àØ!$ò #ó ð#ð
 Ø"%ò !ó ð!ð
 Ø"%ò ó ðð ñ2ó ð2ðh  "€ˆnÓ !ôt?�ô t?ôlY"�- °+õ Y"r-   