+
    ‹°³j@P ã                  ó  € R t ^ RIHt ^ RIHtHtHtHtHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHtHt ^ R
IHt ^ RIHt ^ RIH t  ^ RI!H"t"H#t#H$t$ ^ RI%H&t& ^ RI'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t. ^ RI/H0t0H1t1 ^ RI2H3t3H4t4H5t5H6t6 ^ RI7H&t8H9t:H;t; ^ RI<H=t=H>t>H?t? ^ RI@HAtA ^ RIBHCtCHDtD ^ RIEHFtF ^ RIGHHtH ]C]03R R ll4       tI]C]03R l4       tJ]C]03R l4       tK]CR 4       tLR  tM ! R! R"]A]4      tN ! R# R$](]A]]O4      tPR%# )&zSparse polynomial rings. )Úannotations)ÚaddÚmulÚltÚleÚgtÚge)Úreduce)ÚGeneratorType)Úcacheit)ÚExpr)Úigcd)ÚSymbolÚsymbols)ÚCantSympifyÚsympify)Úmultinomial_coefficients)ÚIPolys)Úconstruct_domain)ÚninfÚdmp_to_dictÚdmp_from_dict)ÚDomain)ÚDomainElement©ÚPolynomialRing©Úheugcd)ÚMonomialOps)ÚlexÚMonomialOrder)ÚCoercionFailedÚGeneratorsErrorÚExactQuotientFailedÚMultivariatePolynomialError)r   ÚOrderÚbuild_options)Úexpr_from_dictÚ_dict_reorderÚ_parallel_dict_from_expr)ÚDefaultPrinting)ÚpublicÚsubsets)Úis_sequence)Úpollutec               ó   € V ^8„  d   QhRR/# )é   ÚorderzMonomialOrder | str© )Úformats   "ÚR/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/polys/rings.pyÚ__annotate__r5   %   s   € ÷ !ñ !Ð!2ñ !ó    c                óB   € \        WV4      pV3VP                  ,           # )aR  Construct a polynomial ring returning ``(ring, x_1, ..., x_n)``.

Parameters
==========

symbols : str
    Symbol/Expr or sequence of str, Symbol/Expr (non-empty)
domain : :class:`~.Domain` or coercible
order : :class:`~.MonomialOrder` or coercible, optional, defaults to ``lex``

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.orderings import lex

>>> R, x, y, z = ring("x,y,z", ZZ, lex)
>>> R
Polynomial ring in x, y, z over ZZ with lex order
>>> x + y + z
x + y + z
>>> type(_)
<class 'sympy.polys.rings.PolyElement'>

©ÚPolyRingÚgens©r   Údomainr1   Ú_rings   &&& r4   Úringr>   $   s!   € ô8 �W eÓ,€EØˆ8�e—j‘jÕ Ð r6   c                ó4   € \        WV4      pW3P                  3# )aX  Construct a polynomial ring returning ``(ring, (x_1, ..., x_n))``.

Parameters
==========

symbols : str
    Symbol/Expr or sequence of str, Symbol/Expr (non-empty)
domain : :class:`~.Domain` or coercible
order : :class:`~.MonomialOrder` or coercible, optional, defaults to ``lex``

Examples
========

>>> from sympy.polys.rings import xring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.orderings import lex

>>> R, (x, y, z) = xring("x,y,z", ZZ, lex)
>>> R
Polynomial ring in x, y, z over ZZ with lex order
>>> x + y + z
x + y + z
>>> type(_)
<class 'sympy.polys.rings.PolyElement'>

r8   r;   s   &&& r4   Úxringr@   C   s   € ô8 �W eÓ,€EØ—:‘:ÐÐr6   c                óš   € \        WV4      p\        VP                   Uu. uF  qDP                  NK  	  upVP                  4       V# u upi )a\  Construct a polynomial ring and inject ``x_1, ..., x_n`` into the global namespace.

Parameters
==========

symbols : str
    Symbol/Expr or sequence of str, Symbol/Expr (non-empty)
domain : :class:`~.Domain` or coercible
order : :class:`~.MonomialOrder` or coercible, optional, defaults to ``lex``

Examples
========

>>> from sympy.polys.rings import vring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.orderings import lex

>>> vring("x,y,z", ZZ, lex)
Polynomial ring in x, y, z over ZZ with lex order
>>> x + y + z # noqa:
x + y + z
>>> type(_)
<class 'sympy.polys.rings.PolyElement'>

)r9   r.   r   Únamer:   )r   r<   r1   r=   Úsyms   &&&  r4   ÚvringrD   b   s=   € ô6 �W eÓ,€EÜ %§-¢-Ó1¡-˜3�hŒh¡-Ñ1°5·:±:Ô>Ø€Lùò 2s    Ac                óÀ  € Rp\        V 4      '       g   V .Rr0\        \        \        V 4      4      p \	        W4      p\        W4      w  rTVP                  f™   \        V Uu. uF  p\        VP                  4       4      NK  	  up. 4      p\        WtR7      w  Vn        p\        \        Wx4      4      p	V UU
Uu. uF-  qfP                  4        U
Uu/ uF  w  r«W©V,          bK  	  upp
NK/  	  pp
pp\        VP                  VP                  VP                  4      p\        \        VP                   V4      4      pV'       d   WÍ^ ,          3# WÍ3# u upi u upp
i u upp
pi )a   Construct a ring deriving generators and domain from options and input expressions.

Parameters
==========

exprs : :class:`~.Expr` or sequence of :class:`~.Expr` (sympifiable)
symbols : sequence of :class:`~.Symbol`/:class:`~.Expr`
options : keyword arguments understood by :class:`~.Options`

Examples
========

>>> from sympy import sring, symbols

>>> x, y, z = symbols("x,y,z")
>>> R, f = sring(x + 2*y + 3*z)
>>> R
Polynomial ring in x, y, z over ZZ with lex order
>>> f
x + 2*y + 3*z
>>> type(_)
<class 'sympy.polys.rings.PolyElement'>

FT)Úopt)r-   ÚlistÚmapr   r&   r)   r<   ÚsumÚvaluesr   ÚdictÚzipÚitemsr9   r:   r1   Ú	from_dict)Úexprsr   ÚoptionsÚsinglerF   ÚrepsÚrepÚcoeffsÚ
coeffs_domÚ	coeff_mapÚmÚcr=   Úpolyss   &*,           r4   ÚsringrZ   �   s  € ð4 €Fä�u×ÒØ˜ ˆvä””W˜eÓ$Ó%€EÜ
˜Ó
)€Cô )¨Ó4�I€Dà
‡z�zÒÜ±TÓ;±T¨c”t˜CŸJ™J›LÖ)±TÑ;¸RÓ@ˆä!1°&Ô!BÑˆŒ
�Jäœ˜VÓ0Ó1ˆ	ÙEIÕJÁT¸c¯Y©Y¬[Ô9©[¡T Q�˜a•L’©[Õ9ÁTˆÒJä�S—X‘X˜sŸz™z¨3¯9©9Ó5€EÜ”�U—_‘_ dÓ+Ó,€EçØ˜Q•xÐ Ð àˆ~Ðùò <ùó
 :ùÔJs   Á "EÂ8EÃEÃ#EÅEc                óÈ  € \        V \        4      '       d   V '       d   \        V R R7      # R# \        V \        4      '       d   V 3# \	        V 4      '       d‚   \
        ;QJ d    R V  4       F  '       d   K   RM	  R M! R V  4       4      '       d   \        V 4      # \
        ;QJ d    R V  4       F  '       d   K   RM	  R M! R V  4       4      '       d   V # \        R4      h)T)Úseqc              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5i©N)Ú
isinstanceÚstr©Ú.0Úss   & r4   Ú	<genexpr>Ú!_parse_symbols.<locals>.<genexpr>¼   s   é € Ð3©7 aŒz˜!œS×!Ð!«7ùó   ‚Fc              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir^   )r_   r   ra   s   & r4   rd   re   ¾   s   é € Ð6©g¨”˜Aœt×$Ð$«gùrf   zbexpected a string, Symbol or expression or a non-empty sequence of strings, Symbols or expressionsr2   )r_   r`   Ú_symbolsr   r-   Úallr"   ©r   s   &r4   Ú_parse_symbolsrk   ¶   s¡   € Ü�'œ3×Òß.5Œx˜ TÔ*Ð=¸2Ð=Ü	�GœT×	"Ò	"ØˆzÐÜ	�W×	Ò	ß‹3Ñ3©7Ó3�3�3Š3Ñ3©7Ó3×3Ò3Ü˜GÓ$Ð$ß‹SÑ6©gÓ6�S�SŠSÑ6©gÓ6×6Ò6ØˆNä
Ð~Ó
Ðr6   c                  ór  € ] tR t^Ät$ RtR]R&   R]R&   R]R&   R]R	&   R
]R&   ]3R ltR tR t	R t
R tR tR tR2R lt]R 4       tR t]R 4       t]R 4       tR tR3R ltR tR tR t]tR3R ltR3R ltR  tR! tR" tR# t R$ t!R% t"R& t#R' t$R( t%]R) 4       t&]R* 4       t'R+ t(R, t)R- t*R. t+R/ t,R0 t-R1t.R# )4r9   z*Multivariate distributed polynomial ring. ztuple[PolyElement, ...]r:   ztuple[Expr, ...]r   ÚintÚngensr   r<   r    r1   c                	óˆ  a€ \        \        V4      4      p\        V4      p\        P                  ! V4      p\
        P                  ! S4      oV P                  WVS3pVP                  '       d7   \        V4      \        VP                  4      ,          '       d   \        R 4      h\        P                  V 4      pWVn        \        V4      Vn        Wn	        WFn        W&n        SVn        \'        VR4      P(                  Vn        RV,          Vn        VP/                  4       Vn        \        VP0                  4      Vn        VP,                  VP4                  3.Vn        V'       d    \9        V4      pVP;                  4       Vn        VP?                  4       Vn         VPC                  4       Vn"        VPG                  4       Vn$        VPK                  4       Vn&        VPO                  4       Vn(        VPS                  4       Vn*        M/R pW†n        W†n         R Vn"        W†n$        W†n&        W†n(        W†n*        S\V        J d   \X        Vn-        MV3R lVn-        \]        VP                  VP0                  4       FH  w  rš\_        V	\`        4      '       g   K  V	Pb                  p\e        Wk4      '       d   K<  \g        WkV
4       KJ  	  V# )z7polynomial ring and it's ground domain share generatorsc                ó   € R# ©Nr2   r2   )ÚaÚbs   &&r4   Ú<lambda>Ú"PolyRing.__new__.<locals>.<lambda>ó   s   € ¡2r6   c                ó   € R# rq   r2   )rr   rs   rX   s   &&&r4   rt   ru   ö   s   € ±"r6   c                ó   <€ \        V SR 7      # )©Úkey)Úmax)Úfr1   s   &€r4   rt   ru      s   ø€ ¬¨Q°EÕ):r6   r2   ©é    )4Útuplerk   ÚlenÚ	DomainOptÚ
preprocessÚOrderOptÚ__name__Úis_CompositeÚsetr   r"   ÚobjectÚ__new__Ú_hash_tupleÚhashÚ_hashrn   r<   r1   ÚPolyElementÚnewÚdtypeÚ
zero_monomÚ_gensr:   Ú	_gens_setÚoneÚ_oner   r   Úmonomial_mulÚpowÚmonomial_powÚmulpowÚmonomial_mulpowÚldivÚmonomial_ldivÚdivÚmonomial_divÚlcmÚmonomial_lcmÚgcdÚmonomial_gcdr   rz   Úleading_expvrL   r_   r   rB   ÚhasattrÚsetattr)Úclsr   r<   r1   rn   rˆ   ÚobjÚcodegenÚmonunitÚsymbolÚ	generatorrB   s   &&&f        r4   r‡   ÚPolyRing.__new__Í   s  ø€ Üœ wÓ/Ó0ˆÜ�G“ˆÜ×%Ò% fÓ-ˆÜ×#Ò# EÓ*ˆà—|‘| W°V¸UÐCˆà××Ð¤3 w£<´#°f·n±nÓ2E×#EÔ#EÜ!Ð"[Ó\Ð\ä�n‰n˜SÓ!ˆØ%ŒÜ˜Ó%ˆŒ	ØŒØŒ	ØŒ
ØˆŒ	ä  RÓ(×,Ñ,ˆŒ	à˜e�ˆŒØ—9‘9“;ˆŒÜ˜CŸH™H›ˆŒà—^‘^ V§Z¡ZÐ0Ð1ˆŒçä! %Ó(ˆGØ&Ÿ{™{›}ˆCÔØ&Ÿ{™{›}ˆCÔØ")§.¡.Ó"2ˆCÔØ '§¡£ˆCÔØ&Ÿ{™{›}ˆCÔØ&Ÿ{™{›}ˆCÔØ&Ÿ{™{›}ˆCÕá%ˆGØ&ÔØ&ÔÙ"4ˆCÔØ 'ÔØ&ÔØ&ÔØ&Ôð ”C‹<Ü"ˆCÕä:ˆCÔä!$ S§[¡[°#·(±(Ö!;ÑˆFÜ˜&¤&×)Ô)Ø—{‘{�ä˜s×)Ô)Ü˜C yÖ1ñ "<ð ˆ
r6   c                óä   € V P                   P                  p. p\        V P                  4       F5  pV P	                  V4      pV P
                  pWV&   VP                  V4       K7  	  \        V4      # )z(Return a list of polynomial generators. )r<   r‘   Úrangern   Úmonomial_basisÚzeroÚappendr~   )Úselfr‘   r�   ÚiÚexpvÚpolys   &     r4   r�   ÚPolyRing._gens  s_   € à�k‰k�o‰oˆØˆÜ�t—z‘zÖ"ˆAØ×&Ñ& qÓ)ˆDØ—9‘9ˆDØ�‰JØ�L‰L˜Öñ	 #ô
 �U‹|Ðr6   c                	óH   € V P                   V P                  V P                  3# r^   )r   r<   r1   ©r¯   s   &r4   Ú__getnewargs__ÚPolyRing.__getnewargs__  s   € Ø—‘˜dŸk™k¨4¯:©:Ð6Ð6r6   c                	óˆ   € V P                   P                  4       pVR  V F  pVP                  R4      '       g   K  W K   	  V# )r    Ú	monomial_)Ú__dict__ÚcopyÚ
startswith)r¯   Ústatery   s   &  r4   Ú__getstate__ÚPolyRing.__getstate__  sA   € Ø—‘×"Ñ"Ó$ˆØ�.Ð!ãˆCØ�~‰~˜k×*Ô*Ø’Jñ ð ˆr6   c                	ó   € V P                   # r^   )rŠ   rµ   s   &r4   Ú__hash__ÚPolyRing.__hash__#  s   € Ø�z‰zÐr6   c                	óì   € \        V\        4      ;'       d^    V P                  V P                  V P                  V P
                  3VP                  VP                  VP                  VP
                  38H  # r^   )r_   r9   r   r<   rn   r1   ©r¯   Úothers   &&r4   Ú__eq__ÚPolyRing.__eq__&  s\   € Ü˜%¤Ó*÷ Dð DØ�\‰\˜4Ÿ;™;¨¯
©
°D·J±JÐ?Ø�]‰]˜EŸL™L¨%¯+©+°u·{±{ÐCñDð	Dr6   c                	ó   € W8X  * # r^   r2   rÄ   s   &&r4   Ú__ne__ÚPolyRing.__ne__+  s   € ØÒ Ð r6   Nc                	óp   € Ve"   \        V\        4      '       d   \        V4      pV P                  WV4      # r^   )r_   rG   r~   Ú_clone©r¯   r   r<   r1   s   &&&&r4   ÚcloneÚPolyRing.clone.  s.   € àÒ¤:¨g´t×#<Ò#<Ü˜G“nˆGØ�{‰{˜7¨EÓ2Ð2r6   c                	ó    € T P                  T;'       g    V P                  T;'       g    V P                  T;'       g    V P                  4      # r^   )Ú	__class__r   r<   r1   rÍ   s   &&&&r4   rÌ   ÚPolyRing._clone4  s<   € à�~‰~˜g×5Ð5¨¯©°v×7LÐ7LÀÇÁÈe×NaÐNaÐW[×WaÑWaÓbÐbr6   c                óH   € ^ .V P                   ,          p^W!&   \        V4      # )zReturn the ith-basis element. )rn   r~   )r¯   r°   Úbasiss   && r4   r¬   ÚPolyRing.monomial_basis8  s"   € à��D—J‘J•ˆØˆ‰Ü�U‹|Ðr6   c                	ó$   € V P                  . 4      # r^   )r�   rµ   s   &r4   r­   ÚPolyRing.zero>  s   € à�z‰z˜"‹~Ðr6   c                	ó8   € V P                  V P                  4      # r^   )r�   r’   rµ   s   &r4   r‘   ÚPolyRing.oneB  s   € à�z‰z˜$Ÿ)™)Ó$Ð$r6   c                óP   € \        V\        4      ;'       d    VP                  V 8H  # )zATrue if ``element`` is an element of this ring. False otherwise. )r_   r‹   r>   ©r¯   Úelements   &&r4   Ú
is_elementÚPolyRing.is_elementF  s    € ä˜'¤;Ó/×HÐH°G·L±LÀDÑ4HÐHr6   c                	ó8   € V P                   P                  W4      # r^   )r<   Úconvert©r¯   rÜ   Úorig_domains   &&&r4   Ú
domain_newÚPolyRing.domain_newJ  s   € Ø�{‰{×"Ñ" 7Ó8Ð8r6   c                	ó:   € V P                  V P                  V4      # r^   )Úterm_newrŽ   )r¯   Úcoeffs   &&r4   Ú
ground_newÚPolyRing.ground_newM  s   € Ø�}‰}˜TŸ_™_¨eÓ4Ð4r6   c                	óX   € V P                  V4      pV P                  pV'       d   W#V&   V# r^   )rã   r­   )r¯   Úmonomrç   r²   s   &&& r4   ræ   ÚPolyRing.term_newP  s(   € Ø—‘ Ó&ˆØ�y‰yˆßØ�‰KØˆr6   c                	ó¨  € \        V\        4      '       dt   WP                  8X  d   V# \        V P                  \        4      '       d7   V P                  P                  VP                  8X  d   V P                  V4      # \        R 4      h\        V\        4      '       d   \        R4      h\        V\        4      '       d   V P                  V4      # \        V\        4      '       d    V P                  V4      # \        V\        4      '       d   V P                  V4      # V P                  V4      #   \         d    T P                  T4      u # i ; i)Ú
conversionÚparsing)r_   r‹   r>   r<   r   rè   ÚNotImplementedErrorr`   rK   rN   rG   Ú
from_termsÚ
ValueErrorÚ	from_listr   Ú	from_exprrÛ   s   &&r4   Úring_newÚPolyRing.ring_newW  s  € Ü�gœ{×+Ò+Ø—|‘|Ô#Ø�Ü˜DŸK™K¬×8Ò8¸T¿[¹[×=MÑ=MÐQX×Q]ÑQ]Ô=]Ø—‘ wÓ/Ð/ä)¨,Ó7Ð7Ü˜¤×%Ò%Ü% iÓ0Ð0Ü˜¤×&Ò&Ø—>‘> 'Ó*Ð*Ü˜¤×&Ò&ð/Ø—‘ wÓ/Ð/ô ˜¤×&Ò&Ø—>‘> 'Ó*Ð*à—?‘? 7Ó+Ð+øô ô /Ø—~‘~ gÓ.Ò.ð/ús   Ã)D2 Ä2EÅEc                	ó”   € V P                   pV P                  pVP                  4        F  w  rVV! Wb4      pV'       g   K  WdV&   K  	  V# r^   )rã   r­   rM   )r¯   rÜ   râ   rã   r²   rë   rç   s   &&&    r4   rN   ÚPolyRing.from_dicto  sC   € Ø—_‘_ˆ
Ø�y‰yˆà#ŸM™MžO‰LˆEÙ˜uÓ2ˆEß‰uØ#�U“ñ ,ð
 ˆr6   c                	ó8   € V P                  \        V4      V4      # r^   )rN   rK   rá   s   &&&r4   rñ   ÚPolyRing.from_termsz  s   € Ø�~‰~œd 7›m¨[Ó9Ð9r6   c                	ón   € V P                  \        WP                  ^,
          V P                  4      4      # ©é   )rN   r   rn   r<   rÛ   s   &&r4   ró   ÚPolyRing.from_list}  s$   € Ø�~‰~œk¨'·:±:¸aµ<ÀÇÁÓMÓNÐNr6   c                	óV   a aaa€ S P                   oVVVV 3R  loS! \        V4      4      # )c           	     óô  <€ SP                  V 4      pVe   V# V P                  '       d.   \        \        \	        \        SV P                  4      4      4      # V P                  '       d.   \        \        \	        \        SV P                  4      4      4      # V P                  4       w  r#VP                  '       d    V^8”  d   S! V4      \        V4      ,          # SP                  SP                  V 4      4      # r^   )ÚgetÚis_Addr	   r   rG   rH   ÚargsÚis_Mulr   Úas_base_expÚ
is_Integerrm   rè   rà   )Úexprr¨   ÚbaseÚexpÚ_rebuildr<   Úmappingr¯   s   &   €€€€r4   r
  Ú(PolyRing._rebuild_expr.<locals>._rebuildƒ  sµ   ø€ ØŸ™ DÓ)ˆIàÒ$Ø Ð Ø——�Üœc¤4¬¨H°d·i±iÓ(@Ó#AÓBÐBØ——�Üœc¤4¬¨H°d·i±iÓ(@Ó#AÓBÐBð !×,Ñ,Ó.‘	�Ø—>—>�> c¨A¤gÙ# D›>¬3¨s«8Õ3Ð3àŸ?™?¨6¯>©>¸$Ó+?Ó@Ð@r6   )r<   r   )r¯   r  r  r
  r<   s   f&f@@r4   Ú_rebuild_exprÚPolyRing._rebuild_expr€  s)   û€ Ø—‘ˆ÷	Að 	Añ$ œ ›Ó&Ð&r6   c                	óð   € \        \        \        V P                  V P                  4      4      4      p V P                  W4      pV P                  V4      #   \         d    \        R T : RT: 24      hi ; i)z6expected an expression convertible to a polynomial in z, got )	rK   rG   rL   r   r:   r  rõ   r!   rò   )r¯   r  r  r²   s   &&  r4   rô   ÚPolyRing.from_expr—  sk   € Ü”tœC §¡¨d¯i©iÓ8Ó9Ó:ˆð	'Ø×%Ñ% dÓ4ˆDð —=‘= Ó&Ð&øô ô 	pÝÓcgÒimÐnÓoÐoð	pús   ´A ÁA5c                óŒ  € Vf   V P                   '       d   ^ pV# Rp V# \        V\        4      '       dT   Tp^ V8:  d   W P                   8  d    V# V P                   ) V8:  d   VR8:  d   V) ^,
          pV# \        RV,          4      hV P	                  V4      '       d    V P
                  P                  V4      pV# \        V\        4      '       d    V P                  P                  V4      pV# \        RV,          4      h  \         d    \        RT,          4      hi ; i  \         d    \        RT,          4      hi ; i)z+Compute index of ``gen`` in ``self.gens``. zinvalid generator index: %szinvalid generator: %szEexpected a polynomial generator, an integer, a string or None, got %séÿÿÿÿ)	rn   r_   rm   rò   rÝ   r:   Úindexr`   r   )r¯   Úgenr°   s   && r4   r  ÚPolyRing.index¡  sK  € àŠ;Ø�z�zˆzØ�ð2 ˆð/ ‘ð. ˆô- ˜œS×!Ò!ØˆAà�AŒv˜!Ÿj™jœ.Øð$ ˆð# —*‘*� Ô! a¨2¤gØ�B˜•F�ð  ˆô !Ð!>ÀÕ!DÓEÐEØ�_‰_˜S×!Ò!ð@Ø—I‘I—O‘O CÓ(�ð ˆô ˜œS×!Ò!ð@Ø—L‘L×&Ñ& sÓ+�ð ˆô ÐdÐgjÕjÓkÐkøô ô @Ü Ð!8¸3Õ!>Ó?Ð?ð@ûô
 ô @Ü Ð!8¸3Õ!>Ó?Ð?ð@ús   Â!D ÃD% ÄD"Ä%Ec                óø   € \        \        V P                  V4      4      p\        V P                  4       UUu. uF  w  r4W29  g   K  VNK  	  pppV'       g   V P
                  # V P                  VR7      # u uppi )z,Remove specified generators from this ring. rj   )r…   rH   r  Ú	enumerater   r<   rÎ   )r¯   r:   Úindicesr°   rc   r   s   &*    r4   ÚdropÚPolyRing.dropÀ  sc   € ä”c˜$Ÿ*™* dÓ+Ó,ˆÜ"+¨D¯L©LÔ"9ÔOÑ"9™$˜!¸QÑ=M—A�AÑ"9ˆÑOçØ—;‘;Ðà—:‘: g�:Ó.Ð.ùó Ps   ¸
A6ÁA6c                	ót   € V P                   V,          pV'       g   V P                  # V P                  VR 7      # )rj   )r   r<   rÎ   )r¯   ry   r   s   && r4   Ú__getitem__ÚPolyRing.__getitem__Ê  s.   € Ø—,‘,˜sÕ#ˆçØ—;‘;Ðà—:‘: g�:Ó.Ð.r6   c                	óö   € V P                   P                  '       g   \        V P                   R 4      '       d'   V P                  V P                   P                   R7      # \	        RV P                   ,          4      h)r<   ©r<   z%s is not a composite domain)r<   r„   r¡   rÎ   rò   rµ   s   &r4   Ú	to_groundÚPolyRing.to_groundÒ  sR   € à�;‰;×#×#Ð#¤w¨t¯{©{¸H×'EÒ'EØ—:‘: T§[¡[×%7Ñ%7�:Ó8Ð8äÐ;¸d¿k¹kÕIÓJÐJr6   c                	ó   € \        V 4      # r^   r   rµ   s   &r4   Ú	to_domainÚPolyRing.to_domainÙ  s   € Ü˜dÓ#Ð#r6   c                	ó^   € ^ RI Hp V! V P                  V P                  V P                  4      # )r}   )Ú	FracField)Úsympy.polys.fieldsr&  r   r<   r1   )r¯   r&  s   & r4   Úto_fieldÚPolyRing.to_fieldÜ  s    € Ý0Ù˜Ÿ™ t§{¡{°D·J±JÓ?Ð?r6   c                	ó2   € \        V P                  4      ^8H  # rü   ©r   r:   rµ   s   &r4   Úis_univariateÚPolyRing.is_univariateà  s   € ä�4—9‘9‹~ Ñ"Ð"r6   c                	ó2   € \        V P                  4      ^8„  # rü   r+  rµ   s   &r4   Úis_multivariateÚPolyRing.is_multivariateä  s   € ä�4—9‘9‹~ Ñ!Ð!r6   c                óž   € V P                   pV F:  p\        V\        R7      '       d   W P                  ! V!  ,          pK2  W#,          pK<  	  V# )a  
Add a sequence of polynomials or containers of polynomials.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> R, x = ring("x", ZZ)
>>> R.add([ x**2 + 2*i + 3 for i in range(4) ])
4*x**2 + 24
>>> _.factor_list()
(4, [(x**2 + 6, 1)])

©Úinclude)r­   r-   r
   r   ©r¯   ÚobjsÚpr¤   s   &*  r4   r   ÚPolyRing.addè  sB   € ð" �I‰IˆãˆCÜ˜3¬×6Ó6Ø—X’X˜s‘^Õ#’à•’ñ	 ð ˆr6   c                óž   € V P                   pV F:  p\        V\        R7      '       d   W P                  ! V!  ,          pK2  W#,          pK<  	  V# )ap  
Multiply a sequence of polynomials or containers of polynomials.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> R, x = ring("x", ZZ)
>>> R.mul([ x**2 + 2*i + 3 for i in range(4) ])
x**8 + 24*x**6 + 206*x**4 + 744*x**2 + 945
>>> _.factor_list()
(1, [(x**2 + 3, 1), (x**2 + 5, 1), (x**2 + 7, 1), (x**2 + 9, 1)])

r2  )r‘   r-   r
   r   r4  s   &*  r4   r   ÚPolyRing.mul  sB   € ð" �H‰HˆãˆCÜ˜3¬×6Ó6Ø—X’X˜s‘^Õ#’à•’ñ	 ð ˆr6   c                ól  € \        \        V P                  V4      4      p\        V P                  4       UUu. uF  w  r4W29  g   K  VNK  	  ppp\        V P
                  4       UUu. uF  w  r6W29  g   K  VNK  	  pppV'       g   V # V P                  WPP                  ! V!  R7      # u uppi u uppi )zL
Remove specified generators from the ring and inject them into
its domain.
©r   r<   )r…   rH   r  r  r   r:   rÎ   r  )r¯   r:   r  r°   rc   r   r  s   &*     r4   Údrop_to_groundÚPolyRing.drop_to_ground  s”   € ô
 ”c˜$Ÿ*™* dÓ+Ó,ˆÜ!*¨4¯<©<Ô!8ÔMÑ!8™˜¸AÑ<L—1�1Ñ!8ˆÑMÜ"+¨D¯I©IÔ"6ÔKÑ"6™˜¸!Ñ:J—�Ñ"6ˆÑKçØˆKà—:‘: g·i²iÀÑ6F�:ÓGÐGùó NùÛKs   ¸
B*ÁB*Á(
B0Á7B0c                ó¶   € W8w  dS   \        V P                  4      P                  \        VP                  4      4      pV P                  \	        V4      R7      # V # )z+Add the generators of ``other`` to ``self``rj   ©r…   r   ÚunionrÎ   rG   )r¯   rÅ   Úsymss   && r4   ÚcomposeÚPolyRing.compose,  sC   € àŒ=Ü�t—|‘|Ó$×*Ñ*¬3¨u¯}©}Ó+=Ó>ˆDØ—:‘:¤d¨4£j�:Ó1Ð1àˆKr6   c                ó’   € \        V P                  4      P                  \        V4      4      pV P                  \	        V4      R7      # )z9Add the elements of ``symbols`` as generators to ``self``rj   r?  )r¯   r   rA  s   && r4   Úadd_gensÚPolyRing.add_gens4  s4   € ä�4—<‘<Ó ×&Ñ&¤s¨7£|Ó4ˆØ�z‰z¤$ t£*ˆzÓ-Ð-r6   c                ó  a€ V^ 8  g   WP                   8”  d   \        RV: RV P                  : 24      hV'       g   V P                  # V P                  p\        \        V P                   4      \        V4      4       F†  o\        ;QJ d*    . V3R l\        V P                   4       4       F  NK  	  5M#! V3R l\        V P                   4       4       4      pW P                  W0P                  P                  4      ,          pKˆ  	  V# )zW
Return the elementary symmetric polynomial of degree *n* over
this ring's generators.
z.Cannot generate symmetric polynomial of order z for c              3  ó@   <"  € T F  p\        VS9   4      x € K  	  R # 5ir^   )rm   )rb   r°   rc   s   & €r4   rd   Ú*PolyRing.symmetric_poly.<locals>.<genexpr>E  s   øé € ÐEÑ3D¨aœc ! q¡&Ÿk˜kÓ3Dùs   ƒ)rn   rò   r:   r‘   r­   r,   r«   rm   r~   ræ   r<   )r¯   Únr²   rë   rc   s   &&  @r4   Úsymmetric_polyÚPolyRing.symmetric_poly9  s¯   ø€ ð
 ˆqŒ5�AŸ
™
”NÝÓZ[Ð]a×]fÓ]fÐgÓhÐhßØ—8‘8ˆOà—9‘9ˆDÜœU 4§:¡:Ó.´°A³Ö7�ßœÔE´5¸¿¹Ô3DÓEŸ™ÔE´5¸¿¹Ô3DÓEÓE�ØŸ™ e¯[©[¯_©_Ó=Õ=’ñ 8ð ˆKr6   r2   )NNNr^   )/rƒ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   r‡   r�   r¶   r¾   rÁ   rÆ   rÉ   rÎ   r   rÌ   r¬   Úpropertyr­   r‘   rÝ   rã   rè   ræ   rõ   Ú__call__rN   rñ   ró   r  rô   r  r  r  r   r#  r(  r,  r/  r   r   r<  rB  rE  rK  Ú__static_attributes__r2   r6   r4   r9   r9   Ä   s3  ‡ Ù4à
!Ó!ØÓØƒJØƒNØÓà,/ô <ò|	ò7òòòDò
!ô3ð ñcó ðcòð ñó ðð ñ%ó ð%òIô9ò5òò,ð, €Hô	ô:òOò'ò.'òò>/ò/òKò$ò@ð ñ#ó ð#ð ñ"ó ð"òò6ò6Hòò.ö
r6   r9   c                  ó¤  a € ] tR tRtRtV 3R ltR tR tR tR t	Rt
R	 tR
 tR tR tR tR tR tR tR tR˜R ltR tR tR tR tR tR tR tR tR tR tR tR t R t!]"R  4       t#]"R! 4       t$]"R" 4       t%]"R# 4       t&]"R$ 4       t']"R% 4       t(]"R& 4       t)]"R' 4       t*]"R( 4       t+]"R) 4       t,]"R* 4       t-]"R+ 4       t.]"R, 4       t/]"R- 4       t0]"R. 4       t1]"R/ 4       t2]"R0 4       t3R1 t4R2 t5R3 t6R4 t7R5 t8R6 t9R7 t:R8 t;R9 t<R: t=R; t>R< t?R= t@R> tAR? tBR@ tCRA tDRB tERC tFRD tGRE tHRF tIRG tJRH tKRI tLRJ tMRK tNR˜RL ltORM tPR˜RN ltQRO tRRP tSRQ tTRR tURS tV]"RT 4       tW]"RU 4       tXRV tY]"RW 4       tZRX t[RY t\R˜RZ lt]R˜R[ lt^R˜R\ lt_R] t`R^ taR_ tbR` tcRa tdRb teRc tfRd tgRe thRf tiRg tjRh tkRi tlRj tmRk tnRl to]otpRm tqRn trRo tsRp ttRq tuRr tvRs twRt txRu tyRv tzRw t{Rx t|Ry t}Rz t~R{ tR| t€R} t�R~ t‚R˜R ltƒR˜R€ lt„R� t…R˜R‚ lt†Rƒ t‡R˜R„ ltˆR˜R… lt‰R˜R† ltŠR˜R‡ lt‹R˜Rˆ ltŒR‰ t�RŠ tŽR‹ t�RŒ t�R� t‘RŽ t’R� t“R� t”R‘ t•R’ t–R“ t—R” t˜R™R• lt™R– tšR—t›V ;tœ# )šr‹   iJ  z5Element of multivariate distributed polynomial ring. c                	ó2   <€ \         SV `  V4       Wn        R # r^   )ÚsuperÚ__init__r>   )r¯   r>   ÚinitrÑ   s   &&&€r4   rX  ÚPolyElement.__init__M  s   ø€ Ü‰Ñ˜ÔØŽ	r6   c                	óþ  € \        V \        4      '       g   Q h\        V P                  \        4      '       g   Q hV P                  P                  p\        V\
        4      '       g   Q hV P                  4        F€  w  r#VP                  V4      '       g   Q h\        V4      V P                  P                  8X  g   Q h\        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       d   K€  Q h	  R# )c              3  ó\   "  € T F"  p\        V\        4      ;'       d    V^ 8¬  x € K$  	  R# 5i)r}   N)r_   rm   )rb   r	  s   & r4   rd   Ú%PolyElement._check.<locals>.<genexpr>[  s&   é € ÐJÁE¸S”z #¤sÓ+×8Ð8°°q±Ô8ÃEùs   ‚,ž,FTN)r_   r‹   r>   r9   r<   r   rM   Úof_typer   rn   ri   )r¯   Údomrë   rç   s   &   r4   Ú_checkÚPolyElement._checkS  s¶   € Ü˜$¤×,Ò,Ð,Ð,Ü˜$Ÿ)™)¤X×.Ò.Ð.Ð.Ø�i‰i×ÑˆÜ˜#œv×&Ò&Ð&Ð&Ø ŸJ™JžL‰LˆEØ—;‘;˜u×%Ò%Ð%Ð%Ü�u“: §¡§¡Ô0Ð0Ð0ß“3ÑJÁEÓJ—3—3’3ÑJÁEÓJ×JÔJÐJÐJó )r6   c                	ó:   € V P                  V P                  V4      # r^   )rÑ   r>   )r¯   rY  s   &&r4   rŒ   ÚPolyElement.new]  s   € Ø�~‰~˜dŸi™i¨Ó.Ð.r6   c                	ó6   € V P                   P                  4       # r^   )r>   r#  rµ   s   &r4   ÚparentÚPolyElement.parent`  s   € Ø�y‰y×"Ñ"Ó$Ð$r6   c                	óL   € V P                   \        V P                  4       4      3# r^   )r>   rG   Ú	itertermsrµ   s   &r4   r¶   ÚPolyElement.__getnewargs__c  s   € Ø—	‘	œ4 §¡Ó 0Ó1Ð2Ð2r6   Nc                	ó�   € V P                   pVf6   \        V P                  \        V P	                  4       4      34      ;V n         pV# r^   )rŠ   r‰   r>   Ú	frozensetrM   )r¯   rŠ   s   & r4   rÁ   ÚPolyElement.__hash__h  s<   € ð —
‘
ˆØŠ=Ü!% t§y¡y´)¸D¿J¹J»LÓ2IÐ&JÓ!KÐKˆDŒJ˜Øˆr6   c                ó$   € V P                  V 4      # )aø  Return a copy of polynomial self.

Polynomials are mutable; if one is interested in preserving
a polynomial, and one plans to use inplace operations, one
can copy the polynomial. This method makes a shallow copy.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.rings import ring

>>> R, x, y = ring('x, y', ZZ)
>>> p = (x + y)**2
>>> p1 = p.copy()
>>> p2 = p
>>> p[R.zero_monom] = 3
>>> p
x**2 + 2*x*y + y**2 + 3
>>> p1
x**2 + 2*x*y + y**2
>>> p2
x**2 + 2*x*y + y**2 + 3

)rŒ   rµ   s   &r4   r»   ÚPolyElement.copys  s   € ð4 �x‰x˜‹~Ðr6   c           	     	óz  € V P                   V8X  d   V # V P                   P                  VP                  8w  d`   \        \        \	        W P                   P                  VP                  4      !  4      pVP                  W P                   P                  4      # VP                  W P                   P                  4      # r^   )r>   r   rG   rL   r(   rñ   r<   rN   )r¯   Únew_ringÚtermss   && r4   Úset_ringÚPolyElement.set_ring�  s‡   € Ø�9‰9˜Ô ØˆKØ�Y‰Y×Ñ (×"2Ñ"2Ô2Üœœm¨D·)±)×2CÑ2CÀX×EUÑEUÓVÑWÓXˆEØ×&Ñ& u¯i©i×.>Ñ.>Ó?Ð?à×%Ñ% d¯I©I×,<Ñ,<Ó=Ð=r6   c                	ó  € V'       g   V P                   P                  pMT\        V4      V P                   P                  8w  d1   \	        R V P                   P                  : R\        V4      : 24      h\        V P                  4       .VO5!  # )z"Wrong number of symbols, expected z got )r>   r   r   rn   rò   r'   Úas_expr_dict)r¯   r   s   &*r4   Úas_exprÚPolyElement.as_expr˜  sf   € ßØ—i‘i×'Ñ'‰GÜ�‹\˜TŸY™YŸ_™_Ô,Ýà—‘—”¤# g¥,ð0óð ô
 ˜d×/Ñ/Ó1Ð<°GÓ<Ð<r6   c                	ó¢   € V P                   P                  P                  pV P                  4        UUu/ uF  w  r#W!! V4      bK  	  upp# u uppi r^   )r>   r<   Úto_sympyrh  )r¯   ry  rë   rç   s   &   r4   ru  ÚPolyElement.as_expr_dict£  sC   € Ø—9‘9×#Ñ#×,Ñ,ˆØ;?¿>¹>Ô;KÔLÑ;K©<¨5��x “Ò&Ñ;KÒLÐLùÓLs   ´Ac           	     	óÌ  € V P                   P                  pVP                  '       d   VP                  '       g   VP                  V 3# VP                  4       pVP                  pVP                  pVP                  pV P                  4        F  pV! W5! V4      4      pK  	  T P                  V P                  4        UUu. uF  w  rxWxV,          3NK  	  upp4      p	W93# u uppi r^   )r>   r<   Úis_FieldÚhas_assoc_Ringr‘   Úget_ringrœ   ÚdenomrJ   rŒ   rM   )
r¯   r<   Úground_ringÚcommonrœ   r  rç   ÚkÚvr²   s
   &         r4   Úclear_denomsÚPolyElement.clear_denoms§  s¶   € Ø—‘×!Ñ!ˆà��ˆ f×&;×&;Ð&;Ø—:‘:˜tÐ#Ð#à—o‘oÓ'ˆØ—‘ˆØ�o‰oˆØ—‘ˆà—[‘[–]ˆEÙ˜  u£Ó.ŠFñ #ð �x‰x°D·J±J´LÔB±L©D¨A˜1 �h›-±LÒBÓCˆØˆ|Ðùó Cs   Ã C 
c                ób   € \        V P                  4       4       F  w  rV'       d   K  W K  	  R# )z+Eliminate monomials with zero coefficient. N©rG   rM   )r¯   r‚  rƒ  s   &  r4   Ú
strip_zeroÚPolyElement.strip_zero¸  s#   € ä˜Ÿ™›Ö&‰DˆAß‘1Ø’Gó 'r6   c                ó   € V'       g   V '       * # V P                   P                  V4      '       d   \        P                  W4      # \	        V 4      ^8”  d   R# V P                  V P                   P                  4      V8H  # )zøEquality test for polynomials.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.rings import ring

>>> _, x, y = ring('x, y', ZZ)
>>> p1 = (x + y)**2 + (x - y)**2
>>> p1 == 4*x*y
False
>>> p1 == 2*(x**2 + y**2)
True

F)r>   rÝ   rK   rÆ   r   r  rŽ   ©Úp1Úp2s   &&r4   rÆ   ÚPolyElement.__eq__¾  s^   € ÷" Ø”6ˆMØ�W‰W×Ñ ×#Ò#Ü—;‘;˜rÓ&Ð&Ü�‹W�qŒ[Ùà—6‘6˜"Ÿ'™'×,Ñ,Ó-°Ñ3Ð3r6   c                	ó   € W8X  * # r^   r2   r‹  s   &&r4   rÉ   ÚPolyElement.__ne__Ø  s
   € ØŠ|Ðr6   c                ó&  € V P                   pVP                  V4      '       d†   \        V P                  4       4      \        VP                  4       4      8w  d   R# VP                  P
                  pV P                  4        F"  pV! W,          W,          V4      '       d   K!   R# 	  R# \        V 4      ^8”  d   R#  VP                  P                  V4      pVP                  P                  V P                  4       W4      #   \         d     R# i ; i)z+Approximate equality test for polynomials. FT)
r>   rÝ   r…   Úkeysr<   Úalmosteqr   rà   Úconstr!   )rŒ  r�  Ú	tolerancer>   r“  r‚  s   &&&   r4   r“  ÚPolyElement.almosteqÛ  sÎ   € à�w‰wˆà�?‰?˜2×ÒÜ�2—7‘7“9‹~¤ R§W¡W£Y£Ô/Ùà—{‘{×+Ñ+ˆHà—W‘W–Y�Ù ¥ r¥u¨i×8Ô8Ú ñ ñ Ü�‹W�qŒ[ÙðGØ—[‘[×(Ñ(¨Ó,�ð —{‘{×+Ñ+¨B¯H©H«J¸ÓFÐFøô "ô Úðús   Â<D ÄDÄDc                	ó8   € \        V 4      V P                  4       3# r^   )r   rq  rµ   s   &r4   Úsort_keyÚPolyElement.sort_keyó  s   € Ü�D“	˜4Ÿ:™:›<Ð(Ð(r6   c                	óš   € V P                   P                  V4      '       d&   V! V P                  4       VP                  4       4      # \        # r^   )r>   rÝ   r˜  ÚNotImplemented)rŒ  r�  Úops   &&&r4   Ú_cmpÚPolyElement._cmpö  s6   € Ø�7‰7×Ñ˜b×!Ò!Ù�b—k‘k“m R§[¡[£]Ó3Ð3ä!Ð!r6   c                	ó.   € V P                  V\        4      # r^   )r�  r   r‹  s   &&r4   Ú__lt__ÚPolyElement.__lt__ü  ó   € Ø�w‰w�rœ2‹Ðr6   c                	ó.   € V P                  V\        4      # r^   )r�  r   r‹  s   &&r4   Ú__le__ÚPolyElement.__le__þ  r¢  r6   c                	ó.   € V P                  V\        4      # r^   )r�  r   r‹  s   &&r4   Ú__gt__ÚPolyElement.__gt__   r¢  r6   c                	ó.   € V P                  V\        4      # r^   )r�  r   r‹  s   &&r4   Ú__ge__ÚPolyElement.__ge__  r¢  r6   c                	óÌ   € V P                   pVP                  V4      pVP                  ^8X  d   W2P                  3# \	        VP
                  4      pWC W2P                  VR7      3# )rý   rj   )r>   r  rn   r<   rG   r   rÎ   ©r¯   r  r>   r°   r   s   &&   r4   Ú_dropÚPolyElement._drop  sV   € Ø�y‰yˆØ�J‰J�s‹Oˆà�:‰:˜Œ?Ø—k‘k�>Ð!ä˜4Ÿ<™<Ó(ˆGØ�
Ø—j‘j¨�jÓ1Ð1Ð1r6   c                	óˆ  € V P                  V4      w  r#V P                  P                  ^8X  d6   V P                  '       d   V P	                  ^4      # \        RV,          4      hVP                  pV P                  4        F>  w  rVWR,          ^ 8X  d   \        V4      pWr Wd\        V4      &   K.  \        RV,          4      h	  V# )rý   zCannot drop %s)
r®  r>   rn   Ú	is_groundrç   rò   r­   rM   rG   r~   )r¯   r  r°   r>   r²   r‚  rƒ  ÚKs   &&      r4   r  ÚPolyElement.drop  sž   € Ø—*‘*˜S“/‰ˆà�9‰9�?‰?˜aÔØ�~�~ˆ~Ø—z‘z !“}Ð$ä Ð!1°CÕ!7Ó8Ð8à—9‘9ˆDàŸ
™
ž‘�Ø•4˜1”9Ü˜Q›�AØ˜Ø%&œ˜q›“Nä$Ð%5¸Õ%;Ó<Ð<ñ %ð ˆKr6   c                	óž   € V P                   pVP                  V4      p\        VP                  4      pWC W2P	                  WBV,          R 7      3# )r;  )r>   r  rG   r   rÎ   r­  s   &&   r4   Ú_drop_to_groundÚPolyElement._drop_to_ground%  sC   € Ø�y‰yˆØ�J‰J�s‹Oˆä�t—|‘|Ó$ˆØˆJØ—*‘* W¸!µW�*Ó=Ð=Ð=r6   c                	óÖ  € V P                   P                  ^8X  d   \        R4      hV P                  V4      w  r#VP                  pVP
                  P                  ^ ,          pV P                  4        Fr  w  rVVRV WR^,           R ,           pWt9  d#   WV,          ,          P                  V4      WG&   KB  WG;;,          WV,          ,          P                  V4      ,          uu&   Kt  	  V# )rý   z$Cannot drop only generator to groundN)	r>   rn   rò   rµ  r­   r<   r:   rh  Ú
mul_ground)r¯   r  r°   r>   r²   rë   rç   Úmons   &&      r4   r<  ÚPolyElement.drop_to_ground-  s¹   € Ø�9‰9�?‰?˜aÔÜÐCÓDÐDà×&Ñ& sÓ+‰ˆØ�y‰yˆØ�k‰k×Ñ˜qÕ!ˆà ŸN™NÖ,‰LˆEØ˜˜�)˜e a¥C D˜kÕ)ˆCØŒØ ¨¥(�]×6Ñ6°uÓ=�“	à—	˜c¨¥8�m×7Ñ7¸Ó>Õ>•	ñ -ð ˆr6   c                	óx   € \        W P                  P                  ^,
          V P                  P                  4      # rü   )r   r>   rn   r<   rµ   s   &r4   Úto_denseÚPolyElement.to_dense>  s&   € Ü˜T§9¡9§?¡?°1Õ#4°d·i±i×6FÑ6FÓGÐGr6   c                	ó   € \        V 4      # r^   )rK   rµ   s   &r4   Úto_dictÚPolyElement.to_dictA  s   € Ü�D‹zÐr6   c                	óô  € V '       g0   VP                  V P                  P                  P                  4      # VR ,          pVR,          pV P                  pVP                  pVP
                  p	VP                  p
. pV P                  4        EF   w  rÍVP                  P                  V4      pV'       d   RMRpVP                  V4       WÊ8X  d;   VP                  V4      pV'       d!   VP                  R4      '       d
   VR,          pMEV'       d   V) pWÐP                  P                  P                  8w  d   VP                  WÕRR7      pMRp. p\        V	4       Fš  pVV,          pV'       g   K  VP                  VV,          VRR7      pV^8w  dK   V\        V4      8w  g   V^ 8  d   VP                  VVR	R7      pMTpVP                  VVV3,          4       K‚  VP                  R
V,          4       Kœ  	  V'       d   V.V,           pVP                  VP                  V4      4       EK£  	  V^ ,          R9   d+   VP!                  ^ 4      pVR8X  d   VP#                  ^ R4       RP                  V4      # )ÚMulÚAtomú - ú + Ú-ºrý   NNT)ÚstrictÚ Fz%s)rÅ  rÄ  )Ú_printr>   r<   r­   r   rn   rŽ   rq  Úis_negativer®   r¼   r‘   Úparenthesizer«   rm   ÚjoinÚpopÚinsert)r¯   ÚprinterÚ
precedenceÚexp_patternÚ
mul_symbolÚprec_mulÚ	prec_atomr>   r   rn   ÚzmÚsexpvsr±   rç   ÚnegativeÚsignÚscoeffÚsexpvr°   r	  r§   ÚsexpÚheads   &&&&&                  r4   r`   ÚPolyElement.strD  s  € ßØ—>‘> $§)¡)×"2Ñ"2×"7Ñ"7Ó8Ð8Ø˜eÕ$ˆØ˜vÕ&ˆ	Ø�y‰yˆØ—,‘,ˆØ—
‘
ˆØ�_‰_ˆØˆØŸ:™:Ÿ<‰KˆDØ—{‘{×.Ñ.¨uÓ5ˆHß$‘5¨%ˆDØ�M‰M˜$ÔØŒzØ Ÿ™¨Ó.�ß × 1Ñ 1°#× 6Ò 6Ø# B�Z�FøçØ"˜F�EØŸI™I×,Ñ,×0Ñ0Ô0Ø$×1Ñ1°%È$Ð1ÓO‘Fà�FØˆEÜ˜5–\�Ø˜1•g�ßÙØ ×-Ñ-¨g°a­j¸)ÈDÐ-ÓQ�Ø˜!”8Øœc #›h”¨#°¬'Ø&×3Ñ3°C¸È5Ð3ÓQ™à"˜Ø—L‘L °¸¨~Õ!=Ö>à—L‘L ¨¥Ö/ñ "÷ Ø˜ 5Õ(�Ø�M‰M˜*Ÿ/™/¨%Ó0×1ñ? (ð@ �!�9˜Ô&Ø—:‘:˜a“=ˆDØ�uŒ}Ø—‘˜a Ô%Ø�w‰w�v‹Ðr6   c                	ó2   € W P                   P                  9   # r^   )r>   r�   rµ   s   &r4   Úis_generatorÚPolyElement.is_generatort  s   € à—y‘y×*Ñ*Ñ*Ð*r6   c                	ó~   € V '       * ;'       g0    \        V 4      ^8H  ;'       d    V P                  P                  V 9   # rü   )r   r>   rŽ   rµ   s   &r4   r±  ÚPolyElement.is_groundx  s1   € àŒx×LÐLœC ›I¨™N×KÐK¨t¯y©y×/CÑ/CÀtÑ/KÐLr6   c                	ój   € V '       * ;'       g&    \        V 4      ^8H  ;'       d    V P                  ^8H  # rü   )r   ÚLCrµ   s   &r4   Úis_monomialÚPolyElement.is_monomial|  s*   € àŒx×<Ð<œC ›I¨™N×;Ð;¨t¯w©w¸!©|Ð<r6   c                	ó   € \        V 4      ^8*  # rü   )r   rµ   s   &r4   Úis_termÚPolyElement.is_term€  s   € ä�4‹y˜A‰~Ðr6   c                	ó`   € V P                   P                  P                  V P                  4      # r^   )r>   r<   rË  rå  rµ   s   &r4   rË  ÚPolyElement.is_negative„  ó!   € à�y‰y×Ñ×+Ñ+¨D¯G©GÓ4Ð4r6   c                	ó`   € V P                   P                  P                  V P                  4      # r^   )r>   r<   Úis_positiverå  rµ   s   &r4   rï  ÚPolyElement.is_positiveˆ  rí  r6   c                	ó`   € V P                   P                  P                  V P                  4      # r^   )r>   r<   Úis_nonnegativerå  rµ   s   &r4   rò  ÚPolyElement.is_nonnegativeŒ  ó!   € à�y‰y×Ñ×.Ñ.¨t¯w©wÓ7Ð7r6   c                	ó`   € V P                   P                  P                  V P                  4      # r^   )r>   r<   Úis_nonpositiverå  rµ   s   &r4   rö  ÚPolyElement.is_nonpositive�  rô  r6   c                	ó   € V '       * # r^   r2   ©r{   s   &r4   Úis_zeroÚPolyElement.is_zero”  s	   € àŒuˆr6   c                	ó2   € W P                   P                  8H  # r^   )r>   r‘   rù  s   &r4   Úis_oneÚPolyElement.is_one˜  s   € à—F‘F—J‘J‰Ðr6   c                	ó`   € V P                   P                  P                  V P                  4      # r^   )r>   r<   rý  rå  rù  s   &r4   Úis_monicÚPolyElement.is_monicœ  s   € à�v‰v�}‰}×#Ñ# A§D¡DÓ)Ð)r6   c                	óh   € V P                   P                  P                  V P                  4       4      # r^   )r>   r<   rý  Úcontentrù  s   &r4   Úis_primitiveÚPolyElement.is_primitive   s!   € à�v‰v�}‰}×#Ñ# A§I¡I£KÓ0Ð0r6   c                	ó¢   € \         ;QJ d*    R  V P                  4        4       F  '       d   K   R# 	  R# ! R  V P                  4        4       4      # )c              3  ó>   "  € T F  p\        V4      ^8*  x € K  	  R# 5i©rý   N©rI   ©rb   rë   s   & r4   rd   Ú(PolyElement.is_linear.<locals>.<genexpr>¦  ó   é € Ð?± u”3�u“: –?³ùó   ‚FT©ri   Ú
itermonomsrù  s   &r4   Ú	is_linearÚPolyElement.is_linear¤  ó7   € ç‹sÑ?°·±´Ó?�sŒsÐ?ŠsÐ?ˆsÑ?°·±´Ó?Ó?Ð?r6   c                	ó¢   € \         ;QJ d*    R  V P                  4        4       F  '       d   K   R# 	  R# ! R  V P                  4        4       4      # )c              3  ó>   "  € T F  p\        V4      ^8*  x € K  	  R# 5i)r0   Nr	  r
  s   & r4   rd   Ú+PolyElement.is_quadratic.<locals>.<genexpr>ª  r  r  FTr  rù  s   &r4   Úis_quadraticÚPolyElement.is_quadratic¨  r  r6   c                	ót   € V P                   P                  '       g   R # V P                   P                  V 4      # ©T)r>   rn   Ú	dmp_sqf_prù  s   &r4   Úis_squarefreeÚPolyElement.is_squarefree¬  s'   € à�v‰v�|�|ˆ|ÙØ�v‰v×Ñ Ó"Ð"r6   c                	ót   € V P                   P                  '       g   R # V P                   P                  V 4      # r  )r>   rn   Údmp_irreducible_prù  s   &r4   Úis_irreducibleÚPolyElement.is_irreducible²  s'   € à�v‰v�|�|ˆ|ÙØ�v‰v×'Ñ'¨Ó*Ð*r6   c                	ó†   € V P                   P                  '       d   V P                   P                  V 4      # \        R 4      h)zcyclotomic polynomial)r>   r,  Údup_cyclotomic_pr$   rù  s   &r4   Úis_cyclotomicÚPolyElement.is_cyclotomic¸  s3   € à�6‰6××ÐØ—6‘6×*Ñ*¨1Ó-Ð-ä-Ð.EÓFÐFr6   c                	óx   € T P                  V P                  4        UUu. uF	  w  rW) 3NK  	  upp4      # u uppi r^   )rŒ   rh  )r¯   rë   rç   s   &  r4   Ú__neg__ÚPolyElement.__neg__¿  s2   € Ø�x‰x¸d¿n¹nÔ>NÔPÑ>N©l¨e˜5 &›/Ñ>NÒPÓQÐQùÓPs   Ÿ6
c                	ó   € V # r^   r2   rµ   s   &r4   Ú__pos__ÚPolyElement.__pos__Â  s   € Øˆr6   c                óö  € V'       g   V P                  4       # V P                  pVP                  V4      '       dm   V P                  4       pVP                  pVP                  P
                  pVP                  4        F$  w  rgV! We4      V,           pV'       d   WsV&   K"  W6 K&  	  V# \        V\        4      '       d­   \        VP                  \        4      '       d'   VP                  P                  VP                  8X  d   Mf\        VP                  P                  \        4      '       d7   VP                  P                  P                  V8X  d   VP                  V 4      # \        #  VP                  V4      pV P                  4       pV'       g   V# VP                  p	W�P                  4       9  d   WƒV	&   V# WV	,          ) 8X  d   W9 V# W9;;,          V,          uu&   V#   \         d
    \        u # i ; i)zÄAdd two polynomials.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.rings import ring

>>> _, x, y = ring('x, y', ZZ)
>>> (x + y)**2 + (x - y)**2
2*x**2 + 2*y**2

)r»   r>   rÝ   r  r<   r­   rM   r_   r‹   r   Ú__radd__r›  rã   rŽ   r’  r!   )
rŒ  r�  r>   r6  r  r­   r‚  rƒ  Úcp2rÖ  s
   &&        r4   Ú__add__ÚPolyElement.__add__Å  s†  € ÷ Ø—7‘7“9ÐØ�w‰wˆØ�?‰?˜2×ÒØ—‘“	ˆAØ—%‘%ˆCØ—;‘;×#Ñ#ˆDØŸ™ž
‘�Ù˜“L 1Õ$�ßØ�a“Dàšñ #ð ˆHÜ˜œK×(Ò(Ü˜$Ÿ+™+¤~×6Ò6¸4¿;¹;×;KÑ;KÈrÏwÉwÔ;VØÜ˜BŸG™GŸN™N¬N×;Ò;ÀÇÁÇÁ×@SÑ@SÐW[Ô@[Ø—{‘{ 2“Ð&ä%Ð%ð	Ø—/‘/ "Ó%ˆCð —‘“	ˆAßØ�Ø—‘ˆBØŸ™›Ô"Ø�"‘ð ˆHð	 ˜B�%˜”<Ø˜ð ˆHð —E˜S•L“EØˆHøô ô 	"Ü!Ò!ð	"ús   Å+G$ Ç$G8Ç7G8c                	ó<  € V P                  4       pV'       g   V# V P                  p VP                  V4      pVP                  pW@P	                  4       9  d   WV&   V# WV,          ) 8X  d   W$ V# W$;;,          V,          uu&   V#   \
         d
    \        u # i ; ir^   )r»   r>   rã   rŽ   r’  r!   r›  )rŒ  rJ  r6  r>   rÖ  s   &&   r4   r,  ÚPolyElement.__radd__û  s˜   € Ø�G‰G‹IˆßØˆHØ�w‰wˆð	Ø—‘ Ó"ˆAð —‘ˆBØŸ™›Ô"Ø�"‘ð ˆHð	 ˜2�˜”;Ø˜ð ˆHð —E˜Q•J“EØˆHøô ô 	"Ü!Ò!ð	"ús   ¨B ÂBÂBc                óâ  € V'       g   V P                  4       # V P                  pVP                  V4      '       dm   V P                  4       pVP                  pVP                  P
                  pVP                  4        F$  w  rgV! We4      V,
          pV'       d   WsV&   K"  W6 K&  	  V# \        V\        4      '       d­   \        VP                  \        4      '       d'   VP                  P                  VP                  8X  d   Mf\        VP                  P                  \        4      '       d7   VP                  P                  P                  V8X  d   VP                  V 4      # \        #  VP                  V4      pV P                  4       pVP                  pW€P                  4       9  d   V) W8&   V# WV,          8X  d   W8 V# W8;;,          V,          uu&   V#   \         d
    \        u # i ; i)zÞSubtract polynomial p2 from p1.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.rings import ring

>>> _, x, y = ring('x, y', ZZ)
>>> p1 = x + y**2
>>> p2 = x*y + y**2
>>> p1 - p2
-x*y + x

)r»   r>   rÝ   r  r<   r­   rM   r_   r‹   r   Ú__rsub__r›  rã   rŽ   r’  r!   )	rŒ  r�  r>   r6  r  r­   r‚  rƒ  rÖ  s	   &&       r4   Ú__sub__ÚPolyElement.__sub__  s~  € ÷  Ø—7‘7“9ÐØ�w‰wˆØ�?‰?˜2×ÒØ—‘“	ˆAØ—%‘%ˆCØ—;‘;×#Ñ#ˆDØŸ™ž
‘�Ù˜“L 1Õ$�ßØ�a“Dàšñ #ð ˆHÜ˜œK×(Ò(Ü˜$Ÿ+™+¤~×6Ò6¸4¿;¹;×;KÑ;KÈrÏwÉwÔ;VØÜ˜BŸG™GŸN™N¬N×;Ò;ÀÇÁÇÁ×@SÑ@SÐW[Ô@[Ø—{‘{ 2“Ð&ä%Ð%ð	Ø—‘ Ó$ˆBð —‘“	ˆAØ—‘ˆBØŸ™›Ô"Ø˜�‘ð ˆHð	 ˜2�”;Ø˜ð ˆHð —E˜R•K“EØˆHøô ô 	"Ü!Ò!ð	"ús   Å+G ÇG.Ç-G.c                óÀ   € V P                   p VP                  V4      pVP                  pV  F  pW,          ) W4&   K  	  W1,          pV#   \         d
    \        u # i ; i)zÛn - p1 with n convertible to the coefficient domain.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.rings import ring

>>> _, x, y = ring('x, y', ZZ)
>>> p = x + y
>>> 4 - p
-x - y + 4

)r>   rã   r­   r!   r›  )rŒ  rJ  r>   r6  r±   s   &&   r4   r3  ÚPolyElement.__rsub__E  sc   € ð �w‰wˆð
	Ø—‘ Ó"ˆAð —	‘	ˆAÛ�Ø�8˜)�“ñ à�FˆAàˆHøô ô 	"Ü!Ò!ð	"ús   ŽA	 Á	AÁAc                óô  € V P                   pVP                  pV '       d	   V'       g   V# VP                  V4      '       d�   VP                  pVP                  P                  pVP
                  p\        VP                  4       4      pV P                  4        F/  w  r‰V F$  w  r«V! WŠ4      pV! WÅ4      W›,          ,           W<&   K&  	  K1  	  VP                  4        V# \        V\        4      '       d­   \        VP                  \        4      '       d'   VP                  P                   VP                   8X  d   Mf\        VP                   P                  \        4      '       d7   VP                   P                  P                   V8X  d   VP                  V 4      # \        #  VP                  V4      pV P                  4        F  w  r‰W‘,          pV'       g   K  WÓV&   K  	  V#   \         d
    \        u # i ; i)zÑMultiply two polynomials.

Examples
========

>>> from sympy.polys.domains import QQ
>>> from sympy.polys.rings import ring

>>> _, x, y = ring('x, y', QQ)
>>> p1 = x + y
>>> p2 = x - y
>>> p1*p2
x**2 - y**2

)r>   r­   rÝ   r  r<   r“   rG   rM   rˆ  r_   r‹   r   Ú__rmul__r›  rã   r!   )rŒ  r�  r>   r6  r  r­   r“   Úp2itÚexp1Úv1Úexp2Úv2r	  rƒ  s   &&            r4   Ú__mul__ÚPolyElement.__mul__a  sy  € ð  �w‰wˆØ�I‰IˆßŸØˆHØ�_‰_˜R× Ò Ø—%‘%ˆCØ—;‘;×#Ñ#ˆDØ×,Ñ,ˆLÜ˜Ÿ™›
Ó#ˆDØŸH™HžJ‘�Û $‘H�DÙ& tÓ2�CÙ  ›^¨b­eÕ3�A“Fó !%ñ 'ð �L‰LŒNàˆHÜ˜œK×(Ò(Ü˜$Ÿ+™+¤~×6Ò6¸4¿;¹;×;KÑ;KÈrÏwÉwÔ;VØÜ˜BŸG™GŸN™N¬N×;Ò;ÀÇÁÇÁ×@SÑ@SÐW[Ô@[Ø—{‘{ 2“Ð&ä%Ð%ð
	Ø—‘ Ó$ˆBð ŸH™HžJ‘�Ø•E�ß‘1Ø�d“Gñ 'ð
 ˆHøô ô 	"Ü!Ò!ð	"ús   Æ!G# Ç#G7Ç6G7c                ó
  € V P                   P                  pV'       g   V#  VP                   P                  V4      pV P                  4        F  w  r4W,          pV'       g   K  WRV&   K  	  V#   \         d
    \
        u # i ; i)zÖp2 * p1 with p2 in the coefficient domain of p1.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.rings import ring

>>> _, x, y = ring('x, y', ZZ)
>>> p = x + y
>>> 4 * p
4*x + 4*y

)r>   r­   rã   rM   r!   r›  )rŒ  r�  r6  r;  r<  rƒ  s   &&    r4   r9  ÚPolyElement.__rmul__•  sw   € ð �G‰G�L‰LˆßØˆHð		Ø—‘×"Ñ" 2Ó&ˆBð ŸH™HžJ‘�Ø•E�ß‘1Ø�d“Gñ 'ð ˆHøô ô 	"Ü!Ò!ð	"ús   ¢A. Á.BÂBc                ó.  € \        V\        4      '       g   \        RV,          4      hV^ 8  d   \        RV,          4      hV P                  pV'       g    V '       d   VP
                  # \        R4      h\        V 4      ^8X  dy   \        V P                  4       4      ^ ,          w  r4VP                  pWBP                  P
                  8X  d   WEVP                  W14      &   V# WA,          WRP                  W14      &   V# \        V4      pV^ 8  d   \        R4      hV^8X  d   V P                  4       # V^8X  d   V P                  4       # V^8X  d   W P                  4       ,          # \        V 4      ^8:  d   V P                  V4      # V P                  V4      # )zàraise polynomial to power `n`

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.rings import ring

>>> _, x, y = ring('x, y', ZZ)
>>> p = x + y**2
>>> p**3
x**3 + 3*x**2*y**2 + 3*x*y**4 + y**6

z#exponent must be an integer, got %sz/exponent must be a non-negative integer, got %sz0**0zNegative exponent)r_   rm   Ú	TypeErrorrò   r>   r‘   r   rG   rM   r­   r<   r•   r»   ÚsquareÚ_pow_multinomialÚ_pow_generic)r¯   rJ  r>   rë   rç   r6  s   &&    r4   Ú__pow__ÚPolyElement.__pow__²  sT  € ô ˜!œS×!Ò!ÜÐAÀAÕEÓFÐFØ�ŒUÜÐNÐQRÕRÓSÐSà�y‰yˆçßØ—x‘x�ä  Ó(Ð(Ü�‹Y˜!Œ^Ü §
¡
£Ó-¨aÕ0‰LˆEØ—	‘	ˆAØŸ™Ÿ™Ô'Ø16�$×#Ñ# EÓ-Ñ.ð ˆHð 27µ�×#Ñ# EÓ-Ñ.àˆHô �‹FˆØˆqŒ5ÜÐ0Ó1Ð1à�!ŒVØ—9‘9“;ÐØ�!ŒVØ—;‘;“=Ð Ø�!ŒVØŸ™›Õ%Ð%Ü�‹Y˜!Œ^Ø×(Ñ(¨Ó+Ð+à×$Ñ$ QÓ'Ð'r6   c                	óÀ   € V P                   P                  pT p V^,          '       d   W#,          pV^,          pV'       g    V# VP                  4       pV^,          pKG  r  )r>   r‘   rE  )r¯   rJ  r6  rX   s   &&  r4   rG  ÚPolyElement._pow_genericè  sS   € Ø�I‰I�M‰MˆØˆàØ�1�uŒuØ•C�Ø�Q•�ßØð
 ˆð —‘“
ˆAØ�Q•ŠAr6   c                	ó:  € \        \        V 4      V4      P                  4       pV P                  P                  pV P                  P
                  pV P                  4       pV P                  P                  P                  pV P                  P                  pV F  w  r‰Tp
T	p\        W…4       F*  w  pw  rÞV'       g   K  V! W­V4      p
W¾V,          ,          pK,  	  \        V
4      pTpVP                  WÖ4      V,           pV'       d   WçV&   Ku  W×9   g   K}  W} K�  	  V# r^   )r   r   rM   r>   r—   rŽ   r<   r­   rL   r~   r  )r¯   rJ  Úmultinomialsr—   rŽ   rq  r­   r²   ÚmultinomialÚmultinomial_coeffÚproduct_monomÚproduct_coeffr	  rë   rç   s   &&             r4   rF  ÚPolyElement._pow_multinomialø  sï   € Ü/´°D³	¸1Ó=×CÑCÓEˆØŸ)™)×3Ñ3ˆØ—Y‘Y×)Ñ)ˆ
Ø—
‘
“ˆØ�y‰y×Ñ×$Ñ$ˆØ�y‰y�~‰~ˆã.:Ñ*ˆKØ&ˆMØ-ˆMä'*¨;Ö'>Ñ#�‘^�eß‘3Ù$3°MÈ#Ó$N�MØ!¨C¥ZÕ/’Mñ (?ô
 ˜-Ó(ˆEØ!ˆEà—H‘H˜UÓ)¨EÕ1ˆEçØ#�U“Ø–Ø’Kñ# /;ð& ˆr6   c                óf  € V P                   pVP                  pVP                  p\        V P	                  4       4      pVP
                  P                  pVP                  p\        \        V4      4       FS  pWG,          pW,          p	\        V4       F1  p
WJ,          pV! W‹4      pV! WÅ4      W�V,          ,          ,           W,&   K3  	  KU  	  VP                  ^4      pVP                  pV P                  4        F%  w  rÞV! WÝ4      pV! Wµ4      V^,          ,           W+&   K'  	  VP                  4        V# )zÑsquare of a polynomial

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y = ring('x, y', ZZ)
>>> p = x + y**2
>>> p.square()
x**2 + 2*x*y**2 + y**4

)r>   r­   r  rG   r’  r<   r“   r«   r   Úimul_numrM   rˆ  )r¯   r>   r6  r  r’  r­   r“   r°   Úk1ÚpkÚjÚk2r	  r‚  rƒ  s   &              r4   rE  ÚPolyElement.square  s÷   € ð �y‰yˆØ�I‰IˆØ�e‰eˆÜ�D—I‘I“KÓ ˆØ�{‰{×ÑˆØ×(Ñ(ˆÜ”s˜4“yÖ!ˆAØ•ˆBØ•ˆBÜ˜1–X�Ø•W�Ù" 2Ó*�Ù˜S›¨"°"­X­+Õ5�“ó ñ "ð �J‰J�q‹MˆØ�e‰eˆØ—J‘J–L‰DˆAÙ˜aÓ#ˆBÙ˜“M A q¥DÕ(ˆA‹Eñ !ð 	
�‰Œàˆr6   c                	óª  € V P                   pV'       g   \        R 4      hVP                  V4      '       d   V P                  V4      # \	        V\
        4      '       d­   \	        VP                  \        4      '       d'   VP                  P                   VP                   8X  d   Mf\	        VP                   P                  \        4      '       d7   VP                   P                  P                   V8X  d   VP                  V 4      # \        #  VP                  V4      pV P                  V4      V P                  V4      3#   \         d
    \        u # i ; i©úpolynomial division)r>   ÚZeroDivisionErrorrÝ   rš   r_   r‹   r<   r   Ú__rdivmod__r›  rã   Ú
quo_groundÚ
rem_groundr!   ©rŒ  r�  r>   s   && r4   Ú
__divmod__ÚPolyElement.__divmod__:  sö   € Ø�w‰wˆçÜ#Ð$9Ó:Ð:Ø�_‰_˜R× Ò Ø—6‘6˜"“:ÐÜ˜œK×(Ò(Ü˜$Ÿ+™+¤~×6Ò6¸4¿;¹;×;KÑ;KÈrÏwÉwÔ;VØÜ˜BŸG™GŸN™N¬N×;Ò;ÀÇÁÇÁ×@SÑ@SÐW[Ô@[Ø—~‘~ bÓ)Ð)ä%Ð%ð	:Ø—‘ Ó$ˆBð —M‘M "Ó% r§}¡}°RÓ'8Ð9Ð9øô ô 	"Ü!Ò!ð	"ús   ÄD> Ä>EÅEc                	óŽ   € V P                   p VP                  V4      pVP                  V 4      #   \         d
    \        u # i ; ir^   )r>   rè   rš   r!   r›  ra  s   && r4   r^  ÚPolyElement.__rdivmod__P  óE   € Ø�w‰wˆð	Ø—‘ Ó$ˆBð —6‘6˜"“:Ðøô ô 	"Ü!Ò!ð	"úó   Ž0 °AÁAc                	óˆ  € V P                   pV'       g   \        R 4      hVP                  V4      '       d   V P                  V4      # \	        V\
        4      '       d­   \	        VP                  \        4      '       d'   VP                  P                   VP                   8X  d   Mf\	        VP                   P                  \        4      '       d7   VP                   P                  P                   V8X  d   VP                  V 4      # \        #  VP                  V4      pV P                  V4      #   \         d
    \        u # i ; ir[  )r>   r]  rÝ   Úremr_   r‹   r<   r   Ú__rmod__r›  rã   r`  r!   ra  s   && r4   Ú__mod__ÚPolyElement.__mod__Y  sç   € Ø�w‰wˆçÜ#Ð$9Ó:Ð:Ø�_‰_˜R× Ò Ø—6‘6˜"“:ÐÜ˜œK×(Ò(Ü˜$Ÿ+™+¤~×6Ò6¸4¿;¹;×;KÑ;KÈrÏwÉwÔ;VØÜ˜BŸG™GŸN™N¬N×;Ò;ÀÇÁÇÁ×@SÑ@SÐW[Ô@[Ø—{‘{ 2“Ð&ä%Ð%ð	%Ø—‘ Ó$ˆBð —=‘= Ó$Ð$øô ô 	"Ü!Ò!ð	"úó   ÄD- Ä-EÅ Ec                	óŽ   € V P                   p VP                  V4      pVP                  V 4      #   \         d
    \        u # i ; ir^   )r>   rè   ri  r!   r›  ra  s   && r4   rj  ÚPolyElement.__rmod__o  rf  rg  c                	óˆ  € V P                   pV'       g   \        R 4      hVP                  V4      '       d   V P                  V4      # \	        V\
        4      '       d­   \	        VP                  \        4      '       d'   VP                  P                   VP                   8X  d   Mf\	        VP                   P                  \        4      '       d7   VP                   P                  P                   V8X  d   VP                  V 4      # \        #  VP                  V4      pV P                  V4      #   \         d
    \        u # i ; ir[  )r>   r]  rÝ   Úquor_   r‹   r<   r   Ú__rtruediv__r›  rã   r_  r!   ra  s   && r4   Ú__floordiv__ÚPolyElement.__floordiv__x  sè   € Ø�w‰wˆçÜ#Ð$9Ó:Ð:Ø�_‰_˜R× Ò Ø—6‘6˜"“:ÐÜ˜œK×(Ò(Ü˜$Ÿ+™+¤~×6Ò6¸4¿;¹;×;KÑ;KÈrÏwÉwÔ;VØÜ˜BŸG™GŸN™N¬N×;Ò;ÀÇÁÇÁ×@SÑ@SÐW[Ô@[Ø—‘ rÓ*Ð*ä%Ð%ð	%Ø—‘ Ó$ˆBð —=‘= Ó$Ð$øô ô 	"Ü!Ò!ð	"úrm  c                	óŽ   € V P                   p VP                  V4      pVP                  V 4      #   \         d
    \        u # i ; ir^   )r>   rè   rq  r!   r›  ra  s   && r4   Ú__rfloordiv__ÚPolyElement.__rfloordiv__Ž  rf  rg  c                	óˆ  € V P                   pV'       g   \        R 4      hVP                  V4      '       d   V P                  V4      # \	        V\
        4      '       d­   \	        VP                  \        4      '       d'   VP                  P                   VP                   8X  d   Mf\	        VP                   P                  \        4      '       d7   VP                   P                  P                   V8X  d   VP                  V 4      # \        #  VP                  V4      pV P                  V4      #   \         d
    \        u # i ; ir[  )r>   r]  rÝ   Úexquor_   r‹   r<   r   rr  r›  rã   r_  r!   ra  s   && r4   Ú__truediv__ÚPolyElement.__truediv__—  sè   € Ø�w‰wˆçÜ#Ð$9Ó:Ð:Ø�_‰_˜R× Ò Ø—8‘8˜B“<ÐÜ˜œK×(Ò(Ü˜$Ÿ+™+¤~×6Ò6¸4¿;¹;×;KÑ;KÈrÏwÉwÔ;VØÜ˜BŸG™GŸN™N¬N×;Ò;ÀÇÁÇÁ×@SÑ@SÐW[Ô@[Ø—‘ rÓ*Ð*ä%Ð%ð	%Ø—‘ Ó$ˆBð —=‘= Ó$Ð$øô ô 	"Ü!Ò!ð	"úrm  c                	óŽ   € V P                   p VP                  V4      pVP                  V 4      #   \         d
    \        u # i ; ir^   )r>   rè   ry  r!   r›  ra  s   && r4   rr  ÚPolyElement.__rtruediv__­  sE   € Ø�w‰wˆð	 Ø—‘ Ó$ˆBð —8‘8˜B“<Ðøô ô 	"Ü!Ò!ð	"úrg  c                	óð   aaa€ V P                   P                  oV P                   P                  pVP                  oV P                   P                  oVP
                  '       d   VVV3R  lpV# VVV3R lpV# )c                óX   <€ V w  r#Vw  rEVS	8X  d   TpMS! W$4      pVe   VS! W54      3# R # r^   r2   ©
Ú	a_lm_a_lcÚ	b_lm_b_lcÚa_lmÚa_lcÚb_lmÚb_lcrë   Ú
domain_quor›   rÖ  s
   &&     €€€r4   Úterm_divÚ'PolyElement._term_div.<locals>.term_div½  s@   ø€ Ø&‘
�Ø&‘
�Ø˜2”:Ø ‘Eá(¨Ó4�EØÒ$Ø ¡*¨TÓ"8Ð8Ð8ár6   c                ót   <€ V w  r#Vw  rEVS	8X  d   TpMS! W$4      pVe   W5,          '       g   VS! W54      3# R # r^   r2   r€  s
   &&     €€€r4   rˆ  r‰  É  sE   ø€ Ø&‘
�Ø&‘
�Ø˜2”:Ø ‘Eá(¨Ó4�EØš¨¯¬Ø ¡*¨TÓ"8Ð8Ð8ár6   )r>   rŽ   r<   rq  r›   r|  )r¯   r<   rˆ  r‡  r›   rÖ  s   &  @@@r4   Ú	_term_divÚPolyElement._term_div¶  sZ   ú€ Ø�Y‰Y×!Ñ!ˆØ—‘×!Ñ!ˆØ—Z‘Zˆ
Ø—y‘y×-Ñ-ˆà�?�?ˆ?÷
 ð0 ˆ÷
 ð ˆr6   c                ó„  € V P                   pRp\        V\        4      '       d   RpV.p\        V4      '       g   \	        R4      hV '       g/   V'       d   VP
                  VP
                  3# . VP
                  3# V F  pVP                   V8w  g   K  \        R4      h	  \        V4      p\        V4       Uu. uF  qbP
                  NK  	  ppV P                  4       pVP
                  p	V P                  4       p
V Uu. uF  q»P                  4       NK  	  ppV'       dÓ   ^ p^ pWe8  d’   V^ 8X  d‹   VP                  4       pV
! WèV,          3WÆ,          W,          WÆ,          ,          34      pVe@   Vw  ppWv,          P                  VV34      Wv&   VP                  W,          VV) 34      p^pKŒ  V^,          pK—  V'       d   K­  VP                  4       pV	P                  WèV,          34      p	WŽ KÚ  XVP                  8X  d	   W˜,          p	V'       d"   V'       g   VP
                  V	3# V^ ,          V	3# Wy3# u upi u upi )aµ  Division algorithm, see [CLO] p64.

fv array of polynomials
   return qv, r such that
   self = sum(fv[i]*qv[i]) + r

All polynomials are required not to be Laurent polynomials.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y = ring('x, y', ZZ)
>>> f = x**3
>>> f0 = x - y**2
>>> f1 = x - y
>>> qv, r = f.div((f0, f1))
>>> qv[0]
x**2 + x*y**2 + y**4
>>> qv[1]
0
>>> r
y**6

FTr\  z"self and f must have the same ring)r>   r_   r‹   ri   r]  r­   rò   r   r«   r»   r‹  r    Ú_iadd_monomÚ_iadd_poly_monomrŽ   )r¯   Úfvr>   Ú
ret_singler{   rc   r°   Úqvr6  Úrrˆ  ÚfxÚexpvsÚdivoccurredr±   ÚtermÚexpv1rX   s   &&                r4   rš   ÚPolyElement.div×  sê  € ð8 �y‰yˆØˆ
Ü�bœ+×&Ò&ØˆJØ�ˆBÜ�2�wŠwÜ#Ð$9Ó:Ð:ßßØ—y‘y $§)¡)Ð+Ð+à˜4Ÿ9™9�}Ð$ÛˆAØ�v‰v˜Ž~Ü Ð!EÓFÐFñ ô �‹GˆÜ!& q¤Ó*¡˜A�iŒi¡ˆÐ*Ø�I‰I‹KˆØ�I‰IˆØ—>‘>Ó#ˆÙ-/Ó0©R r—‘Ö"©RˆÐ0ßØˆAØˆKØ”%˜K¨1Ô,Ø—~‘~Ó'�Ù ¨¥w °%µ(¸B½EÀ%Å(½OÐ1LÓM�ØÒ#Ø#‘H�E˜1Ø�E×-Ñ-¨u°a¨jÓ9�B‘EØ×*Ñ*¨2­5°5¸1¸"°+Ó>�AØ"#’Kà˜•F’Aß‘;ØŸ™Ó(�Ø—M‘M 4¨4­ /Ó2�Ø’GØ�4—?‘?Ô"Ø�FˆAßßØ—y‘y !�|Ð#à˜!•u˜a�x�à�5ˆLùò= +ùò 1s   Â9H8Ã?H=c                	ó&  € T p\        V\        4      '       d   V.p\        V4      '       g   \        R 4      hVP                  pVP
                  pVP                  pVP                  pVP                  pVP                  4       pVP                  p	VP                  4       pVP                  p
V'       dÞ   V FŠ  pV! W›P                  4      pVf   K  Vw  rÞVP                  4        F7  w  ppV! Wý4      pV
! VV4      VV,          ,
          pV'       g   VV K2  VVV&   K9  	  VP                  4       pVe   VVV,          3p	 K–  	  V	w  ppVV9   d   VV;;,          V,          uu&   MVVV&   VV VP                  4       pVf   KØ  VVV,          3p	Kå  V# r[  )r_   r‹   ri   r]  r>   r<   r­   r“   r‹  ÚLTr»   r  rh  r    )r¯   ÚGr{   r>   r<   r­   r“   r“  rˆ  Últfr  ÚgÚtqrW   rX   ÚmgÚcgÚm1Úc1ÚltmÚltcs   &&                   r4   ri  ÚPolyElement.rem#  sh  € ØˆÜ�aœ×%Ò%Ø�ˆAÜ�1�vŠvÜ#Ð$9Ó:Ð:Ø�v‰vˆØ—‘ˆØ�{‰{ˆØ×(Ñ(ˆØ�I‰IˆØ—;‘;“=ˆØ�d‰dˆØ�F‰F‹HˆØ�e‰eˆßÛ�Ù˜c§4¡4Ó(�Ø”>Ø‘D�AØ"#§+¡+¦-™˜˜BÙ)¨"Ó0˜Ù   T›]¨Q¨r­TÕ1˜ß!Ø ! "¢à$&˜A˜b›Eñ #0ð Ÿ.™.Ó*�CØ’Ø! 1 S¥6˜k˜âñ ð" ‘��SØ˜!”8Ø�c—F˜c•M”Fà �A�c‘FØ�c�FØ—n‘nÓ&�Ø”?Ø˜q �v˜+’Càˆr6   c                	ó2   € V P                  V4      ^ ,          # r|   )rš   )r{   rœ  s   &&r4   rq  ÚPolyElement.quoP  s   € Ø�u‰u�Q‹x˜�{Ðr6   c                	óR   € V P                  V4      w  r#V'       g   V# \        W4      hr^   )rš   r#   )r{   rœ  Úqr“  s   &&  r4   ry  ÚPolyElement.exquoS  s$   € Ø�u‰u�Q‹x‰ˆçØˆHä% aÓ+Ð+r6   c                óÎ   € W P                   P                  9   d   V P                  4       pMT pVw  r4VP                  V4      pVf   WBV&   V# WT,          pV'       d   WRV&   V# W# V# )aõ  add to self the monomial coeff*x0**i0*x1**i1*...
unless self is a generator -- then just return the sum of the two.

mc is a tuple, (monom, coeff), where monomial is (i0, i1, ...)

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y = ring('x, y', ZZ)
>>> p = x**4 + 2*y
>>> m = (1, 2)
>>> p1 = p._iadd_monom((m, 5))
>>> p1
x**4 + 5*x*y**2 + 2*y
>>> p1 is p
True
>>> p = x
>>> p1 = p._iadd_monom((m, 5))
>>> p1
5*x*y**2 + x
>>> p1 is p
False

)r>   r�   r»   r  )r¯   ÚmcÚcpselfr±   rç   rX   s   &&    r4   rŽ  ÚPolyElement._iadd_monom[  sr   € ð8 —9‘9×&Ñ&Ô&Ø—Y‘Y“[‰FàˆFØ‰ˆØ�J‰J�tÓˆØŠ9Ø �4‰Lð ˆð �JˆAßØ �t‘ð ˆð �LØˆr6   c                óv  € T pW3P                   P                  9   d   VP                  4       pVw  rEVP                  pVP                   P                  P
                  pVP                   P                  pVP                  4        F2  w  ršV! W”4      pV! W·4      W¥,          ,           pV'       d   WÃV&   K0  W; K4  	  V# )aÕ  add to self the product of (p)*(coeff*x0**i0*x1**i1*...)
unless self is a generator -- then just return the sum of the two.

mc is a tuple, (monom, coeff), where monomial is (i0, i1, ...)

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y, z = ring('x, y, z', ZZ)
>>> p1 = x**4 + 2*y
>>> p2 = y + z
>>> m = (1, 2, 3)
>>> p1 = p1._iadd_poly_monom(p2, (m, 3))
>>> p1
x**4 + 3*x*y**3*z**3 + 3*x*y**2*z**4 + 2*y

)r>   r�   r»   r  r<   r­   r“   rM   )r¯   r�  r­  rŒ  rW   rX   r  r­   r“   r‚  rƒ  Úkarç   s   &&&          r4   r�  ÚPolyElement._iadd_poly_monom‡  s˜   € ð* ˆØ—‘×"Ñ"Ô"Ø—‘“ˆBØ‰ˆØ�f‰fˆØ�w‰w�~‰~×"Ñ"ˆØ—w‘w×+Ñ+ˆØ—H‘H–J‰DˆAÙ˜aÓ#ˆBÙ˜“M A¥CÕ'ˆEßØ�2“à’Fñ ð ˆ	r6   c                ó®   a€ V P                   P                  V4      oV '       g   \        # S^ 8  d   ^ # \        V3R lV P	                  4        4       4      # )zx
The leading degree in ``x`` or the main variable.

Note that the degree of 0 is negative infinity (``float('-inf')``)

c              3  ó4   <"  € T F  qS,          x € K  	  R # 5ir^   r2   ©rb   rë   r°   s   & €r4   rd   Ú%PolyElement.degree.<locals>.<genexpr>º  ó   øé € Ð<©^ E˜Q—x’x«^ùó   ƒ)r>   r  r   rz   r  ©r{   Úxr°   s   &&@r4   ÚdegreeÚPolyElement.degree¬  ó?   ø€ ð �F‰F�L‰L˜‹OˆçÜˆKØ�ŒUÙäÔ<¨Q¯\©\¬^Ó<Ó<Ð<r6   c                óÄ   € V '       g#   \         3V P                  P                  ,          # \        \	        \
        \        \        V P                  4       !  4      4      4      # )z{
A tuple containing leading degrees in all variables.

Note that the degree of 0 is negative infinity (``float('-inf')``)

)	r   r>   rn   r~   rH   rz   rG   rL   r  rù  s   &r4   ÚdegreesÚPolyElement.degrees¼  ó>   € ÷ Ü�7˜1Ÿ6™6Ÿ<™<Õ'Ð'äœœS¤$¤s¨A¯L©L«NÑ';Ó"<Ó=Ó>Ð>r6   c                ó®   a€ V P                   P                  V4      oV '       g   \        # S^ 8  d   ^ # \        V3R lV P	                  4        4       4      # )zu
The tail degree in ``x`` or the main variable.

Note that the degree of 0 is negative infinity (``float('-inf')``)

c              3  ó4   <"  € T F  qS,          x € K  	  R # 5ir^   r2   rµ  s   & €r4   rd   Ú*PolyElement.tail_degree.<locals>.<genexpr>Ö  r·  r¸  )r>   r  r   Úminr  r¹  s   &&@r4   Útail_degreeÚPolyElement.tail_degreeÈ  r½  r6   c                óÄ   € V '       g#   \         3V P                  P                  ,          # \        \	        \
        \        \        V P                  4       !  4      4      4      # )zx
A tuple containing tail degrees in all variables.

Note that the degree of 0 is negative infinity (``float('-inf')``)

)	r   r>   rn   r~   rH   rÅ  rG   rL   r  rù  s   &r4   Útail_degreesÚPolyElement.tail_degreesØ  rÁ  r6   c                óL   € V '       d   V P                   P                  V 4      # R# )a  Leading monomial tuple according to the monomial ordering.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y, z = ring('x, y, z', ZZ)
>>> p = x**4 + x**3*y + x**2*z**2 + z**7
>>> p.leading_expv()
(4, 0, 0)

N)r>   r    rµ   s   &r4   r    ÚPolyElement.leading_expvä  s   € ÷ Ø—9‘9×)Ñ)¨$Ó/Ð/ár6   c                	ó`   € V P                  WP                  P                  P                  4      # r^   )r  r>   r<   r­   ©r¯   r±   s   &&r4   Ú
_get_coeffÚPolyElement._get_coeffø  s!   € Ø�x‰x˜Ÿi™i×.Ñ.×3Ñ3Ó4Ð4r6   c                ó’  € V^8X  d&   V P                  V P                  P                  4      # V P                  P                  V4      '       dj   \	        VP                  4       4      p\        V4      ^8X  dA   V^ ,          w  r4W@P                  P                  P                  8X  d   V P                  V4      # \        RV,          4      h)a|  
Returns the coefficient that stands next to the given monomial.

Parameters
==========

element : PolyElement (with ``is_monomial = True``) or 1

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y, z = ring("x,y,z", ZZ)
>>> f = 3*x**2*y - x*y*z + 7*z**3 + 23

>>> f.coeff(x**2*y)
3
>>> f.coeff(x*y)
0
>>> f.coeff(1)
23

zexpected a monomial, got %s)
rÏ  r>   rŽ   rÝ   rG   rh  r   r<   r‘   rò   )r¯   rÜ   rq  rë   rç   s   &&   r4   rç   ÚPolyElement.coeffû  s˜   € ð4 �aŒ<Ø—?‘? 4§9¡9×#7Ñ#7Ó8Ð8Ø�Y‰Y×!Ñ! '×*Ò*Ü˜×*Ñ*Ó,Ó-ˆEÜ�5‹z˜QŒØ$ Q�x‘�ØŸI™I×,Ñ,×0Ñ0Ô0ØŸ?™?¨5Ó1Ð1äÐ6¸Õ@ÓAÐAr6   c                óL   € V P                  V P                  P                  4      # )z"Returns the constant coefficient. )rÏ  r>   rŽ   rµ   s   &r4   r”  ÚPolyElement.const   s   € à�‰˜tŸy™y×3Ñ3Ó4Ð4r6   c                	ó@   € V P                  V P                  4       4      # r^   )rÏ  r    rµ   s   &r4   rå  ÚPolyElement.LC$  s   € à�‰˜t×0Ñ0Ó2Ó3Ð3r6   c                	óZ   € V P                  4       pVf   V P                  P                  # V# r^   )r    r>   rŽ   rÎ  s   & r4   ÚLMÚPolyElement.LM(  s*   € à× Ñ Ó"ˆØŠ<Ø—9‘9×'Ñ'Ð'àˆKr6   c                ó¦   € V P                   P                  pV P                  4       pV'       d#   V P                   P                  P                  W&   V# )zÕ
Leading monomial as a polynomial element.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y = ring('x, y', ZZ)
>>> (3*x*y + y**2).leading_monom()
x*y

)r>   r­   r    r<   r‘   ©r¯   r6  r±   s   &  r4   Úleading_monomÚPolyElement.leading_monom0  s>   € ð �I‰I�N‰NˆØ× Ñ Ó"ˆßØ—i‘i×&Ñ&×*Ñ*ˆA‰GØˆr6   c                	óº   € V P                  4       pVf7   V P                  P                  V P                  P                  P                  3# WP                  V4      3# r^   )r    r>   rŽ   r<   r­   rÏ  rÎ  s   & r4   r›  ÚPolyElement.LTE  sL   € à× Ñ Ó"ˆØŠ<Ø—I‘I×(Ñ(¨$¯)©)×*:Ñ*:×*?Ñ*?Ð@Ð@àŸ/™/¨$Ó/Ð0Ð0r6   c                ón   € V P                   P                  pV P                  4       pVe   W,          W&   V# )zÑLeading term as a polynomial element.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y = ring('x, y', ZZ)
>>> (3*x*y + y**2).leading_term()
3*x*y

)r>   r­   r    rÛ  s   &  r4   Úleading_termÚPolyElement.leading_termM  s3   € ð �I‰I�N‰NˆØ× Ñ Ó"ˆØÒØ•jˆA‰GØˆr6   c                	ó¼   a€ Sf   V P                   P                  oM\        P                  ! S4      oS\        J d   \        VR RR7      # \        VV3R lRR7      # )Nc                ó   € V ^ ,          # r|   r2   )rë   s   &r4   rt   Ú%PolyElement._sorted.<locals>.<lambda>h  s   € °°q¶r6   T)ry   Úreversec                ó"   <€ S! V ^ ,          4      # r|   r2   )rë   r1   s   &€r4   rt   rå  j  s   ø€ ±°u¸Qµx´r6   )r>   r1   r‚   r�   r   Úsorted)r¯   r\   r1   s   &&fr4   Ú_sortedÚPolyElement._sorteda  sL   ø€ ØŠ=Ø—I‘I—O‘O‰Eä×'Ò'¨Ó.ˆEà”C‹<Ü˜#Ñ#9À4ÔHÐHä˜#Ô#@È$ÔOÐOr6   c                óX   € V P                  V4       UUu. uF  w  r#VNK	  	  upp# u uppi )a�  Ordered list of polynomial coefficients.

Parameters
==========

order : :class:`~.MonomialOrder` or coercible, optional

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.orderings import lex, grlex

>>> _, x, y = ring("x, y", ZZ, lex)
>>> f = x*y**7 + 2*x**2*y**3

>>> f.coeffs()
[2, 1]
>>> f.coeffs(grlex)
[1, 2]

©rq  )r¯   r1   Ú_rç   s   &&  r4   rT   ÚPolyElement.coeffsl  s)   € ð0 (,§z¡z°%Ô'8Ô:Ñ'8™8˜1“Ñ'8Ò:Ð:ùÓ:ó   •&c                óX   € V P                  V4       UUu. uF  w  r#VNK	  	  upp# u uppi )a’  Ordered list of polynomial monomials.

Parameters
==========

order : :class:`~.MonomialOrder` or coercible, optional

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.orderings import lex, grlex

>>> _, x, y = ring("x, y", ZZ, lex)
>>> f = x*y**7 + 2*x**2*y**3

>>> f.monoms()
[(2, 3), (1, 7)]
>>> f.monoms(grlex)
[(1, 7), (2, 3)]

rì  )r¯   r1   rë   rí  s   &&  r4   ÚmonomsÚPolyElement.monoms†  s)   € ð0 (,§z¡z°%Ô'8Ô:Ñ'8™8˜5“Ñ'8Ò:Ð:ùÓ:rï  c                óT   € V P                  \        V P                  4       4      V4      # )a   Ordered list of polynomial terms.

Parameters
==========

order : :class:`~.MonomialOrder` or coercible, optional

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.orderings import lex, grlex

>>> _, x, y = ring("x, y", ZZ, lex)
>>> f = x*y**7 + 2*x**2*y**3

>>> f.terms()
[((2, 3), 2), ((1, 7), 1)]
>>> f.terms(grlex)
[((1, 7), 1), ((2, 3), 2)]

)ré  rG   rM   )r¯   r1   s   &&r4   rq  ÚPolyElement.terms   s    € ð0 �|‰|œD §¡£Ó.°Ó6Ð6r6   c                ó4   € \        V P                  4       4      # )z,Iterator over coefficients of a polynomial. )ÚiterrJ   rµ   s   &r4   Ú
itercoeffsÚPolyElement.itercoeffsº  ó   € ä�D—K‘K“MÓ"Ð"r6   c                ó4   € \        V P                  4       4      # )z)Iterator over monomials of a polynomial. )rö  r’  rµ   s   &r4   r  ÚPolyElement.itermonoms¾  ó   € ä�D—I‘I“KÓ Ð r6   c                ó4   € \        V P                  4       4      # )z%Iterator over terms of a polynomial. )rö  rM   rµ   s   &r4   rh  ÚPolyElement.itertermsÂ  ó   € ä�D—J‘J“LÓ!Ð!r6   c                ó4   € \        V P                  4       4      # )z+Unordered list of polynomial coefficients. )rG   rJ   rµ   s   &r4   Ú
listcoeffsÚPolyElement.listcoeffsÆ  rù  r6   c                ó4   € \        V P                  4       4      # )z(Unordered list of polynomial monomials. )rG   r’  rµ   s   &r4   Ú
listmonomsÚPolyElement.listmonomsÊ  rü  r6   c                ó4   € \        V P                  4       4      # )z$Unordered list of polynomial terms. r‡  rµ   s   &r4   Ú	listtermsÚPolyElement.listtermsÎ  rÿ  r6   c                ó¸   € W P                   P                  9   d	   W,          # V'       g   V P                  4        R# V  F  pW;;,          V,          uu&   K  	  V # )aš  multiply inplace the polynomial p by an element in the
coefficient ring, provided p is not one of the generators;
else multiply not inplace

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y = ring('x, y', ZZ)
>>> p = x + y**2
>>> p1 = p.imul_num(3)
>>> p1
3*x + 3*y**2
>>> p1 is p
True
>>> p = x
>>> p1 = p.imul_num(3)
>>> p1
3*x
>>> p1 is p
False

N)r>   r�   Úclear)r6  rX   r	  s   && r4   rT  ÚPolyElement.imul_numÒ  sD   € ð4 —‘× Ñ Ô Ø•3ˆJßØ�G‰GŒIÙÛˆCØ�F�a�K�Fñ àˆr6   c                ó    € V P                   P                  pVP                  pVP                  pV P	                  4        F  pV! W$4      pK  	  V# )z*Returns GCD of polynomial's coefficients. )r>   r<   r­   rž   r÷  )r{   r<   Úcontrž   rç   s   &    r4   r  ÚPolyElement.contentõ  sB   € à—‘—‘ˆØ�{‰{ˆØ�j‰jˆà—\‘\–^ˆEÙ�tÓ#ŠDñ $ð ˆr6   c                ó”   € V P                  4       pWP                  P                  P                  8X  d   W3# WP	                  V4      3# )z,Returns content and a primitive polynomial. )r  r>   r<   r­   r_  )r{   r  s   & r4   Ú	primitiveÚPolyElement.primitive   s;   € à�y‰y‹{ˆØ—6‘6—=‘=×%Ñ%Ô%Ø�9ÐØ—\‘\ $Ó'Ð'Ð'r6   c                óL   € V '       g   V # V P                  V P                  4      # )z5Divides all coefficients by the leading coefficient. )r_  rå  rù  s   &r4   ÚmonicÚPolyElement.monic  s   € çØˆHà—<‘< §¡Ó%Ð%r6   c                	óÂ   € V'       g   V P                   P                  # V P                  4        UUu. uF  w  r#W#V,          3NK  	  pppV P                  V4      # u uppi r^   )r>   r­   rh  rŒ   )r{   rº  rë   rç   rq  s   &&   r4   r¸  ÚPolyElement.mul_ground  sJ   € ßØ—6‘6—;‘;Ðà78·{±{´}ÔF±}¡| u�5 �'Ó"±}ˆÑFØ�u‰u�U‹|Ðùó Gs   ²Ac                	ó²   € V P                   P                  pV P                  4        UUu. uF  w  r4V! W14      V3NK  	  pppV P                  V4      # u uppi r^   )r>   r“   rM   rŒ   )r{   rë   r“   Úf_monomÚf_coeffrq  s   &&    r4   Ú	mul_monomÚPolyElement.mul_monom  sQ   € Ø—v‘v×*Ñ*ˆØRS×RYÑRYÔR[Ô]ÑR[Ñ>N¸g‘< Ó/°Ó9ÑR[ˆÑ]Ø�u‰u�U‹|Ðùó ^s   ªAc                	óh  € Vw  r#V '       d	   V'       g   V P                   P                  # W P                   P                  8X  d   V P                  V4      # V P                   P                  pV P                  4        UUu. uF  w  rVV! WR4      Wc,          3NK  	  pppV P                  V4      # u uppi r^   )r>   r­   rŽ   r¸  r“   rM   rŒ   )r{   r—  rë   rç   r“   r  r  rq  s   &&      r4   Úmul_termÚPolyElement.mul_term  sŒ   € Ø‰ˆçŸØ—6‘6—;‘;ÐØ—f‘f×'Ñ'Ô'Ø—<‘< Ó&Ð&à—v‘v×*Ñ*ˆØXY×X_ÑX_ÔXaÔcÑXaÑDTÀG‘< Ó/°µÓ?ÑXaˆÑcØ�u‰u�U‹|Ðùó ds   Á?B.c           	     	óÊ  € V P                   P                  pV'       g   \        R 4      hV '       d   WP                  8X  d   V # VP                  '       d8   VP
                  pV P                  4        UUu. uF  w  rEWC! WQ4      3NK  	  pppM;V P                  4        UUu. uF  w  rEWQ,          '       d   K  WEV,          3NK!  	  pppV P                  V4      # u uppi u uppi r[  )r>   r<   r]  r‘   r|  rq  rh  rŒ   )r{   rº  r<   rq  rë   rç   rq  s   &&     r4   r_  ÚPolyElement.quo_ground&  s­   € Ø—‘—‘ˆçÜ#Ð$9Ó:Ð:ß�AŸ™”OØˆHà�?�?ˆ?Ø—*‘*ˆCØABÇÁÄÔPÁ±°�u˜c %›mÓ,ÁˆEÑPˆEà>?¿k¹k¼mÔ`¹m©l¨eÐTY×T]ÑT]Ô)�u q�jÓ)¹mˆEÑ`à�u‰u�U‹|Ðùó	 Qùã`s   Á5CÂ CÂ7Cc                	óŠ  € Vw  r#V'       g   \        R 4      hV '       g   V P                  P                  # W P                  P                  8X  d   V P	                  V4      # V P                  4       pV P                  4        Uu. uF
  qT! WQ4      NK  	  ppT P                  V Uu. uF
  qUf   K  VNK  	  up4      # u upi u upi r[  )r]  r>   r­   rŽ   r_  r‹  rh  rŒ   )r{   r—  rë   rç   rˆ  Útrq  s   &&     r4   Úquo_termÚPolyElement.quo_term6  sš   € Ø‰ˆçÜ#Ð$9Ó:Ð:ßØ—6‘6—;‘;ÐØ—f‘f×'Ñ'Ô'Ø—<‘< Ó&Ð&à—;‘;“=ˆà-.¯[©[¬]Ó<©]¨�(˜1Ö#©]ˆÐ<Ø�u‰u¡%Ó:¡%˜Q—q�q¡%Ñ:Ó;Ð;ùò =ùÚ:s   ÂB;Â$C Â.C c                	óŒ  € V P                   P                  P                  '       dL   . pV P                  4        F4  w  r4WA,          pWA^,          8”  d	   WA,
          pVP	                  W434       K6  	  M+V P                  4        UUu. uF  w  r4W4V,          3NK  	  pppV P                  V4      pVP                  4        V# u uppi )r0   )r>   r<   Úis_ZZrh  r®   rŒ   rˆ  )r{   r6  rq  rë   rç   r²   s   &&    r4   Útrunc_groundÚPolyElement.trunc_groundE  s™   € Ø�6‰6�=‰=××ÐØˆEà !§¡¦‘�Ø�	�à �6”>Ø!�I�Eà—‘˜e˜^Ö,ò !.ð >?¿[¹[¼]ÔL¹]©\¨U�u a�iÓ(¹]ˆEÑLà�u‰u�U‹|ˆØ�‰ÔØˆùó	 Ms   ÂC c                	óÜ   € T pVP                  4       pVP                  4       pVP                  P                  P                  W44      pVP	                  V4      pVP	                  V4      pWRV3# r^   )r  r>   r<   rž   r_  )r¯   rž  r{   ÚfcÚgcrž   s   &&    r4   Úextract_groundÚPolyElement.extract_groundY  s[   € ØˆØ�Y‰Y‹[ˆØ�Y‰Y‹[ˆà�f‰f�m‰m×Ñ Ó'ˆà�L‰L˜ÓˆØ�L‰L˜Óˆà�qˆyÐr6   c                	óò   € V '       g!   V P                   P                  P                  # V P                   P                  P                  pT! V P	                  4        Uu. uF
  q2! V4      NK  	  up4      # u upi r^   )r>   r<   r­   Úabsr÷  )r{   Ú	norm_funcÚ
ground_absrç   s   &&  r4   Ú_normÚPolyElement._norme  sT   € ßØ—6‘6—=‘=×%Ñ%Ð%àŸ™Ÿ™×*Ñ*ˆJÙ¸a¿l¹l¼nÓN¹n°U˜z¨%Ö0¹nÑNÓOÐOùÒNs   ÁA4c                	ó,   € V P                  \        4      # r^   )r2  rz   rù  s   &r4   Úmax_normÚPolyElement.max_norml  ó   € Ø�w‰w”s‹|Ðr6   c                	ó,   € V P                  \        4      # r^   )r2  rI   rù  s   &r4   Úl1_normÚPolyElement.l1_normo  r7  r6   c                	óÂ  € V P                   pV .\        V4      ,           p^ .VP                  ,          pV FB  pVP                  4        F+  p\	        V4       F  w  rx\        WG,          V4      WG&   K  	  K-  	  KD  	  \	        V4       F  w  ryV	'       d   K  ^WG&   K  	  \        V4      p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   WC3# . p
V Fj  pVP                  pVP                  4        F6  w  rÍ\        WÄ4       UUu. uF  w  r~W~,          NK  	  pppWÛ\        V4      &   K8  	  V
P                  V4       Kl  	  WJ3# u uppi )r}   c              3  ó*   "  € T F	  q^8H  x € K  	  R# 5ir  r2   )rb   rs   s   & r4   rd   Ú&PolyElement.deflate.<locals>.<genexpr>ƒ  s   é € Ð!™q˜!�AŽv›qùs   ‚FT)r>   rG   rn   r  r  r   r~   ri   r­   rh  rL   r®   )r{   rœ  r>   rY   ÚJr6  rë   r°   rW   rs   ÚHÚhÚIrç   rW  ÚNs   &*              r4   ÚdeflateÚPolyElement.deflater  s"  € Ø�v‰vˆØ�”d˜1“g•ˆàˆC�—
‘
�NˆãˆAØŸ™ž�Ü% eÖ,‘D�AÜ ¥ a›=�A“Dó -ó (ñ ô
 ˜a–L‰DˆAß‘1Ø�“ñ !ô �!‹Hˆç‹3Ñ!™qÓ!�3�3Š3Ñ!™qÓ!×!Ò!Ø�8ˆOàˆãˆAØ—	‘	ˆAàŸK™KžM‘�Ü),¨Q¬Ô4©¡ �a—f�f©�Ñ4Ø#”%˜“(“ñ *ð �H‰H�QŽKñ ð ˆtˆùó 5s   ÄE
c                	óÒ   € V P                   P                  pV P                  4        F6  w  r4\        W14       UUu. uF  w  rVWV,          NK  	  pppWB\	        V4      &   K8  	  V# u uppi r^   )r>   r­   rh  rL   r~   )r{   r>  r²   rA  rç   r°   rW  rB  s   &&      r4   ÚinflateÚPolyElement.inflate“  sV   € Ø�v‰v�{‰{ˆàŸ™ž‰HˆAÜ"% a¤)Ô-¡)™$˜!�!—#�#¡)ˆAÑ-Ø"”�q“‹Nñ &ð ˆùó .s   ºA#c                	ór  € T pVP                   P                  pVP                  '       g6   VP                  4       w  rBVP                  4       w  rQVP	                  WE4      pW!,          P                  VP                  V4      4      pVP                  '       g   VP                  X4      # VP                  4       # r^   )	r>   r<   r|  r  rœ   rq  rž   r¸  r  )r¯   rž  r{   r<   r*  r+  rX   r@  s   &&      r4   rœ   ÚPolyElement.lcmœ  s€   € ØˆØ—‘—‘ˆà��ˆØ—K‘K“M‰EˆBØ—K‘K“M‰EˆBØ—
‘
˜2Ó"ˆAà�S�I‰I�a—e‘e˜A“hÓˆà��ˆØ—<‘< “?Ð"à—7‘7“9Ðr6   c                	ó2   € V P                  V4      ^ ,          # r|   )Ú	cofactors©r{   rž  s   &&r4   rž   ÚPolyElement.gcd¬  s   € Ø�{‰{˜1‹~˜aÕ Ð r6   c                	ó.  € V '       g#   V'       g   V P                   P                  pW"V3# V '       g   V P                  V4      w  r4pW4V3# V'       g   VP                  V 4      w  r5pW4V3# \        V 4      ^8X  d   V P	                  V4      w  r4pW4V3# \        V4      ^8X  d   VP	                  V 4      w  r5pW4V3# V P                  V4      w  pw  rV P                  V4      w  r4pVP                  V4      VP                  V4      VP                  V4      3# rü   )r>   r­   Ú	_gcd_zeror   Ú
_gcd_monomrC  Ú_gcdrF  )r{   rž  r­   r@  ÚcffÚcfgr>  s   &&     r4   rK  ÚPolyElement.cofactors¯  sð   € ßŸØ—6‘6—;‘;ˆDØ˜tÐ#Ð#ßØŸ+™+ a›.‰KˆA�CØ˜3�;ÐßØŸ+™+ a›.‰KˆA�CØ˜3�;ÐÜ�‹V�qŒ[ØŸ,™, q›/‰KˆA�CØ˜3�;ÐÜ�‹V�qŒ[ØŸ,™, q›/‰KˆA�CØ˜3�;Ðà—I‘I˜a“L‰	ˆ‰6ˆAØ—f‘f˜Q“i‰ˆ�à—	‘	˜!“˜cŸk™k¨!›n¨c¯k©k¸!«nÐ=Ð=r6   c                	ó�   € V P                   P                  V P                   P                  r2VP                  '       d   WV3# V) W2) 3# r^   )r>   r‘   r­   rò  )r{   rž  r‘   r­   s   &&  r4   rO  ÚPolyElement._gcd_zeroÅ  s=   € Ø—F‘F—J‘J §¡§¡ˆTØ××ÐØ˜C�<Ðà�2�t˜T�>Ð!r6   c                	ó8  € V P                   pVP                  P                  pVP                  P                  pVP                  pVP
                  p\        V P                  4       4      ^ ,          w  rxYxr©VP                  4        F  w  r¼V! W›4      p	V! W¬4      p
K  	  V P                  Wš3.4      pV P                  V! Wy4      V! WŠ4      3.4      pT P                  VP                  4        UUu. uF  w  r¼V! W¹4      V! WÊ4      3NK  	  upp4      pWÞV3# u uppi r|   )	r>   r<   rž   rq  rŸ   r™   rG   rh  rŒ   )r{   rž  r>   Ú
ground_gcdÚ
ground_quorŸ   r™   ÚmfÚcfÚ_mgcdÚ_cgcdr   r¡  r@  rR  rS  s   &&              r4   rP  ÚPolyElement._gcd_monomÌ  sü   € Ø�v‰vˆØ—[‘[—_‘_ˆ
Ø—[‘[—_‘_ˆ
Ø×(Ñ(ˆØ×*Ñ*ˆÜ�a—k‘k“mÓ$ QÕ'‰ˆØˆuØ—k‘k–m‰FˆBÙ  Ó+ˆEÙ˜uÓ)ŠEñ $ð �E‰E�E�>Ð"Ó#ˆØ�e‰e‘m BÓ.±
¸2Ó0EÐFÐGÓHˆØ�e‰eÐUV×U`ÑU`ÔUbÔcÑUbÉ6È2‘m BÓ.±
¸2Ó0EÓFÑUbÒcÓdˆØ�sˆ{Ðùó ds   Ã/D
c                	óð   € V P                   pVP                  P                  '       d   V P                  V4      # VP                  P                  '       d   V P                  V4      # VP                  W4      # r^   )r>   r<   Úis_QQÚ_gcd_QQr&  Ú_gcd_ZZÚdmp_inner_gcd)r{   rž  r>   s   && r4   rQ  ÚPolyElement._gcdÜ  sX   € Ø�v‰vˆà�;‰;××ÐØ—9‘9˜Q“<ÐØ�[‰[××ÐØ—9‘9˜Q“<Ðà×%Ñ% aÓ+Ð+r6   c                	ó   € \        W4      # r^   r   rL  s   &&r4   rb  ÚPolyElement._gcd_ZZæ  s   € Ü�a‹|Ðr6   c                	ój  € T pVP                   pVP                  VP                  P                  4       R 7      pVP	                  4       w  rRVP	                  4       w  raVP                  V4      pVP                  V4      pVP                  V4      w  rxp	VP                  V4      pVP                  VP                  4       rzVP                  V4      P                  VP                  P                  W¥4      4      pV	P                  V4      P                  VP                  P                  W¦4      4      p	WxV	3# )r  )r>   rÎ   r<   r~  r„  rr  rb  rå  r  r¸  rq  )r¯   rž  r{   r>   rp  r[  r¡  r@  rR  rS  rX   s   &&         r4   ra  ÚPolyElement._gcd_QQé  së   € ØˆØ�v‰vˆØ—:‘: T§[¡[×%9Ñ%9Ó%;�:Ó<ˆà—‘Ó ‰ˆØ—‘Ó ‰ˆà�J‰J�xÓ ˆØ�J‰J�xÓ ˆà—i‘i “l‰ˆ�à�J‰J�tÓˆØ�t‰t�Q—W‘W“Yˆ1à�l‰l˜4Ó ×+Ñ+¨D¯K©K¯O©O¸AÓ,BÓCˆØ�l‰l˜4Ó ×+Ñ+¨D¯K©K¯O©O¸AÓ,BÓCˆà�sˆ{Ðr6   c                óN  € T pVP                   pV'       g   W#P                  3# VP                  pVP                  '       d   VP                  '       g   VP                  V4      w  rVpMÜVP                  VP                  4       R7      pVP                  4       w  r’VP                  4       w  r¡VP                  V4      pVP                  V4      pVP                  V4      w  rVpVP                  P                  W©4      w  rZp	VP                  V4      pVP                  V4      pVP                  V
4      pVP                  V	4      pVP                  4       pW´P                  8X  d    Wg3# W´P                  ) 8X  d	   V) V) rvWg3# VP                  V4      pVP                  V4      pWg3# )zÈ
Cancel common factors in a rational function ``f/g``.

Examples
========

>>> from sympy.polys import ring, ZZ
>>> R, x,y = ring("x,y", ZZ)

>>> (2*x**2 - 2).cancel(x**2 - 2*x + 1)
(2*x + 2, x - 1)

r  )r>   r‘   r<   r|  r}  rK  rÎ   r~  r„  rr  r¸  Úcanonical_unit)r¯   rž  r{   r>   r<   rí  r6  rª  rp  ÚcqÚcpÚus   &&          r4   ÚcancelÚPolyElement.cancelþ  si  € ð ˆØ�v‰vˆçØ—h‘h�;Ðà—‘ˆà——� F×$9×$9Ð$9Ø—k‘k !“n‰GˆA‘!à—z‘z¨¯©Ó):�zÓ;ˆHà—N‘NÓ$‰EˆBØ—N‘NÓ$‰EˆBà—
‘
˜8Ó$ˆAØ—
‘
˜8Ó$ˆAà—k‘k !“n‰GˆA�!Ø Ÿ™×1Ñ1°"Ó9‰IˆA�2à—
‘
˜4Ó ˆAØ—
‘
˜4Ó ˆAà—‘˜RÓ ˆAØ—‘˜RÓ ˆAð
 ×ÑÓˆØ—
‘
Œ?Øð ˆtˆð —:‘:�+ÔØ�2˜�rˆqð
 ˆtˆð —‘˜Q“ˆAØ—‘˜Q“ˆAàˆtˆr6   c                	ód   € V P                   P                  pVP                  V P                  4      # r^   )r>   r<   rj  rå  )r{   r<   s   & r4   rj  ÚPolyElement.canonical_unit6	  s$   € Ø—‘—‘ˆØ×$Ñ$ Q§T¡TÓ*Ð*r6   c                ó.  € V P                   pVP                  V4      pVP                  V4      pVP                  pV P	                  4        FF  w  rgWc,          '       g   K  VP                  Wd4      pVP                  WvV,          ,          4      WX&   KH  	  V# )zÙComputes partial derivative in ``x``.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ

>>> _, x, y = ring("x,y", ZZ)
>>> p = x + x**2*y**3
>>> p.diff(x)
2*x*y**3 + 1

)r>   r  r¬   r­   rh  r™   rã   )	r{   rº  r>   r°   rW   rž  r±   rç   Úes	   &&       r4   ÚdiffÚPolyElement.diff:	  sy   € ð �v‰vˆØ�J‰J�q‹MˆØ×Ñ Ó"ˆØ�I‰IˆØŸ;™;ž=‰KˆDØ�wŽwØ×&Ñ& tÓ/�Ø—‘ u°!­W¥}Ó5�“ñ )ð ˆr6   c                	ó0  € ^ \        V4      u;8  d   V P                  P                  8:  d<   M M8V P                  \	        \        V P                  P                  V4      4      4      # \        RV P                  P                  : R\        V4      : 24      h)r}   z expected at least 1 and at most z values, got )r   r>   rn   ÚevaluaterG   rL   r:   rò   )r{   rJ   s   &*r4   rS  ÚPolyElement.__call__S	  sb   € ØŒs�6‹{Ö*˜aŸf™fŸl™l×*Ø—:‘:œd¤3 q§v¡v§{¡{°FÓ#;Ó<Ó=Ð=åÐTU×TZÑTZ×T`ÔT`ÔbeÐflÕbmÐnÓoÐor6   c                	ób  € T p\        V\        4      '       dl   Vfh   V^ ,          VR,          uw  rBpVP                  WB4      pV'       g   V# V UUu. uF  w  rRVP                  V4      V3NK  	  pppVP                  V4      # VP                  pVP                  V4      pVP                  P                  V4      pVP                  ^8X  dI   VP                  P                  pVP                  4        F  w  w  ršWŠW),          ,          ,          pK  	  V# VP                  V4      P                  pVP                  4        Fe  w  rÊWÇ,          VR V WÇ^,           R  ,           rÉW¢V	,          ,          p
WË9   d"   W«V,          ,           p
V
'       d   W«V&   KS  W¼ KW  V
'       g   Ka  W«V&   Kg  	  V# u uppi )NrÇ  )r_   rG   rw  r  r>   r  r<   rà   rn   r­   rh  )r¯   rº  rr   r{   ÚXÚYr>   r°   ÚresultrJ  rç   r²   rë   s   &&&          r4   rw  ÚPolyElement.evaluateY	  se  € Øˆä�aœ×Ò 1¢9Ø˜!�˜a �eˆI‰FˆQ�AØ—
‘
˜1Ó ˆAçØ�á34Ô6±1©¨!�q—v‘v˜a“y !“n±1�Ñ6Ø—z‘z !“}Ð$à�v‰vˆØ�J‰J�q‹MˆØ�K‰K×Ñ Ó"ˆà�:‰:˜Œ?Ø—[‘[×%Ñ%ˆFà Ÿ{™{ž}‘‘�Ø ¥�*Õ$’ñ  -ð ˆMà—9‘9˜Q“<×$Ñ$ˆDà !§¡¦‘�Ø �8 U¨2¨A Y°¸µs°t°Õ%<�5Ø �d�
�à”=Ø!¨¥KÕ/�EçØ&+˜U›à šKç‘uØ&+˜U›ñ !.ð ˆKùóA 7s   ÁF+c                	óÒ  € T p\        V\        4      '       d#   Vf   V F  w  rBVP                  WB4      pK  	  V# VP                  pVP	                  V4      pVP
                  P                  V4      pVP                  ^8X  dX   VP
                  P                  pVP                  4        F  w  w  r‰WyW(,          ,          ,          pK  	  VP                  V4      # VP                  p
VP                  4        Fl  w  r¹W¶,          VR V R,           W¶^,           R  ,           r¸W’V,          ,          p	Wº9   d"   WšV,          ,           p	V	'       d   WšV&   KZ  W« K^  V	'       g   Kh  WšV&   Kn  	  V
# )Nr|   )r_   rG   Úsubsr>   r  r<   rà   rn   r­   rh  rè   )r¯   rº  rr   r{   rz  r>   r°   r|  rJ  rç   r²   rë   s   &&&         r4   r  ÚPolyElement.subs…	  s'  € Øˆä�aœ×Ò 1¢9Û‘�Ø—F‘F˜1“L’ñ àˆHà�v‰vˆØ�J‰J�q‹MˆØ�K‰K×Ñ Ó"ˆà�:‰:˜Œ?Ø—[‘[×%Ñ%ˆFà Ÿ{™{ž}‘‘�Ø ¥�*Õ$’ñ  -ð —?‘? 6Ó*Ð*à—9‘9ˆDà !§¡¦‘�Ø �8 U¨2¨A Y°Õ%5¸À½c¸d¸Õ%C�5Ø �d�
�à”=Ø!¨¥KÕ/�EçØ&+˜U›à šKç‘uØ&+˜U›ñ !.ð ˆKr6   c                ó8  aaa€ V P                  4       pVP                  pVP                  pV'       g   WP                  . 3# \	        V4       Uu. uF  qBP                  V^,           4      NK  	  upo/ oVV3R lp\        \	        V^,
          4      4      p\        \	        V^ R4      4      pVP                  pV'       Ed4   RRRrºp	\        VP                  4       4       Ft  w  pw  op\        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       g   KK  \        R \        VS4       4       4      pWÙ8”  g   Ko  TSTrºp	Kv  	  V	R8w  d   Y«uopMM�. p\        SSR,          R	,           4       F  w  ppVP                  VV,
          4       K   	  W‚P                  \        V4      V4      ,          pTp\        V4       F  w  rCVV! WC4      ,          pK  	  VV,          pEK<  \        \        VP                  S4      4      pW�V3# u upi )
a  
Rewrite *self* in terms of elementary symmetric polynomials.

Explanation
===========

If this :py:class:`~.PolyElement` belongs to a ring of $n$ variables,
we can try to write it as a function of the elementary symmetric
polynomials on $n$ variables. We compute a symmetric part, and a
remainder for any part we were not able to symmetrize.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> R, x, y = ring("x,y", ZZ)

>>> f = x**2 + y**2
>>> f.symmetrize()
(x**2 - 2*y, 0, [(x, x + y), (y, x*y)])

>>> f = x**2 - y**2
>>> f.symmetrize()
(x**2 - 2*y, -2*y**2, [(x, x + y), (y, x*y)])

Returns
=======

Triple ``(p, r, m)``
    ``p`` is a :py:class:`~.PolyElement` that represents our attempt
    to express *self* as a function of elementary symmetric
    polynomials. Each variable in ``p`` stands for one of the
    elementary symmetric polynomials. The correspondence is given
    by ``m``.

    ``r`` is the remainder.

    ``m`` is a list of pairs, giving the mapping from variables in
    ``p`` to elementary symmetric polynomials.

    The triple satisfies the equation ``p.compose(m) + r == self``.
    If the remainder ``r`` is zero, *self* is symmetric. If it is
    nonzero, we were not able to represent *self* as symmetric.

See Also
========

sympy.polys.polyfuncs.symmetrize

References
==========

.. [1] Lauer, E. Algorithms for symmetrical polynomials, Proc. 1976
    ACM Symp. on Symbolic and Algebraic Computing, NY 242-247.
    https://dl.acm.org/doi/pdf/10.1145/800205.806342

c                óP   <€ W3S9  d   SV ,          V,          SW3&   SW3,          # r^   r2   )r°   rJ  Úpoly_powersrY   s   &&€€r4   Úget_poly_powerÚ.PolyElement.symmetrize.<locals>.get_poly_powerñ	  s.   ø€ Øˆv˜[Ô(Ø&+¨A¥h°¥k�˜Q˜FÑ#Ø ˜vÕ&Ð&r6   Nc              3  óX   <"  € T F  pSV,          SV^,           ,          8¬  x € K!  	  R# 5ir  r2   )rb   r°   rë   s   & €r4   rd   Ú)PolyElement.symmetrize.<locals>.<genexpr>ÿ	  s"   øé € ÐA¹°A�u˜Q•x 5¨¨Q­¥<Ö/»ùs   ƒ'*FTc              3  ó6   "  € T F  w  rW,          x € K  	  R # 5ir^   r2   )rb   rJ  rW   s   &  r4   rd   r‡   
  s   é € Ð EÑ1D©¨ §¢Ó1Dùs   ‚rÇ  r  r|   )r»   r>   rn   r­   r«   rK  rG   r  rq  ri   rz   rL   r®   ræ   r~   r:   )r¯   r{   r>   rJ  r°   r„  r  ÚweightsÚ	symmetricÚ_heightÚ_monomÚ_coeffrç   ÚheightÚ	exponentsr¢  Úm2Úproductr  rë   rƒ  rY   s   &                  @@@r4   Ú
symmetrizeÚPolyElement.symmetrize¬	  sÄ  ú€ ðv �I‰I‹KˆØ�v‰vˆØ�J‰JˆçØ—i‘i Ð#Ð#ä38¸´8Ó<±8¨a×$Ñ$ Q q¥SÖ)±8Ñ<ˆàˆö	'ô
 ”u˜Q �U“|Ó$ˆÜ”u˜Q  2“Ó'ˆà—I‘Iˆ	çˆaØ&(¨$°˜VˆGä%.¨q¯w©w«yÖ%9Ñ!�‘>�E˜5ß“3ÔA¹ÓA—3—3’3ÔA¹ÓA×AÔAÜ Ñ E´°W¸eÔ1DÓ EÓE�FàÖ'Ø28¸%À¨˜©ñ &:ð ˜"Œ}Ø%��‘uààˆIÜ˜e U¨2¥Y°Õ%5Ö6‘��BØ× Ñ   b¥Ö)ñ 7ð Ÿ™¤u¨YÓ'7¸Ó?Õ?ˆIàˆGÜ! )Ö,‘�Ø™>¨!Ó/Õ/’ñ -à��L‹Aä”s˜4Ÿ9™9 eÓ,Ó-ˆà˜WÐ$Ð$ùòS =s   Á Hc                	óä  a€ V P                   pVP                  p\        \        VP                  \        VP                  4      4      4      oVe   W3.pMc\        V\        4      '       d   \        V4      pMA\        V\        4      '       d!   \        VP                  4       V3R lR7      pM\        R4      h\        V4       F$  w  pw  rSV,          VP                  V4      3WV&   K&  	  V P                  4        Fq  w  r‰\        V4      pVP                  p
V F+  w  r·W‹,          ^ uqÈV&   V'       g   K  W§V,          ,          p
K-  	  V
P!                  \#        V4      V	34      p
WJ,          pKs  	  V# )Nc                ó$   <€ SV ^ ,          ,          # r|   r2   )r‚  Úgens_maps   &€r4   rt   Ú%PolyElement.compose.<locals>.<lambda>$
  s   ø€ ¸xÈÈ!Í¾~r6   rx   z9expected a generator, value pair a sequence of such pairs)r>   r­   rK   rL   r:   r«   rn   r_   rG   rè  rM   rò   r  rõ   rh  r‘   r  r~   )r{   rº  rr   r>   r²   Úreplacementsr‚  rž  rë   rç   Úsubpolyr°   rJ  r–  s   &&&          @r4   rB  ÚPolyElement.compose
  s+  ø€ Ø�v‰vˆØ�y‰yˆÜœ˜DŸI™I¤u¨T¯Z©ZÓ'8Ó9Ó:ˆàŠ=Ø˜F˜8‰Lä˜!œT×"Ò"Ü# A›w‘Ü˜Aœt×$Ò$Ü% a§g¡g£iÔ5MÔN‘ä Ð!\Ó]Ð]ä" <Ö0‰IˆA‰v�Ø'¨�{¨D¯M©M¸!Ó,<Ð=ˆL‹Oñ 1ð ŸK™KžM‰LˆEÜ˜“KˆEØ—h‘hˆGã$‘�Ø#�h¨��˜‘8ß‘1Ø !�t•O’Gñ %ð
 ×&Ñ&¬¨e«°eÐ'<Ó=ˆGØ�OŠDñ *ð ˆr6   c                ó¸  € T pVP                   P                  V4      pVP                  4        UUu. uF  w  rVWT,          V8X  g   K  WV3NK  	  pppV'       g   VP                   P                  # \	        V!  w  r‰V Uu. uF  qURV R,           WT^,           R ,           NK   	  ppVP                   P                  \        \	        W‰4      4      4      # u uppi u upi )am  
Coefficient of ``self`` with respect to ``x**deg``.

Treating ``self`` as a univariate polynomial in ``x`` this finds the
coefficient of ``x**deg`` as a polynomial in the other generators.

Parameters
==========

x : generator or generator index
    The generator or generator index to compute the expression for.
deg : int
    The degree of the monomial to compute the expression for.

Returns
=======

:py:class:`~.PolyElement`
    The coefficient of ``x**deg`` as a polynomial in the same ring.

Examples
========

>>> from sympy.polys import ring, ZZ
>>> R, x, y, z = ring("x, y, z", ZZ)

>>> p = 2*x**4 + 3*y**4 + 10*z**2 + 10*x*z**2
>>> deg = 2
>>> p.coeff_wrt(2, deg) # Using the generator index
10*x + 10
>>> p.coeff_wrt(z, deg) # Using the generator
10*x + 10
>>> p.coeff(z**2) # shows the difference between coeff and coeff_wrt
10

See Also
========

coeff, coeffs

Nr|   )r>   r  rh  r­   rL   rN   rK   )
r¯   rº  Údegr6  r°   rW   rX   rq  rñ  rT   s
   &&&       r4   Ú	coeff_wrtÚPolyElement.coeff_wrt9
  sµ   € ðT ˆØ�F‰F�L‰L˜‹OˆØ$%§K¡K¤MÔA¡M™D˜A°QµT¸S±[”�!“¡MˆÑAçØ—6‘6—;‘;Ðä˜e™‰ˆÙ4:Ó;±F¨q�B�Q�%˜$•,  q¥5 6 ×*Ð*±FˆÐ;Ø�v‰v×Ñ¤¤S¨Ó%8Ó 9Ó:Ð:ùó Bùò <s   ±CÁCÁ>$Cc                ó  € T pVP                   P                  V4      pVP                  V4      pVP                  V4      pV^ 8  d   \        R4      hY4rvWE8  d   V# WE,
          ^,           pVP	                  W%4      p	VP                   P
                  V,          p
 VP	                  W'4      pWu,
          V^,
          rŒWi,          pW,          W¬,          ,          pWÞ,
          pVP                  V4      pWu8  g   K`   Y˜,          pYo,          # )ag  
Pseudo-remainder of the polynomial ``self`` with respect to ``g``.

The pseudo-quotient ``q`` and pseudo-remainder ``r`` with respect to
``z`` when dividing ``f`` by ``g`` satisfy ``m*f = g*q + r``,
where ``deg(r,z) < deg(g,z)`` and
``m = LC(g,z)**(deg(f,z) - deg(g,z)+1)``.

See :meth:`pdiv` for explanation of pseudo-division.


Parameters
==========

g : :py:class:`~.PolyElement`
    The polynomial to divide ``self`` by.
x : generator or generator index, optional
    The main variable of the polynomials and default is first generator.

Returns
=======

:py:class:`~.PolyElement`
    The pseudo-remainder polynomial.

Raises
======

ZeroDivisionError : If ``g`` is the zero polynomial.

Examples
========

>>> from sympy.polys import ring, ZZ
>>> R, x, y = ring("x, y", ZZ)

>>> f = x**2 + x*y
>>> g = 2*x + 2
>>> f.prem(g) # first generator is chosen by default if it is not given
-4*y + 4
>>> f.rem(g) # shows the difference between prem and rem
x**2 + x*y
>>> f.prem(g, y) # generator is given
0
>>> f.prem(g, 1) # generator index is given
0

See Also
========

pdiv, pquo, pexquo, sympy.polys.domains.ring.Ring.rem

r\  ©r>   r  r»  r]  r�  r:   )r¯   rž  rº  r{   ÚdfÚdgr“  ÚdrrB  Úlc_gÚxpÚlc_rrW  ÚRrœ  rX   s   &&&             r4   ÚpremÚPolyElement.premn
  sÞ   € ðl ˆØ�F‰F�L‰L˜‹OˆØ�X‰X�a‹[ˆØ�X‰X�a‹[ˆà�Œ6Ü#Ð$9Ó:Ð:àˆ2àŒ7ØˆHà�G�a�Kˆà�{‰{˜1Ó!ˆà�V‰V�[‰[˜�^ˆàà—;‘;˜qÓ%ˆDØ•7˜A �Eˆqà•ˆAØ•˜2�5Õ ˆAØ•ˆAà—‘˜!“ˆBàŽwØà�Iˆà�uˆr6   c                óp  € T pVP                   P                  V4      pVP                  V4      pVP                  V4      pV^ 8  d   \        R4      hY#Tr‡pWE8  d   Wg3# WE,
          ^,           p	VP	                  W%4      p
VP                   P
                  V,          p VP	                  W(4      pW…,
          V	^,
          r�Wj,          pWìW½,          ,          ,           pWz,          pW,          W½,          ,          pVV,
          pVP                  V4      pW…8  g   K~   Y©,          pTT,          pTT,          pYg3# )aœ	  
Computes the pseudo-division of the polynomial ``self`` with respect to ``g``.

The pseudo-division algorithm is used to find the pseudo-quotient ``q``
and pseudo-remainder ``r`` such that ``m*f = g*q + r``, where ``m``
represents the multiplier and ``f`` is the dividend polynomial.

The pseudo-quotient ``q`` and pseudo-remainder ``r`` are polynomials in
the variable ``x``, with the degree of ``r`` with respect to ``x``
being strictly less than the degree of ``g`` with respect to ``x``.

The multiplier ``m`` is defined as
``LC(g, x) ^ (deg(f, x) - deg(g, x) + 1)``,
where ``LC(g, x)`` represents the leading coefficient of ``g``.

It is important to note that in the context of the ``prem`` method,
multivariate polynomials in a ring, such as ``R[x,y,z]``, are treated
as univariate polynomials with coefficients that are polynomials,
such as ``R[x,y][z]``. When dividing ``f`` by ``g`` with respect to the
variable ``z``, the pseudo-quotient ``q`` and pseudo-remainder ``r``
satisfy ``m*f = g*q + r``, where ``deg(r, z) < deg(g, z)``
and ``m = LC(g, z)^(deg(f, z) - deg(g, z) + 1)``.

In this function, the pseudo-remainder ``r`` can be obtained using the
``prem`` method, the pseudo-quotient ``q`` can
be obtained using the ``pquo`` method, and
the function ``pdiv`` itself returns a tuple ``(q, r)``.


Parameters
==========

g : :py:class:`~.PolyElement`
    The polynomial to divide ``self`` by.
x : generator or generator index, optional
    The main variable of the polynomials and default is first generator.

Returns
=======

:py:class:`~.PolyElement`
    The pseudo-division polynomial (tuple of ``q`` and ``r``).

Raises
======

ZeroDivisionError : If ``g`` is the zero polynomial.

Examples
========

>>> from sympy.polys import ring, ZZ
>>> R, x, y = ring("x, y", ZZ)

>>> f = x**2 + x*y
>>> g = 2*x + 2
>>> f.pdiv(g) # first generator is chosen by default if it is not given
(2*x + 2*y - 2, -4*y + 4)
>>> f.div(g) # shows the difference between pdiv and div
(0, x**2 + x*y)
>>> f.pdiv(g, y) # generator is given
(2*x**3 + 2*x**2*y + 6*x**2 + 2*x*y + 8*x + 4, 0)
>>> f.pdiv(g, 1) # generator index is given
(2*x**3 + 2*x**2*y + 6*x**2 + 2*x*y + 8*x + 4, 0)

See Also
========

prem
    Computes only the pseudo-remainder more efficiently than
    `f.pdiv(g)[1]`.
pquo
    Returns only the pseudo-quotient.
pexquo
    Returns only an exact pseudo-quotient having no remainder.
div
    Returns quotient and remainder of f and g polynomials.

r\  r   )r¯   rž  rº  r{   r¡  r¢  rª  r“  r£  rB  r¤  r¥  r¦  rW  ÚQr§  rœ  rX   s   &&&               r4   ÚpdivÚPolyElement.pdivÉ
  s  € ð` ˆØ�F‰F�L‰L˜‹Oˆà�X‰X�a‹[ˆØ�X‰X�a‹[ˆà�Œ6Ü#Ð$9Ó:Ð:à˜ˆbˆàŒ7Ø�4ˆKà�G�a�KˆØ�{‰{˜1Ó!ˆà�V‰V�[‰[˜�^ˆàà—;‘;˜qÓ%ˆDØ•7˜A �Eˆqà•ˆAà˜2�5•LÕ ˆAà•ˆAà•˜2�5Õ ˆAà�A•ˆAà—‘˜!“ˆBàŽwØà�Gˆà��EˆØ��Eˆàˆtˆr6   c                ó6   € T pVP                  W4      ^ ,          # )a·  
Polynomial pseudo-quotient in multivariate polynomial ring.

Examples
========
>>> from sympy.polys import ring, ZZ
>>> R, x,y = ring("x,y", ZZ)

>>> f = x**2 + x*y
>>> g = 2*x + 2*y
>>> h = 2*x + 2
>>> f.pquo(g)
2*x
>>> f.quo(g) # shows the difference between pquo and quo
0
>>> f.pquo(h)
2*x + 2*y - 2
>>> f.quo(h) # shows the difference between pquo and quo
0

See Also
========

prem, pdiv, pexquo, sympy.polys.domains.ring.Ring.quo

)r¬  )r¯   rž  rº  r{   s   &&& r4   ÚpquoÚPolyElement.pquoG  s   € ð6 ˆØ�v‰v�a‹|˜A�Ðr6   c                ój   € T pVP                  W4      w  rEVP                  '       d   V# \        W14      h)a<  
Polynomial exact pseudo-quotient in multivariate polynomial ring.

Examples
========
>>> from sympy.polys import ring, ZZ
>>> R, x,y = ring("x,y", ZZ)

>>> f = x**2 + x*y
>>> g = 2*x + 2*y
>>> h = 2*x + 2
>>> f.pexquo(g)
2*x
>>> f.exquo(g) # shows the difference between pexquo and exquo
Traceback (most recent call last):
...
ExactQuotientFailed: 2*x + 2*y does not divide x**2 + x*y
>>> f.pexquo(h)
Traceback (most recent call last):
...
ExactQuotientFailed: 2*x + 2 does not divide x**2 + x*y

See Also
========

prem, pdiv, pquo, sympy.polys.domains.ring.Ring.exquo

)r¬  rú  r#   )r¯   rž  rº  r{   rª  r“  s   &&&   r4   ÚpexquoÚPolyElement.pexquoe  s1   € ð: ˆØ�v‰v�a‹|‰ˆà�9�9ˆ9ØˆHä% aÓ+Ð+r6   c                óô  € T pVP                   P                  V4      pVP                  V4      pVP                  V4      pWE8  d   YrYTrTV^ 8X  d   ^ ^ .# V^ 8X  d   V^.# W1.pWE,
          pRV^,           ,          pVP                  W4      p	W˜,          p	VP	                  W%4      p
W§,          p^V.pV) pV	'       d½   V	P                  V4      pVP                  V	4       WWÕV,
          3w  r1rWV
) W·,          ,          pVP                  W4      p	V	P                  V4      p	VP	                  W-4      p
V^8”  d,   V
) V,          pW·^,
          ,          pVP                  V4      pMV
) pVP                  V) 4       KÄ  V# )aø  
Computes the subresultant PRS of two polynomials ``self`` and ``g``.

Parameters
==========

g : :py:class:`~.PolyElement`
    The second polynomial.
x : generator or generator index
    The variable with respect to which the subresultant sequence is computed.

Returns
=======

R : list
    Returns a list polynomials representing the subresultant PRS.

Examples
========

>>> from sympy.polys import ring, ZZ
>>> R, x, y = ring("x, y", ZZ)

>>> f = x**2*y + x*y
>>> g = x + y
>>> f.subresultants(g) # first generator is chosen by default if not given
[x**2*y + x*y, x + y, y**3 - y**2]
>>> f.subresultants(g, 0) # generator index is given
[x**2*y + x*y, x + y, y**3 - y**2]
>>> f.subresultants(g, y) # generator is given
[x**2*y + x*y, x + y, x**3 + x**2]

r  )r>   r  r»  r¨  r�  r®   ry  )r¯   rž  rº  r{   rJ  rW   r§  Údrs   r@  ÚlcrX   ÚSr‚  r6  rª  s   &&&             r4   ÚsubresultantsÚPolyElement.subresultantsŠ  s`  € ðD ˆØ�F‰F�L‰L˜‹OˆØ�H‰H�Q‹KˆØ�H‰H�Q‹KˆàŒ5ØˆqØˆqà�Œ6Ø�q�6ˆMà�Œ6Ø�q�6ˆMàˆFˆà�EˆØ�Q˜•U�Oˆð �F‰F�1‹LˆØ�Eˆð �[‰[˜Óˆà�Gˆà�ˆFˆàˆBˆçØ—‘˜“ˆAà�H‰H�QŒKØ˜q a¥%˜‰JˆA�!à��a•f•ˆAØ—‘�q“ˆAØ—‘˜“
ˆAà—‘˜QÓ"ˆBà�1ŒuØ�S˜Q•J�Ø˜a�%•L�Ø—G‘G˜A“J‘à�C�à�H‰H�a�RŽLàˆr6   c                	ó8   € V P                   P                  W4      # r^   )r>   Údmp_half_gcdexrL  s   &&r4   Ú
half_gcdexÚPolyElement.half_gcdexç  s   € Ø�v‰v×$Ñ$ QÓ*Ð*r6   c                	ó8   € V P                   P                  W4      # r^   )r>   Ú	dmp_gcdexrL  s   &&r4   ÚgcdexÚPolyElement.gcdexê  ó   € Ø�v‰v×Ñ Ó%Ð%r6   c                	ó8   € V P                   P                  W4      # r^   )r>   Údmp_resultantrL  s   &&r4   Ú	resultantÚPolyElement.resultantí  s   € Ø�v‰v×#Ñ# AÓ)Ð)r6   c                	ó8   € V P                   P                  V 4      # r^   )r>   Údmp_discriminantrù  s   &r4   ÚdiscriminantÚPolyElement.discriminantð  s   € Ø�v‰v×&Ñ& qÓ)Ð)r6   c                	ó†   € V P                   P                  '       d   V P                   P                  V 4      # \        R 4      h)zpolynomial decomposition)r>   r,  Údup_decomposer$   rù  s   &r4   Ú	decomposeÚPolyElement.decomposeó  s3   € Ø�6‰6××ÐØ—6‘6×'Ñ'¨Ó*Ð*ä-Ð.HÓIÐIr6   c                	ó†   € V P                   P                  '       d   V P                   P                  W4      # \        R 4      h)zshift: use shift_list instead)r>   r,  Ú	dup_shiftr$   ©r{   rr   s   &&r4   ÚshiftÚPolyElement.shiftù  s3   € Ø�6‰6××ÐØ—6‘6×#Ñ# AÓ)Ð)ä-Ð.MÓNÐNr6   c                	ó8   € V P                   P                  W4      # r^   )r>   Ú	dmp_shiftrÑ  s   &&r4   Ú
shift_listÚPolyElement.shift_listÿ  rÂ  r6   c                	ó†   € V P                   P                  '       d   V P                   P                  V 4      # \        R 4      h)zsturm sequence)r>   r,  Ú	dup_sturmr$   rù  s   &r4   ÚsturmÚPolyElement.sturm  s3   € Ø�6‰6××ÐØ—6‘6×#Ñ# AÓ&Ð&ä-Ð.>Ó?Ð?r6   c                	ó8   € V P                   P                  V 4      # r^   )r>   Údmp_gff_listrù  s   &r4   Úgff_listÚPolyElement.gff_list  ó   € Ø�v‰v×"Ñ" 1Ó%Ð%r6   c                	ó8   € V P                   P                  V 4      # r^   )r>   Údmp_normrù  s   &r4   ÚnormÚPolyElement.norm  s   € Ø�v‰v�‰˜qÓ!Ð!r6   c                	ó8   € V P                   P                  V 4      # r^   )r>   Údmp_sqf_normrù  s   &r4   Úsqf_normÚPolyElement.sqf_norm  rà  r6   c                	ó8   € V P                   P                  V 4      # r^   )r>   Údmp_sqf_partrù  s   &r4   Úsqf_partÚPolyElement.sqf_part  rà  r6   c                	ó:   € V P                   P                  WR 7      # ))ri   )r>   Údmp_sqf_list)r{   ri   s   &&r4   Úsqf_listÚPolyElement.sqf_list  s   € Ø�v‰v×"Ñ" 1Ð"Ó.Ð.r6   c                	ó8   € V P                   P                  V 4      # r^   )r>   Údmp_factor_listrù  s   &r4   Úfactor_listÚPolyElement.factor_list  s   € Ø�v‰v×%Ñ% aÓ(Ð(r6   )rŠ   r>   r^   )F)�rƒ   rM  rN  rO  rP  rX  r`  rŒ   re  r¶   rŠ   rÁ   r»   rr  rv  ru  r„  rˆ  rÆ   rÉ   r“  r˜  r�  r   r¤  r§  rª  r®  r  rµ  r<  r¼  r¿  r`   rR  rà  r±  ræ  ré  rË  rï  rò  rö  rú  rý  r   r  r  r  r  r  r#  r&  r)  r.  r,  r4  r3  r?  r9  rH  rG  rF  rE  rb  r^  rk  rj  rs  rv  rz  rr  r‹  rš   ri  rq  ry  rŽ  r�  r»  r¿  rÆ  rÉ  r    rÏ  rç   r”  rå  rØ  rÜ  r›  rá  ré  rT   rñ  rq  r÷  r  rh  r  r  r  rT  r  r  r  r¸  r  r  r_  r#  r'  r`  r,  r2  r5  r9  rC  rF  rœ   rž   rK  rO  rP  rQ  rb  ra  rn  rj  rt  rS  rw  r  r’  rB  r�  r¨  r¬  r¯  r²  r¸  r¼  rÀ  rÅ  rÉ  rÍ  rÒ  rÖ  rÚ  rÞ  rã  rç  rë  rï  ró  rT  Ú__classcell__)rÑ   s   @r4   r‹   r‹   J  sU  ø† Ù?õòKò/ò%ò3ð €Eò	òò8>ò	=òMòò"ò4ò4ôGò0)ò"òòòòò	2òò*>òò"Hòò.ð` ñ+ó ð+ð ñMó ðMð ñ=ó ð=ð ñó ðð ñ5ó ð5ð ñ5ó ð5ð ñ8ó ð8ð ñ8ó ð8ð ñó ðð ñó ðð ñ*ó ð*ð ñ1ó ð1ð ñ@ó ð@ð ñ@ó ð@ð ñ#ó ð#ð
 ñ+ó ð+ð
 ñGó ðGòRòò4òlò(4òlò82òhò:4(òlò ò:#òJ:ò,ò%ò,ò%ò,ò%ò, òòBJòX+òZò,ò*òX#ôJ=ò 
?ô=ò 
?òò(5ò#BòJ5ð ñ4ó ð4ð ñó ðòð* ñ1ó ð1òò(	Pô;ô4;ô47ò4#ò!ò"ò#ò!ò"ò!òF	ò(ò&òòò

òò <òð$ €Jò
òPòòòòBòò !ò>ò,"òò ,òòò*6òp+òò2pô*ôX%òNk%ôZò@3;ôjYôv|ô|ô<#,ôJXòz+ò&ò*ò*òJòOò&ò@ò&ò"ò&ò&ô/÷)ð )r6   r‹   N)QrP  Ú
__future__r   Úoperatorr   r   r   r   r   r   Ú	functoolsr	   Útypesr
   Úsympy.core.cacher   Úsympy.core.exprr   Úsympy.core.intfuncr   Úsympy.core.symbolr   r   rh   Úsympy.core.sympifyr   r   Úsympy.ntheory.multinomialr   Úsympy.polys.compatibilityr   Úsympy.polys.constructorr   Úsympy.polys.densebasicr   r   r   Úsympy.polys.domains.domainr   Ú!sympy.polys.domains.domainelementr   Ú"sympy.polys.domains.polynomialringr   Úsympy.polys.heuristicgcdr   Úsympy.polys.monomialsr   Úsympy.polys.orderingsr   r    Úsympy.polys.polyerrorsr!   r"   r#   r$   Úsympy.polys.polyoptionsr€   r%   r‚   r&   Úsympy.polys.polyutilsr'   r(   r)   Úsympy.printing.defaultsr*   Úsympy.utilitiesr+   r,   Úsympy.utilities.iterablesr-   Úsympy.utilities.magicr.   r>   r@   rD   rZ   rk   r9   rK   r‹   r2   r6   r4   Ú<module>r     sö   ðÙ å "ç -× -Ý Ý å $Ý  Ý #ß 9ß 3Ý >Ý ,Ý 4ß CÑ CÝ -Ý ;Ý =Ý +Ý -ß 4÷6ó 6÷Gñ G÷=ñ =å 3ß +Ý 1Ý )àØ58ö !ó ð!ð< Ø!$ó ó ðð< Ø!$ó ó ðð< ñ2ó ð2òh@ôCˆ ô CôLN')�- °+¸tö N')r6   