Ë
    O/æj¤o ã                  ó  — U d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZmZmZ dd	lmZmZmZmZ dd
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb ddlcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZm ddlnmoZompZpmqZqmrZrmsZsmtZtmuZu ddlvmwZwmxZxmyZymzZz ddl{m|Z|m}Z}m~Z~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z† ddlm‡Z‡mˆZˆ de‰d<   edk(  r	ddlŠZŠeefZ‹ndZŠdZ‹ G d„ de
«      ZŒ G d„ deŒ«      Z� G d„ deŒ«      ZŽd„ Z� G d„ dee
«      Z�d „ Z‘ G d!„ d"e
«      Z’y)#z1OO layer for several polynomial representations. é    )Úannotations)ÚGROUND_TYPES)Úsympy_deprecation_warning)Úoo)ÚCantSympify)ÚPicklableWithSlotsÚ_sort_factors)ÚDomainÚZZÚQQ)ÚCoercionFailedÚExactQuotientFailedÚDomainErrorÚNotInvertible)!ÚninfÚdmp_validateÚ
dup_normalÚ
dmp_normalÚdup_convertÚdmp_convertÚdmp_from_sympyÚ	dup_stripÚdmp_degree_inÚdmp_degree_listÚdmp_negative_pÚdmp_ground_LCÚdmp_ground_TCÚdmp_ground_nthÚdmp_oneÚ
dmp_groundÚdmp_zeroÚ
dmp_zero_pÚ	dmp_one_pÚdmp_ground_pÚdup_from_dictÚdmp_from_dictÚdmp_to_dictÚdmp_deflateÚ
dmp_injectÚ	dmp_ejectÚdmp_terms_gcdÚdmp_list_termsÚdmp_excludeÚ	dup_sliceÚdmp_slice_inÚdmp_permuteÚdmp_to_tuple)Údmp_add_groundÚdmp_sub_groundÚdmp_mul_groundÚdmp_quo_groundÚdmp_exquo_groundÚdmp_absÚdmp_negÚdmp_addÚdmp_subÚdmp_mulÚdmp_sqrÚdmp_powÚdmp_pdivÚdmp_premÚdmp_pquoÚ
dmp_pexquoÚdmp_divÚdmp_remÚdmp_quoÚ	dmp_exquoÚdmp_add_mulÚdmp_sub_mulÚdmp_max_normÚdmp_l1_normÚdmp_l2_norm_squared)Údmp_clear_denomsÚdmp_integrate_inÚdmp_diff_inÚdmp_eval_inÚ
dup_revertÚdmp_ground_truncÚdmp_ground_contentÚdmp_ground_primitiveÚdmp_ground_monicÚdmp_composeÚdup_decomposeÚ	dup_shiftÚ	dmp_shiftÚdup_transformÚdmp_lift)
Údup_half_gcdexÚ	dup_gcdexÚ
dup_invertÚdmp_subresultantsÚdmp_resultantÚdmp_discriminantÚdmp_inner_gcdÚdmp_gcdÚdmp_lcmÚ
dmp_cancel)Údup_gff_listÚdmp_normÚ	dmp_sqf_pÚdmp_sqf_normÚdmp_sqf_partÚdmp_sqf_listÚdmp_sqf_list_include)Údup_cyclotomic_pÚdmp_irreducible_pÚdmp_factor_listÚdmp_factor_list_include)Údup_isolate_real_roots_sqfÚdup_isolate_real_rootsÚdup_isolate_all_roots_sqfÚdup_isolate_all_rootsÚdup_refine_real_rootÚdup_count_real_rootsÚdup_count_complex_rootsÚ	dup_sturmÚdup_cauchy_upper_boundÚdup_cauchy_lower_boundÚdup_mignotte_sep_bound_squared)ÚUnificationFailedÚPolynomialErrorztuple[Domain, ...]Ú_flint_domainsÚflintN© c                  óÚ  — e Zd ZdZdZdÏd„Zed„ «       Zed„ «       Z	d„ Z
ed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdÐd„ZdÐd„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!dÑd„Z"d „ Z#d!„ Z$dÏd"„Z%dÏd#„Z&dÏd$„Z'dÏd%„Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*„ Z-d+„ Z.dÐd,„Z/dÐd-„Z0d.„ Z1d/„ Z2d0„ Z3d1„ Z4d2„ Z5d3„ Z6d4„ Z7d5„ Z8d6„ Z9d7„ Z:d8„ Z;d9„ Z<d:„ Z=d;„ Z>d<„ Z?d=„ Z@d>„ ZAd?„ ZBd@„ ZCdA„ ZDdB„ ZEdC„ ZFdD„ ZGdE„ ZHdF„ ZIdG„ ZJdH„ ZKdI„ ZLdJ„ ZMdK„ ZNdL„ ZOdM„ ZPdN„ ZQdO„ ZRdP„ ZSdQ„ ZTdR„ ZUdS„ ZVdT„ ZWdU„ ZXdV„ ZYdW„ ZZdX„ Z[dÑdY„Z\dZ„ Z]d[„ Z^d\„ Z_d]„ Z`d^„ Zad_„ Zbd`„ Zcda„ Zddb„ Zedc„ Zfdd„ Zgde„ Zhdf„ ZidÒdg„Zjdh„ ZkdÒdi„Zldj„ ZmdÑdk„Zndl„ Zodm„ Zpdn„ Zqdo„ Zrdp„ Zsdq„ Ztdr„ Zuds„ Zvdt„ Zwdu„ Zxdv„ Zydw„ ZzdÐdx„Z{dÐdy„Z|dz„ Z}d{„ Z~d|„ Zd}„ Z€d~„ Z�d„ Z‚d€„ ZƒdÓd�„Z„d‚„ Z…dƒ„ Z†d„„ Z‡d…„ Zˆd†„ Z‰d‡„ ZŠdˆ„ Z‹d‰„ ZŒdŠ„ Z�d‹„ ZŽdŒ„ Z�d�„ Z�dŽ„ Z‘d�„ Z’d�„ Z“d‘„ Z”d’„ Z•d“„ Z–d”„ Z—d•„ Z˜d–„ Z™d—„ Zšd˜„ Z›d™„ Zœdš„ Z�d›„ Zždœ„ ZŸd�„ Z dž„ Z¡dÐdŸ„Z¢dÐd „Z£d¡„ Z¤d¢„ Z¥dÔd£„Z¦d¤„ Z§d¥„ Z¨d¦„ Z©d§„ ZªdÕd¨„Z«d©„ Z¬dÖdª„Z­dÖd«„Z®ed¬„ «       Z¯ed­„ «       Z°ed®„ «       Z±ed¯„ «       Z²ed°„ «       Z³ed±„ «       Z´ed²„ «       Zµed³„ «       Z¶ed´„ «       Z·edµ„ «       Z¸ed¶„ «       Z¹ed·„ «       Zºd¸„ Z»d¹„ Z¼dº„ Z½d»„ Z¾d¼„ Z¿d½„ ZÀd¾„ ZÁd¿„ ZÂdÀ„ ZÃdÁ„ ZÄdÂ„ ZÅdÃ„ ZÆdÄ„ ZÇdÅ„ ZÈdÆ„ ZÉdÇ„ ZÊdÐdÈ„ZËdÐdÉ„ZÌdÊ„ ZÍdË„ ZÎdÌ„ ZÏdÍ„ ZÐdÎ„ ZÑy)×ÚDMPú)Dense Multivariate Polynomials over `K`. r~   Nc                ó˜   — |€t        |«      \  }}n't        |t        «      st        dt	        |«      z  «      ‚| j                  |||«      S )Nzexpected list, got %s)r   Ú
isinstanceÚlistr   ÚtypeÚnew©ÚclsÚrepÚdomÚlevs       úZ/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/polys/polyclasses.pyÚ__new__zDMP.__new__�   sG   € àˆ;Ü# CÓ(‰HˆC‘Ü˜C¤Ô&Ü Ð!8¼4À»9Ñ!DÓEÐEà�w‰w�s˜C Ó%Ð%ó    c                ó„   — t         �$|dk(  r|t        v rt        j                  |||«      S t        j                  |||«      S ©Nr   )r}   r|   Ú	DUP_FlintÚ_newÚ
DMP_Pythonr‡   s       rŒ   r†   zDMP.new˜   s>   € ô ÐØ�aŠx˜C¤>Ñ1Ü —~‘~ c¨3°Ó4Ð4ä�‰˜s C¨Ó-Ð-rŽ   c                ó>   — t        ddd¬«       | j                  «       S )z!Get the representation of ``f``. ay  
        Accessing the ``DMP.rep`` attribute is deprecated. The internal
        representation of ``DMP`` instances can now be ``DUP_Flint`` when the
        ground types are ``flint``. In this case the ``DMP`` instance does not
        have a ``rep`` attribute. Use ``DMP.to_list()`` instead. Using
        ``DMP.to_list()`` also works in previous versions of SymPy.
        z1.13zdmp-rep)Údeprecated_since_versionÚactive_deprecations_target)r   Úto_list©Úfs    rŒ   r‰   zDMP.rep¤   s'   € ô 	"ð #ð &,Ø'0õ		
ð �y‰y‹{ÐrŽ   c                óÞ   — t         �ft        | t        «      rV| j                  dk(  rG| j                  t
        v r5t        j                  | j                  | j                  | j                  «      S | S )zÇConvert to DUP_Flint if possible.

        This method should be used when the domain or level is changed and it
        potentially becomes possible to convert from DMP_Python to DUP_Flint.
        r   )	r}   rƒ   r“   r‹   rŠ   r|   r‘   r†   Ú_repr˜   s    rŒ   Úto_bestzDMP.to_bestµ   sM   € ô ÐÜ˜!œZÔ(¨Q¯U©U°aªZ¸A¿E¹EÄ^Ñ<SÜ —}‘} Q§V¡V¨Q¯U©U°A·E±EÓ:Ð:àˆrŽ   c                óx   ‡‡— t        ‰t        «      sJ ‚t        |t        «      r|dk\  sJ ‚ˆˆfd„Š ‰||«       y )Nr   c                óˆ   •— t        | t        «      sJ ‚|dk(  rt        ˆfd„| D «       «      sJ ‚y | D ]  } ‰||dz
  «       Œ y )Nr   c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w©N)Úof_type)Ú.0ÚcrŠ   s     €rŒ   ú	<genexpr>z;DMP._validate_args.<locals>.validate_rep.<locals>.<genexpr>É   s   øè ø€ Ò7¨a˜3Ÿ;™; qŸ>Ñ7ùs   ƒé   )rƒ   r„   Úall)r‰   r‹   ÚrrŠ   Úvalidate_reps      €€rŒ   r¨   z(DMP._validate_args.<locals>.validate_repÆ   sK   ø€ Ü˜c¤4Ô(Ð(Ð(Ø�aŠxÜÓ7°3Ô7Ô7Ð7Ñ7àò -�AÙ   C¨!¡GÕ,ñ-rŽ   )rƒ   r
   Úint)rˆ   r‰   rŠ   r‹   r¨   s     ` @rŒ   Ú_validate_argszDMP._validate_argsÁ   s:   ù€ ä˜#œvÔ&Ð&Ð&Ü˜#œsÔ#¨¨qªÐ0Ð0õ	-ñ 	�S˜#ÕrŽ   c                óB   — t        |||«      }| j                  |||«      S r    )r&   r†   ©rˆ   r‰   r‹   rŠ   s       rŒ   Ú	from_dictzDMP.from_dictÐ   s#   € ä˜C  cÓ*ˆØ�w‰w�s˜C Ó%Ð%rŽ   c                ó@   — | j                  t        ||d|«      ||«      S )zCCreate an instance of ``cls`` given a list of native coefficients. N)r†   r   r¬   s       rŒ   Ú	from_listzDMP.from_listÕ   s"   € ð �w‰w”{ 3¨¨T°3Ó7¸¸cÓBÐBrŽ   c                ó>   — | j                  t        |||«      ||«      S )zBCreate an instance of ``cls`` given a list of SymPy coefficients. )r†   r   r¬   s       rŒ   Úfrom_sympy_listzDMP.from_sympy_listÚ   s    € ð �w‰w”~ c¨3°Ó4°c¸3Ó?Ð?rŽ   c           
     óN   —  | t        t        t        ||«      «      «      ||«      S r    )Údictr„   Úzip)rˆ   ÚmonomsÚcoeffsr‹   rŠ   s        rŒ   Úfrom_monoms_coeffszDMP.from_monoms_coeffsß   s"   € á”4œœS ¨Ó0Ó1Ó2°C¸Ó=Ð=rŽ   c                ó   — | j                   |k(  r| S | j                  st        €| j                  |«      S t	        | t
        «      r8|t        v r| j                  |«      S | j                  «       j                  |«      S t	        | t        «      r8|t        v r| j                  |«      j                  «       S | j                  |«      S t        d«      ‚)z0Convert ``f`` to a ``DMP`` over the new domain. zunreachable code)rŠ   r‹   r}   Ú_convertrƒ   r‘   r|   Úto_DMP_Pythonr“   Úto_DUP_FlintÚRuntimeError©r™   rŠ   s     rŒ   ÚconvertzDMP.convertã   s¦   € à�5‰5�CŠ<ØˆHØ�UŠU”e�mØ—:‘:˜c“?Ð"Ü˜œ9Ô%Ø”nÑ$Ø—z‘z #“Ð&à—‘Ó(×1Ñ1°#Ó6Ð6Ü˜œ:Ô&Ø”nÑ$Ø—z‘z #“×3Ñ3Ó5Ð5à—z‘z #“Ð&äÐ1Ó2Ð2rŽ   c                ó   — t         ‚r    ©ÚNotImplementedErrorr½   s     rŒ   r¹   zDMP._convertö   ó   € Ü!Ð!rŽ   c                ó.   — t        t        |«      ||«      S r    )r€   r!   ©rˆ   r‹   rŠ   s      rŒ   ÚzerozDMP.zeroù   s   € ä”8˜C“= # sÓ+Ð+rŽ   c                ó0   — t        t        ||«      ||«      S r    )r€   r   rÄ   s      rŒ   ÚonezDMP.oneý   s   € ä”7˜3 Ó$ c¨3Ó/Ð/rŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   Ú_onezDMP._one  rÂ   rŽ   c                óp   — | j                   j                  ›d| j                  «       ›d| j                  ›d�S ©Nú(ú, ú))Ú	__class__Ú__name__r—   rŠ   r˜   s    rŒ   Ú__repr__zDMP.__repr__  s#   € Ø Ÿ{™{×3Ó3°Q·Y±Yµ[À!Ç%Ã%ÐHÐHrŽ   c                óŒ   — t        | j                  j                  | j                  «       | j                  | j
                  f«      S r    )ÚhashrÏ   rÐ   Úto_tupler‹   rŠ   r˜   s    rŒ   Ú__hash__zDMP.__hash__  s.   € Ü�Q—[‘[×)Ñ)¨1¯:©:«<¸¿¹ÀÇÁÐFÓGÐGrŽ   c                óP   — | j                  «       | j                  | j                  fS r    )r—   rŠ   r‹   ©Úselfs    rŒ   Ú__getnewargs__zDMP.__getnewargs__
  s   € Ø�|‰|‹~˜tŸx™x¨¯©Ð1Ð1rŽ   c                ó   — t         ‚©z*Construct a new ground instance of ``f``. rÀ   ©r™   Úcoeffs     rŒ   Ú
ground_newzDMP.ground_new  ó   € ä!Ð!rŽ   c                ó>  — t        |t        «      r| j                  |j                  k7  rt        d| ›d|›�«      ‚| j                  |j                  k7  rG| j                  j                  |j                  «      }| j                  |«      } |j                  |«      }| |fS ©z7Unify and return ``DMP`` instances of ``f`` and ``g``. úCannot unify ú with )rƒ   r€   r‹   rz   rŠ   Úunifyr¾   ©r™   ÚgrŠ   s      rŒ   Ú	unify_DMPzDMP.unify_DMP  sr   € ä˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—%‘%—+‘+˜aŸe™eÓ$ˆCØ—	‘	˜#“ˆAØ—	‘	˜#“ˆAà�!ˆtˆrŽ   c                ód   — t        | j                  «       | j                  | j                  |¬«      S )úAConvert ``f`` to a dict representation with native coefficients. ©rÅ   )r'   r—   r‹   rŠ   )r™   rÅ   s     rŒ   Úto_dictzDMP.to_dict  s!   € ä˜1Ÿ9™9›;¨¯©¨q¯u©u¸4Ô@Ð@rŽ   c                ó–   — | j                  |¬«      }|j                  «       D ]#  \  }}| j                  j                  |«      ||<   Œ% |S )ú@Convert ``f`` to a dict representation with SymPy coefficients. rê   )rë   ÚitemsrŠ   Úto_sympy)r™   rÅ   r‰   ÚkÚvs        rŒ   Úto_sympy_dictzDMP.to_sympy_dict!  sH   € à�i‰i˜TˆiÓ"ˆà—I‘I“Kò 	'‰DˆAˆqØ—U‘U—^‘^ AÓ&ˆC�ŠFð	'ð ˆ
rŽ   c                ó>   ‡ ‡— ˆ ˆfd„Š ‰‰ j                  «       «      S )ú@Convert ``f`` to a list representation with SymPy coefficients. c                ó¾   •— g }| D ]T  }t        |t        «      r|j                   ‰|«      «       Œ+|j                  ‰j                  j	                  |«      «       ŒV |S r    )rƒ   r„   ÚappendrŠ   rï   )r‰   ÚoutÚvalr™   Úsympify_nested_lists      €€rŒ   rù   z.DMP.to_sympy_list.<locals>.sympify_nested_list,  sS   ø€ ØˆCØò 4�Ü˜c¤4Ô(Ø—J‘JÑ2°3Ó7Õ8à—J‘J˜qŸu™uŸ~™~¨cÓ2Õ3ð	4ð
 ˆJrŽ   )r—   )r™   rù   s   `@rŒ   Úto_sympy_listzDMP.to_sympy_list*  s   ù€ õ	ñ # 1§9¡9£;Ó/Ð/rŽ   c                ó   — t         ‚©úAConvert ``f`` to a list representation with native coefficients. rÀ   r˜   s    rŒ   r—   zDMP.to_list7  rß   rŽ   c                ó   — t         ‚©zx
        Convert ``f`` to a tuple representation with native coefficients.

        This is needed for hashing.
        rÀ   r˜   s    rŒ   rÔ   zDMP.to_tuple;  s
   € ô "Ð!rŽ   c                óT   — | j                  | j                  j                  «       «      S )zMake the ground domain a ring. )r¾   rŠ   Úget_ringr˜   s    rŒ   Úto_ringzDMP.to_ringC  s   € à�y‰y˜Ÿ™Ÿ™Ó)Ó*Ð*rŽ   c                óT   — | j                  | j                  j                  «       «      S )z Make the ground domain a field. )r¾   rŠ   Ú	get_fieldr˜   s    rŒ   Úto_fieldzDMP.to_fieldG  ó   € à�y‰y˜Ÿ™Ÿ™Ó*Ó+Ð+rŽ   c                óT   — | j                  | j                  j                  «       «      S )zMake the ground domain exact. )r¾   rŠ   Ú	get_exactr˜   s    rŒ   Úto_exactzDMP.to_exactK  r  rŽ   c                óh   — | j                   s|s| j                  ||«      S | j                  |||«      S ©z1Take a continuous subsequence of terms of ``f``. )r‹   Ú_sliceÚ
_slice_lev©r™   ÚmÚnÚjs       rŒ   Úslicez	DMP.sliceO  s.   € à�uŠu™QØ—8‘8˜A˜q“>Ð!à—<‘<  1 aÓ(Ð(rŽ   c                ó   — t         ‚r    rÀ   )r™   r  r  s      rŒ   r  z
DMP._sliceV  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r  s       rŒ   r  zDMP._slice_levY  rÂ   rŽ   c                óX   — | j                  |¬«      D ��cg c]  \  }}|‘Œ	 c}}S c c}}w )z;Returns all non-zero coefficients from ``f`` in lex order. ©Úorder©Úterms)r™   r  Ú_r£   s       rŒ   r¶   z
DMP.coeffs\  ó%   € à Ÿw™w¨U˜wÓ3×5‘t�q˜!’Ó5Ð5ùÓ5ó   –&c                óX   — | j                  |¬«      D ��cg c]  \  }}|‘Œ	 c}}S c c}}w )z8Returns all non-zero monomials from ``f`` in lex order. r  r  )r™   r  r  r  s       rŒ   rµ   z
DMP.monoms`  r  r  c                ó”   — | j                   r+d| j                  dz   z  }|| j                  j                  fgS | j	                  |¬«      S )ú4Returns all non-zero terms from ``f`` in lex order. ©r   r¥   r  )Úis_zeror‹   rŠ   rÅ   Ú_terms)r™   r  Ú
zero_monoms      rŒ   r  z	DMP.termsd  sB   € à�9Š9Ø˜qŸu™u q™yÑ)ˆJØ §¡§¡Ð,Ð-Ð-à—8‘8 %�8Ó(Ð(rŽ   c                ó   — t         ‚r    rÀ   ©r™   r  s     rŒ   r"  z
DMP._termsl  rÂ   rŽ   c                ó”   — | j                   rt        d«      ‚| s| j                  j                  gS t	        | j                  «       «      S )z%Returns all coefficients from ``f``. ú&multivariate polynomials not supported)r‹   r{   rŠ   rÅ   r„   r—   r˜   s    rŒ   Ú
all_coeffszDMP.all_coeffso  s9   € à�5Š5Ü!Ð"JÓKÐKáØ—E‘E—J‘J�<Ðä˜Ÿ	™	›Ó$Ð$rŽ   c                óÌ   — | j                   rt        d«      ‚| j                  «       }|dk  rdgS t        | j	                  «       «      D ��cg c]  \  }}||z
  f‘Œ c}}S c c}}w )z"Returns all monomials from ``f``. r'  r   r   )r‹   r{   ÚdegreeÚ	enumerater—   ©r™   r  Úir£   s       rŒ   Ú
all_monomszDMP.all_monomsy  sW   € à�5Š5Ü!Ð"JÓKÐKà�H‰H‹JˆàˆqŠ5Ø�6ˆMä*3°A·I±I³KÓ*@×B¡$ ! Q�a˜!‘e’XÓBÐBùÓBs   ÁA c                óü   — | j                   rt        d«      ‚| j                  «       }|dk  rd| j                  j                  fgS t        | j                  «       «      D ��cg c]  \  }}||z
  f|f‘Œ c}}S c c}}w )z Returns all terms from a ``f``. r'  r   r   )r‹   r{   r*  rŠ   rÅ   r+  r—   r,  s       rŒ   Ú	all_termszDMP.all_terms…  sj   € à�5Š5Ü!Ð"JÓKÐKà�H‰H‹JˆàˆqŠ5Ø˜1Ÿ5™5Ÿ:™:Ð&Ð'Ð'ä/8¸¿¹»Ó/E×G¡t q¨!�q˜1‘u�h ’]ÓGÐGùÓGs   Á"A8c                ó>   — | j                  «       j                  «       S ©z-Convert algebraic coefficients to rationals. )Ú_liftrœ   r˜   s    rŒ   ÚliftzDMP.lift‘  s   € à�w‰w‹y× Ñ Ó"Ð"rŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   r3  z	DMP._lift•  rÂ   rŽ   c                ó   — t         ‚©ú2Reduce degree of `f` by mapping `x_i^m` to `y_i`. rÀ   r˜   s    rŒ   ÚdeflatezDMP.deflate˜  rß   rŽ   c                ó   — t         ‚©ú,Inject ground domain generators into ``f``. rÀ   ©r™   Úfronts     rŒ   Úinjectz
DMP.injectœ  rß   rŽ   c                ó   — t         ‚©ú2Eject selected generators into the ground domain. rÀ   ©r™   rŠ   r>  s      rŒ   Úejectz	DMP.eject   rß   rŽ   c                óL   — | j                  «       \  }}||j                  «       fS )ap  
        Remove useless generators from ``f``.

        Returns the removed generators and the new excluded ``f``.

        Examples
        ========

        >>> from sympy.polys.polyclasses import DMP
        >>> from sympy.polys.domains import ZZ

        >>> DMP([[[ZZ(1)]], [[ZZ(1)], [ZZ(2)]]], ZZ).exclude()
        ([2], DMP_Python([[1], [1, 2]], ZZ))

        )Ú_excluderœ   ©r™   ÚJÚFs      rŒ   ÚexcludezDMP.exclude¤  s#   € ð  �z‰z‹|‰ˆˆ1Ø�!—)‘)“+ˆ~ÐrŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   rF  zDMP._exclude·  rÂ   rŽ   c                ó$   — | j                  |«      S )aÉ  
        Returns a polynomial in `K[x_{P(1)}, ..., x_{P(n)}]`.

        Examples
        ========

        >>> from sympy.polys.polyclasses import DMP
        >>> from sympy.polys.domains import ZZ

        >>> DMP([[[ZZ(2)], [ZZ(1), ZZ(0)]], [[]]], ZZ).permute([1, 0, 2])
        DMP_Python([[[2], []], [[1, 0], []]], ZZ)

        >>> DMP([[[ZZ(2)], [ZZ(1), ZZ(0)]], [[]]], ZZ).permute([1, 2, 0])
        DMP_Python([[[1], []], [[2, 0], []]], ZZ)

        )Ú_permute©r™   ÚPs     rŒ   ÚpermutezDMP.permuteº  s   € ð" �z‰z˜!‹}ÐrŽ   c                ó   — t         ‚r    rÀ   rN  s     rŒ   rM  zDMP._permuteÍ  rÂ   rŽ   c                ó   — t         ‚©z/Remove GCD of terms from the polynomial ``f``. rÀ   r˜   s    rŒ   Ú	terms_gcdzDMP.terms_gcdÐ  rß   rŽ   c                ó   — t         ‚©z)Make all coefficients in ``f`` positive. rÀ   r˜   s    rŒ   ÚabszDMP.absÔ  rß   rŽ   c                ó   — t         ‚©ú"Negate all coefficients in ``f``. rÀ   r˜   s    rŒ   ÚnegzDMP.negØ  rß   rŽ   c                óV   — | j                  | j                  j                  |«      «      S ©z.Add an element of the ground domain to ``f``. )Ú_add_groundrŠ   r¾   ©r™   r£   s     rŒ   Ú
add_groundzDMP.add_groundÜ  ó   € à�}‰}˜QŸU™UŸ]™]¨1Ó-Ó.Ð.rŽ   c                óV   — | j                  | j                  j                  |«      «      S ©z5Subtract an element of the ground domain from ``f``. )Ú_sub_groundrŠ   r¾   r_  s     rŒ   Ú
sub_groundzDMP.sub_groundà  ra  rŽ   c                óV   — | j                  | j                  j                  |«      «      S ©z5Multiply ``f`` by a an element of the ground domain. )Ú_mul_groundrŠ   r¾   r_  s     rŒ   Ú
mul_groundzDMP.mul_groundä  ra  rŽ   c                óV   — | j                  | j                  j                  |«      «      S ©z8Quotient of ``f`` by a an element of the ground domain. )Ú_quo_groundrŠ   r¾   r_  s     rŒ   Ú
quo_groundzDMP.quo_groundè  ra  rŽ   c                óV   — | j                  | j                  j                  |«      «      S ©z>Exact quotient of ``f`` by a an element of the ground domain. )Ú_exquo_groundrŠ   r¾   r_  s     rŒ   Úexquo_groundzDMP.exquo_groundì  s   € à�‰˜qŸu™uŸ}™}¨QÓ/Ó0Ð0rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z2Add two multivariate polynomials ``f`` and ``g``. )rç   Ú_add©r™   ræ   rI  ÚGs       rŒ   ÚaddzDMP.addð  ó!   € à�{‰{˜1‹~‰ˆˆ1Ø�v‰v�a‹yÐrŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Subtract two multivariate polynomials ``f`` and ``g``. )rç   Ú_subru  s       rŒ   ÚsubzDMP.subõ  rx  rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Multiply two multivariate polynomials ``f`` and ``g``. )rç   Ú_mulru  s       rŒ   ÚmulzDMP.mulú  rx  rŽ   c                ó"   — | j                  «       S ©ú(Square a multivariate polynomial ``f``. )Ú_sqrr˜   s    rŒ   ÚsqrzDMP.sqrÿ  s   € à�v‰v‹xˆrŽ   c                ór   — t        |t        «      st        dt        |«      z  «      ‚| j	                  |«      S )ú+Raise ``f`` to a non-negative power ``n``. ú``int`` expected, got %s)rƒ   r©   Ú	TypeErrorr…   Ú_pow©r™   r  s     rŒ   ÚpowzDMP.pow  s/   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAØ�v‰v�a‹yÐrŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú/Polynomial pseudo-division of ``f`` and ``g``. )rç   Ú_pdivru  s       rŒ   ÚpdivzDMP.pdiv	  ó!   € à�{‰{˜1‹~‰ˆˆ1Ø�w‰w�q‹zÐrŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú0Polynomial pseudo-remainder of ``f`` and ``g``. )rç   Ú_premru  s       rŒ   ÚpremzDMP.prem  r’  rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú/Polynomial pseudo-quotient of ``f`` and ``g``. )rç   Ú_pquoru  s       rŒ   ÚpquozDMP.pquo  r’  rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú5Polynomial exact pseudo-quotient of ``f`` and ``g``. )rç   Ú_pexquoru  s       rŒ   Úpexquoz
DMP.pexquo  s!   € à�{‰{˜1‹~‰ˆˆ1Ø�y‰y˜‹|ÐrŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Polynomial division with remainder of ``f`` and ``g``. )rç   Ú_divru  s       rŒ   ÚdivzDMP.div  rx  rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z2Computes polynomial remainder of ``f`` and ``g``. )rç   Ú_remru  s       rŒ   ÚremzDMP.rem"  rx  rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z1Computes polynomial quotient of ``f`` and ``g``. )rç   Ú_quoru  s       rŒ   ÚquozDMP.quo'  rx  rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Computes polynomial exact quotient of ``f`` and ``g``. )rç   Ú_exquoru  s       rŒ   Úexquoz	DMP.exquo,  s!   € à�{‰{˜1‹~‰ˆˆ1Ø�x‰x˜‹{ÐrŽ   c                ó   — t         ‚r    rÀ   r_  s     rŒ   r^  zDMP._add_ground1  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r_  s     rŒ   rd  zDMP._sub_ground4  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r_  s     rŒ   rh  zDMP._mul_ground7  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r_  s     rŒ   rl  zDMP._quo_ground:  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r_  s     rŒ   rp  zDMP._exquo_ground=  rÂ   rŽ   c                ó   — t         ‚r    rÀ   ©r™   ræ   s     rŒ   rt  zDMP._add@  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r{  zDMP._subC  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r  zDMP._mulF  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   r„  zDMP._sqrI  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r‹  s     rŒ   rŠ  zDMP._powL  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r�  z	DMP._pdivO  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r–  z	DMP._premR  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r›  z	DMP._pquoU  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r   zDMP._pexquoX  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r¤  zDMP._div[  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r¨  zDMP._rem^  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r¬  zDMP._quoa  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r°  z
DMP._exquod  rÂ   rŽ   c                ór   — t        |t        «      st        dt        |«      z  «      ‚| j	                  |«      S )ú0Returns the leading degree of ``f`` in ``x_j``. rˆ  )rƒ   r©   r‰  r…   Ú_degree©r™   r  s     rŒ   r*  z
DMP.degreeg  s/   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�y‰y˜‹|ÐrŽ   c                ó   — t         ‚r    rÀ   rÈ  s     rŒ   rÇ  zDMP._degreen  rÂ   rŽ   c                ó   — t         ‚©z$Returns a list of degrees of ``f``. rÀ   r˜   s    rŒ   Údegree_listzDMP.degree_listq  rß   rŽ   c                ó   — t         ‚©ú#Returns the total degree of ``f``. rÀ   r˜   s    rŒ   Útotal_degreezDMP.total_degreeu  rß   rŽ   c                ó´  — | j                  «       }i }|t        | j                  «       d   d   «      k(  }| j                  «       D ][  }t        |d   «      }||k  r||z
  }nd}|r|d   ||d   |fz   <   Œ0t	        |d   «      }||xx   |z  cc<   |d   |t        |«      <   Œ] t        j                  || j                  t        |«      z   | j                  «      S )z&Return homogeneous polynomial of ``f``r   r¥   )rÐ  Úlenr  Úsumr„   Útupler€   r­   r‹   r©   rŠ   )	r™   ÚsÚtdÚresultÚ
new_symbolÚtermÚdr-  Úls	            rŒ   Ú
homogenizezDMP.homogenizey  sÔ   € à�^‰^ÓˆØˆØœ3˜qŸw™w›y¨™|¨A™Ó/Ñ/ˆ
Ø—G‘G“Iò 	+ˆDÜ�D˜‘G“ˆAØ�2ŠvØ˜‘F‘à�ÙØ)-¨a©��t˜A‘w ! ‘~Ò&ä˜˜a™“M�Ø�!“˜‘	“Ø#'¨¡7�”u˜Q“xÒ ð	+ô �}‰}˜V Q§U¡U¬S°«_Ñ%<¸a¿e¹eÓDÐDrŽ   c                óš   — | j                   rt         S | j                  «       }t        |d   «      }|D ]  }t        |«      }||k7  sŒ y |S )z(Returns the homogeneous order of ``f``. r   N)r!  r   rµ   rÓ  )r™   rµ   ÚtdegÚmonomÚ_tdegs        rŒ   Úhomogeneous_orderzDMP.homogeneous_orderŒ  sQ   € à�9Š9Ü�3ˆJà—‘“ˆÜ�6˜!‘9‹~ˆàò 	ˆEÜ˜“JˆEà˜‹}Ùð		ð ˆrŽ   c                ó   — t         ‚©z*Returns the leading coefficient of ``f``. rÀ   r˜   s    rŒ   ÚLCzDMP.LCœ  rß   rŽ   c                ó   — t         ‚©ú+Returns the trailing coefficient of ``f``. rÀ   r˜   s    rŒ   ÚTCzDMP.TC   rß   rŽ   c                ó^   — t        d„ |D «       «      r| j                  |«      S t        d«      ‚)ú+Returns the ``n``-th coefficient of ``f``. c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr    )rƒ   r©   )r¢   r  s     rŒ   r¤   zDMP.nth.<locals>.<genexpr>¦  s   è ø€ Ò- aŒz˜!œS×!Ñ-ùs   ‚za sequence of integers expected)r¦   Ú_nthr‰  ©r™   ÚNs     rŒ   ÚnthzDMP.nth¤  s*   € äÑ-¨1Ô-Ô-Ø—6‘6˜!“9ÐäÐ=Ó>Ð>rŽ   c                ó   — t         ‚r    rÀ   rí  s     rŒ   rì  zDMP._nth«  rÂ   rŽ   c                ó   — t         ‚©zReturns maximum norm of ``f``. rÀ   r˜   s    rŒ   Úmax_normzDMP.max_norm®  rß   rŽ   c                ó   — t         ‚©zReturns l1 norm of ``f``. rÀ   r˜   s    rŒ   Úl1_normzDMP.l1_norm²  rß   rŽ   c                ó   — t         ‚©z!Return squared l2 norm of ``f``. rÀ   r˜   s    rŒ   Úl2_norm_squaredzDMP.l2_norm_squared¶  rß   rŽ   c                ó   — t         ‚©z0Clear denominators, but keep the ground domain. rÀ   r˜   s    rŒ   Úclear_denomszDMP.clear_denomsº  rß   rŽ   c                óÂ   — t        |t        «      st        dt        |«      z  «      ‚t        |t        «      st        dt        |«      z  «      ‚| j	                  ||«      S )úEComputes the ``m``-th order indefinite integral of ``f`` in ``x_j``. rˆ  )rƒ   r©   r‰  r…   Ú
_integrate©r™   r  r  s      rŒ   Ú	integratezDMP.integrate¾  sQ   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�|‰|˜A˜qÓ!Ð!rŽ   c                ó   — t         ‚r    rÀ   r   s      rŒ   rÿ  zDMP._integrateÈ  rÂ   rŽ   c                óÂ   — t        |t        «      st        dt        |«      z  «      ‚t        |t        «      st        dt        |«      z  «      ‚| j	                  ||«      S )ú<Computes the ``m``-th order derivative of ``f`` in ``x_j``. rˆ  )rƒ   r©   r‰  r…   Ú_diffr   s      rŒ   ÚdiffzDMP.diffË  sP   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�w‰w�q˜!‹}ÐrŽ   c                ó   — t         ‚r    rÀ   r   s      rŒ   r  z	DMP._diffÕ  rÂ   rŽ   c                óø   — t        |t        «      st        dt        |«      z  «      ‚d|cxk  r| j                  k  sn t        d|z  «      ‚| j                  r| j                  ||«      S | j                  |«      S )z5Evaluates ``f`` at the given point ``a`` in ``x_j``. rˆ  r   zinvalid variable index %s)rƒ   r©   r‰  r…   r‹   Ú
ValueErrorÚ	_eval_levÚ_eval©r™   Úar  s      rŒ   ÚevalzDMP.evalØ  sg   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAØ�q”/˜AŸE™E”/ÜÐ8¸1Ñ<Ó=Ð=à�5Š5Ø—;‘;˜q !Ó$Ð$à—7‘7˜1“:ÐrŽ   c                ó   — t         ‚r    rÀ   ©r™   r  s     rŒ   r  z	DMP._evalä  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r  s      rŒ   r
  zDMP._eval_levç  rÂ   rŽ   c                óz   — | j                  |«      \  }}|j                  rt        d«      ‚|j                  |«      S )ú2Half extended Euclidean algorithm, if univariate. úunivariate polynomial expected)rç   r‹   r	  Ú_half_gcdexru  s       rŒ   Ú
half_gcdexzDMP.half_gcdexê  s5   € à�{‰{˜1‹~‰ˆˆ1à�5Š5ÜÐ=Ó>Ð>à�}‰}˜QÓÐrŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r  zDMP._half_gcdexó  rÂ   rŽ   c                ó¼   — | j                  |«      \  }}|j                  rt        d«      ‚|j                  j                  st        d«      ‚|j                  |«      S )ú-Extended Euclidean algorithm, if univariate. r  zground domain must be a field)rç   r‹   r	  rŠ   Úis_Fieldr   Ú_gcdexru  s       rŒ   Úgcdexz	DMP.gcdexö  sK   € à�{‰{˜1‹~‰ˆˆ1à�5Š5ÜÐ=Ó>Ð>à�u‰u�~Š~ÜÐ=Ó>Ð>à�x‰x˜‹{ÐrŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r  z
DMP._gcdex  rÂ   rŽ   c                óz   — | j                  |«      \  }}|j                  rt        d«      ‚|j                  |«      S )ú(Invert ``f`` modulo ``g``, if possible. r  )rç   r‹   r	  Ú_invertru  s       rŒ   Úinvertz
DMP.invert  s4   € à�{‰{˜1‹~‰ˆˆ1à�5Š5ÜÐ=Ó>Ð>à�y‰y˜‹|ÐrŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r   zDMP._invert  rÂ   rŽ   c                óR   — | j                   rt        d«      ‚| j                  |«      S )ú"Compute ``f**(-1)`` mod ``x**n``. r  )r‹   r	  Ú_revertr‹  s     rŒ   Úrevertz
DMP.revert  s#   € à�5Š5ÜÐ=Ó>Ð>à�y‰y˜‹|ÐrŽ   c                ó   — t         ‚r    rÀ   r‹  s     rŒ   r%  zDMP._revert  rÂ   rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Computes subresultant PRS sequence of ``f`` and ``g``. )rç   Ú_subresultantsru  s       rŒ   ÚsubresultantszDMP.subresultants  s$   € à�{‰{˜1‹~‰ˆˆ1Ø×Ñ Ó"Ð"rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r*  zDMP._subresultants   rÂ   rŽ   c                ór   — | j                  |«      \  }}|r|j                  |«      S |j                  |«      S ©ú/Computes resultant of ``f`` and ``g`` via PRS. )rç   Ú_resultant_includePRSÚ
_resultant)r™   ræ   Ú
includePRSrI  rv  s        rŒ   Ú	resultantzDMP.resultant#  s5   € à�{‰{˜1‹~‰ˆˆ1ÙØ×*Ñ*¨1Ó-Ð-à—<‘< “?Ð"rŽ   c                ó   — t         ‚r    rÀ   )r™   ræ   r2  s      rŒ   r1  zDMP._resultant+  rÂ   rŽ   c                ó   — t         ‚©ú Computes discriminant of ``f``. rÀ   r˜   s    rŒ   ÚdiscriminantzDMP.discriminant.  rß   rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z4Returns GCD of ``f`` and ``g`` and their cofactors. )rç   Ú
_cofactorsru  s       rŒ   Ú	cofactorszDMP.cofactors2  s!   € à�{‰{˜1‹~‰ˆˆ1Ø�|‰|˜A‹ÐrŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r;  zDMP._cofactors7  rÂ   rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z+Returns polynomial GCD of ``f`` and ``g``. )rç   Ú_gcdru  s       rŒ   ÚgcdzDMP.gcd:  rx  rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   r@  zDMP._gcd?  rÂ   rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú+Returns polynomial LCM of ``f`` and ``g``. )rç   Ú_lcmru  s       rŒ   ÚlcmzDMP.lcmB  rx  rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   rF  zDMP._lcmG  rÂ   rŽ   c                ór   — | j                  |«      \  }}|r|j                  |«      S |j                  |«      S ©ú6Cancel common factors in a rational function ``f/g``. )rç   Ú_cancel_includeÚ_cancel)r™   ræ   ÚincluderI  rv  s        rŒ   Úcancelz
DMP.cancelJ  s5   € à�{‰{˜1‹~‰ˆˆ1áØ×$Ñ$ QÓ'Ð'à—9‘9˜Q“<ÐrŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   rM  zDMP._cancelS  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   rL  zDMP._cancel_includeV  rÂ   rŽ   c                óV   — | j                  | j                  j                  |«      «      S ©z&Reduce ``f`` modulo a constant ``p``. )Ú_truncrŠ   r¾   ©r™   Úps     rŒ   Útruncz	DMP.truncY  s   € à�x‰x˜Ÿ™Ÿ™ aÓ(Ó)Ð)rŽ   c                ó   — t         ‚r    rÀ   rU  s     rŒ   rT  z
DMP._trunc]  rÂ   rŽ   c                ó   — t         ‚©z'Divides all coefficients by ``LC(f)``. rÀ   r˜   s    rŒ   Úmonicz	DMP.monic`  rß   rŽ   c                ó   — t         ‚©z(Returns GCD of polynomial coefficients. rÀ   r˜   s    rŒ   ÚcontentzDMP.contentd  rß   rŽ   c                ó   — t         ‚©z/Returns content and a primitive form of ``f``. rÀ   r˜   s    rŒ   Ú	primitivezDMP.primitiveh  rß   rŽ   c                óL   — | j                  |«      \  }}|j                  |«      S ©z4Computes functional composition of ``f`` and ``g``. )rç   Ú_composeru  s       rŒ   ÚcomposezDMP.composel  s!   € à�{‰{˜1‹~‰ˆˆ1Ø�z‰z˜!‹}ÐrŽ   c                ó   — t         ‚r    rÀ   r¸  s     rŒ   rd  zDMP._composeq  rÂ   rŽ   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú,Computes functional decomposition of ``f``. r  )r‹   r	  Ú
_decomposer˜   s    rŒ   Ú	decomposezDMP.decomposet  s!   € à�5Š5ÜÐ=Ó>Ð>à�|‰|‹~ÐrŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   ri  zDMP._decompose{  rÂ   rŽ   c                ó„   — | j                   rt        d«      ‚| j                  | j                  j	                  |«      «      S )ú/Efficiently compute Taylor shift ``f(x + a)``. r  )r‹   r	  Ú_shiftrŠ   r¾   r  s     rŒ   Úshiftz	DMP.shift~  s1   € à�5Š5ÜÐ=Ó>Ð>à�x‰x˜Ÿ™Ÿ™ aÓ(Ó)Ð)rŽ   c                ó~   — |D �cg c]  }| j                   j                  |«      ‘Œ }}| j                  |«      S c c}w ©z/Efficiently compute Taylor shift ``f(X + A)``. )rŠ   r¾   Ú_shift_list)r™   r  Úais      rŒ   Ú
shift_listzDMP.shift_list…  s6   € à)*Ö+ 2ˆQ�U‰U�]‰]˜2ÕÐ+ˆÐ+Ø�}‰}˜QÓÐùò ,s   …":c                ó   — t         ‚r    rÀ   r  s     rŒ   rn  z
DMP._shiftŠ  rÂ   rŽ   c                óÌ   — | j                   rt        d«      ‚|j                  |«      \  }}| j                  |«      \  }}|j                  |«      \  }}|j                  ||«      S )ú5Evaluate functional transformation ``q**n * f(p/q)``.r  )r‹   r	  rç   Ú
_transform)r™   rV  ÚqrO  ÚQrI  s         rŒ   Ú	transformzDMP.transform�  sY   € à�5Š5ÜÐ=Ó>Ð>à�{‰{˜1‹~‰ˆˆ1Ø�{‰{˜1‹~‰ˆˆ1Ø�{‰{˜1‹~‰ˆˆ1à�|‰|˜A˜qÓ!Ð!rŽ   c                ó   — t         ‚r    rÀ   ©r™   rV  ry  s      rŒ   rx  zDMP._transform˜  rÂ   rŽ   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú&Computes the Sturm sequence of ``f``. r  )r‹   r	  Ú_sturmr˜   s    rŒ   Ústurmz	DMP.sturm›  s!   € à�5Š5ÜÐ=Ó>Ð>à�x‰x‹zÐrŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   r€  z
DMP._sturm¢  rÂ   rŽ   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú7Computes the Cauchy upper bound on the roots of ``f``. r  )r‹   r	  Ú_cauchy_upper_boundr˜   s    rŒ   Úcauchy_upper_boundzDMP.cauchy_upper_bound¥  ó$   € à�5Š5ÜÐ=Ó>Ð>à×$Ñ$Ó&Ð&rŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   r…  zDMP._cauchy_upper_bound¬  rÂ   rŽ   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú?Computes the Cauchy lower bound on the nonzero roots of ``f``. r  )r‹   r	  Ú_cauchy_lower_boundr˜   s    rŒ   Úcauchy_lower_boundzDMP.cauchy_lower_bound¯  r‡  rŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   r‹  zDMP._cauchy_lower_bound¶  rÂ   rŽ   c                óP   — | j                   rt        d«      ‚| j                  «       S )úBComputes the squared Mignotte bound on root separations of ``f``. r  )r‹   r	  Ú_mignotte_sep_bound_squaredr˜   s    rŒ   Úmignotte_sep_bound_squaredzDMP.mignotte_sep_bound_squared¹  s$   € à�5Š5ÜÐ=Ó>Ð>à×,Ñ,Ó.Ð.rŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   r�  zDMP._mignotte_sep_bound_squaredÀ  rÂ   rŽ   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú4Computes greatest factorial factorization of ``f``. r  )r‹   r	  Ú	_gff_listr˜   s    rŒ   Úgff_listzDMP.gff_listÃ  s!   € à�5Š5ÜÐ=Ó>Ð>à�{‰{‹}ÐrŽ   c                ó   — t         ‚r    rÀ   r˜   s    rŒ   r•  zDMP._gff_listÊ  rÂ   rŽ   c                ó   — t         ‚©zComputes ``Norm(f)``.rÀ   r˜   s    rŒ   ÚnormzDMP.normÍ  rß   rŽ   c                ó   — t         ‚©z$Computes square-free norm of ``f``. rÀ   r˜   s    rŒ   Úsqf_normzDMP.sqf_normÑ  rß   rŽ   c                ó   — t         ‚©z$Computes square-free part of ``f``. rÀ   r˜   s    rŒ   Úsqf_partzDMP.sqf_partÕ  rß   rŽ   c                ó   — t         ‚©ú0Returns a list of square-free factors of ``f``. rÀ   ©r™   r¦   s     rŒ   Úsqf_listzDMP.sqf_listÙ  rß   rŽ   c                ó   — t         ‚r¢  rÀ   r¤  s     rŒ   Úsqf_list_includezDMP.sqf_list_includeÝ  rß   rŽ   c                ó   — t         ‚©ú0Returns a list of irreducible factors of ``f``. rÀ   r˜   s    rŒ   Úfactor_listzDMP.factor_listá  rß   rŽ   c                ó   — t         ‚r©  rÀ   r˜   s    rŒ   Úfactor_list_includezDMP.factor_list_includeå  rß   rŽ   c                óð   — | j                   rt        d«      ‚|r|r| j                  ||||¬«      S |r|s| j                  ||||¬«      S |s|r| j	                  ||||¬«      S | j                  ||||¬«      S )z0Compute isolating intervals for roots of ``f``. z1Cannot isolate roots of a multivariate polynomial©ÚepsÚinfÚsupÚfast)r‹   r{   Ú_isolate_all_roots_sqfÚ_isolate_all_rootsÚ_isolate_real_roots_sqfÚ_isolate_real_roots)r™   r¦   r°  r±  r²  r³  Úsqfs          rŒ   Ú	intervalszDMP.intervalsé  sŒ   € à�5Š5Ü!Ð"UÓVÐVá‘3Ø×+Ñ+°¸À#ÈDÐ+ÓQÐQÙ™Ø×'Ñ'¨C°S¸cÈÐ'ÓMÐMÙ™Ø×,Ñ,°¸#À3ÈTÐ,ÓRÐRà×(Ñ(¨S°c¸sÈÐ(ÓNÐNrŽ   c                ó   — t         ‚r    rÀ   ©r™   r°  r±  r²  r³  s        rŒ   rµ  zDMP._isolate_all_roots÷  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r»  s        rŒ   r´  zDMP._isolate_all_roots_sqfú  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r»  s        rŒ   r·  zDMP._isolate_real_rootsý  rÂ   rŽ   c                ó   — t         ‚r    rÀ   r»  s        rŒ   r¶  zDMP._isolate_real_roots_sqf   rÂ   rŽ   c                ó\   — | j                   rt        d«      ‚| j                  |||||¬«      S )zu
        Refine an isolating interval to the given precision.

        ``eps`` should be a rational number.

        z1Cannot refine a root of a multivariate polynomial©r°  Ústepsr³  )r‹   r{   Ú_refine_real_root©r™   rÕ  Útr°  rÁ  r³  s         rŒ   Úrefine_rootzDMP.refine_root  s;   € ð �5Š5Ü!ØCóEð Eð ×"Ñ" 1 a¨S¸ÀDÐ"ÓIÐIrŽ   c                ó   — t         ‚r    rÀ   rÃ  s         rŒ   rÂ  zDMP._refine_real_root  rÂ   rŽ   c                ó   — t         ‚)ú<Return the number of real roots of ``f`` in ``[inf, sup]``. rÀ   ©r™   r±  r²  s      rŒ   Úcount_real_rootszDMP.count_real_roots  rß   rŽ   c                ó   — t         ‚)ú?Return the number of complex roots of ``f`` in ``[inf, sup]``. rÀ   rÉ  s      rŒ   Úcount_complex_rootszDMP.count_complex_roots  rß   rŽ   c                ó   — t         ‚©z0Returns ``True`` if ``f`` is a zero polynomial. rÀ   r˜   s    rŒ   r!  zDMP.is_zero  ó
   € ô "Ð!rŽ   c                ó   — t         ‚©z0Returns ``True`` if ``f`` is a unit polynomial. rÀ   r˜   s    rŒ   Úis_onez
DMP.is_one   rÐ  rŽ   c                ó   — t         ‚©ú>Returns ``True`` if ``f`` is an element of the ground domain. rÀ   r˜   s    rŒ   Ú	is_groundzDMP.is_ground%  rÐ  rŽ   c                ó   — t         ‚©z7Returns ``True`` if ``f`` is a square-free polynomial. rÀ   r˜   s    rŒ   Úis_sqfz
DMP.is_sqf*  rÐ  rŽ   c                ó   — t         ‚©z=Returns ``True`` if the leading coefficient of ``f`` is one. rÀ   r˜   s    rŒ   Úis_moniczDMP.is_monic/  rÐ  rŽ   c                ó   — t         ‚©zAReturns ``True`` if the GCD of the coefficients of ``f`` is one. rÀ   r˜   s    rŒ   Úis_primitivezDMP.is_primitive4  rÐ  rŽ   c                ó   — t         ‚)ú:Returns ``True`` if ``f`` is linear in all its variables. rÀ   r˜   s    rŒ   Ú	is_linearzDMP.is_linear9  rÐ  rŽ   c                ó   — t         ‚)ú=Returns ``True`` if ``f`` is quadratic in all its variables. rÀ   r˜   s    rŒ   Úis_quadraticzDMP.is_quadratic>  rÐ  rŽ   c                ó   — t         ‚©ú8Returns ``True`` if ``f`` is zero or has only one term. rÀ   r˜   s    rŒ   Úis_monomialzDMP.is_monomialC  rÐ  rŽ   c                ó   — t         ‚©ú7Returns ``True`` if ``f`` is a homogeneous polynomial. rÀ   r˜   s    rŒ   Úis_homogeneouszDMP.is_homogeneousH  rÐ  rŽ   c                ó   — t         ‚©z:Returns ``True`` if ``f`` has no factors over its domain. rÀ   r˜   s    rŒ   Úis_irreduciblezDMP.is_irreducibleM  rÐ  rŽ   c                ó   — t         ‚©ú6Returns ``True`` if ``f`` is a cyclotomic polynomial. rÀ   r˜   s    rŒ   Úis_cyclotomiczDMP.is_cyclotomicR  rÐ  rŽ   c                ó"   — | j                  «       S r    )rW  r˜   s    rŒ   Ú__abs__zDMP.__abs__W  ó   € Ø�u‰u‹wˆrŽ   c                ó"   — | j                  «       S r    ©r[  r˜   s    rŒ   Ú__neg__zDMP.__neg__Z  rø  rŽ   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr    )rƒ   r€   rw  r`  r   ÚNotImplementedr¸  s     rŒ   Ú__add__zDMP.__add__]  óA   € Ü�aœÔØ—5‘5˜“8ˆOð&Ø—|‘| A“Ð&øÜ!ò &Ü%Ò%ð&úó   £4 ´AÁAc                ó$   — | j                  |«      S r    ©rþ  r¸  s     rŒ   Ú__radd__zDMP.__radd__f  ó   € Ø�y‰y˜‹|ÐrŽ   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr    )rƒ   r€   r|  re  r   rý  r¸  s     rŒ   Ú__sub__zDMP.__sub__i  rÿ  r   c                ó&   — |  j                  |«      S r    r  r¸  s     rŒ   Ú__rsub__zDMP.__rsub__r  ó   € Ø��|‰|˜A‹ÐrŽ   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr    )rƒ   r€   r€  ri  r   rý  r¸  s     rŒ   Ú__mul__zDMP.__mul__u  rÿ  r   c                ó$   — | j                  |«      S r    ©r  r¸  s     rŒ   Ú__rmul__zDMP.__rmul__~  r  rŽ   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr    )rƒ   r€   r±  ri  r   rý  r¸  s     rŒ   Ú__truediv__zDMP.__truediv__�  sB   € Ü�aœÔØ—7‘7˜1“:Ðð&Ø—|‘| A“Ð&øÜ!ò &Ü%Ò%ð&úr   c                óÌ   — t        |t        «      r|j                  | «      S 	 | j                  «       j	                  |«      j                  | «      S # t
        $ r	 t        cY S w xY wr    )rƒ   r€   r±  rÉ   ri  r   rý  r¸  s     rŒ   Ú__rtruediv__zDMP.__rtruediv__Š  sV   € Ü�aœÔØ—7‘7˜1“:Ðð&Ø—v‘v“x×*Ñ*¨1Ó-×3Ñ3°AÓ6Ð6øÜ!ò &Ü%Ò%ð&ús   £-A ÁA#Á"A#c                ó$   — | j                  |«      S r    ©rŒ  r‹  s     rŒ   Ú__pow__zDMP.__pow__“  ó   € Ø�u‰u�Q‹xˆrŽ   c                ó$   — | j                  |«      S r    ©r¥  r¸  s     rŒ   Ú
__divmod__zDMP.__divmod__–  r  rŽ   c                ó$   — | j                  |«      S r    ©r©  r¸  s     rŒ   Ú__mod__zDMP.__mod__™  r  rŽ   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr    )rƒ   r€   r­  rm  r‰  rý  r¸  s     rŒ   Ú__floordiv__zDMP.__floordiv__œ  sA   € Ü�aœÔØ—5‘5˜“8ˆOð&Ø—|‘| A“Ð&øÜò &Ü%Ò%ð&úr   c                ó¢   — | |u ryt        |t        «      st        S 	 | j                  |«      \  }}|j	                  |«      S # t
        $ r Y yw xY w)NTF)rƒ   r€   rý  rç   Ú
_strict_eqrz   ru  s       rŒ   Ú__eq__z
DMP.__eq__¥  sV   € Ø�‰6ØÜ˜!œSÔ!Ü!Ð!ð	#Ø—;‘;˜q“>‰DˆAˆqð —<‘< “?Ð"øô !ò 	Ùð	ús   �A Á	AÁAc                ó   — t         ‚r    rÀ   r¸  s     rŒ   r   zDMP._strict_eq±  rÂ   rŽ   c                ó2   — |s| |k(  S | j                  |«      S r    )r   ©r™   ræ   Ústricts      rŒ   ÚeqzDMP.eq´  s   € ÙØ˜‘6ˆMà—<‘< “?Ð"rŽ   c                ó*   — | j                  ||¬«       S )N)r%  )r&  r$  s      rŒ   ÚnezDMP.neº  s   € Ø—4‘4˜ &�4Ó)Ð)Ð)rŽ   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       k  S r    ©rç   r—   ru  s       rŒ   Ú__lt__z
DMP.__lt__½  ó*   € Ø�{‰{˜1‹~‰ˆˆ1Ø�y‰y‹{˜QŸY™Y›[Ñ(Ð(rŽ   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       k  S r    r*  ru  s       rŒ   Ú__le__z
DMP.__le__Á  ó*   € Ø�{‰{˜1‹~‰ˆˆ1Ø�y‰y‹{˜aŸi™i›kÑ)Ð)rŽ   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       kD  S r    r*  ru  s       rŒ   Ú__gt__z
DMP.__gt__Å  r,  rŽ   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       k\  S r    r*  ru  s       rŒ   Ú__ge__z
DMP.__ge__É  r/  rŽ   c                ó   — | j                    S r    )r!  r˜   s    rŒ   Ú__bool__zDMP.__bool__Í  s   € Ø—9‘9ˆ}ÐrŽ   r    ©Fr   ©r¥   r   ©T)FNNNFF)NNF©NN)ÒrÐ   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r�   Úclassmethodr†   Úpropertyr‰   rœ   rª   r­   r¯   r±   r·   r¾   r¹   rÅ   rÇ   rÉ   rÑ   rÕ   rÙ   rÞ   rç   rë   rò   rú   r—   rÔ   r  r  r	  r  r  r  r¶   rµ   r  r"  r(  r.  r0  r4  r3  r9  r?  rD  rJ  rF  rP  rM  rT  rW  r[  r`  re  ri  rm  rq  rw  r|  r€  r…  rŒ  r‘  r—  rœ  r¡  r¥  r©  r­  r±  r^  rd  rh  rl  rp  rt  r{  r  r„  rŠ  r�  r–  r›  r   r¤  r¨  r¬  r°  r*  rÇ  rÌ  rÐ  rÜ  rá  rä  rè  rï  rì  ró  rö  rù  rü  r  rÿ  r  r  r  r  r
  r  r  r  r  r!  r   r&  r%  r+  r*  r3  r1  r8  r<  r;  rA  r@  rG  rF  rO  rM  rL  rW  rT  r[  r^  ra  re  rd  rj  ri  ro  rt  rn  r{  rx  r�  r€  r†  r…  rŒ  r‹  r‘  r�  r–  r•  rš  r�  r   r¥  r§  r«  r­  r¹  rµ  r´  r·  r¶  rÅ  rÂ  rÊ  rÍ  r!  rÓ  r×  rÚ  rÝ  rà  rã  ræ  rê  rî  rñ  rõ  r÷  rû  rþ  r  r  r  r  r  r  r  r  r  r  r  r!  r   r&  r(  r+  r.  r1  r3  r5  r~   rŽ   rŒ   r€   r€   Š   sH  „ Ù3à€Ió&ð ñ	.ó ð	.ð ñó ðò 
ð ñó ðð ñ&ó ð&ð ñCó ðCð ñ@ó ð@ð ñ>ó ð>ò3ò&"ð ñ,ó ð,ð ñ0ó ð0ò"òIòHò2ò"ò
óAóò0ò"ò"ò+ò,ò,ó)ò"ò"ó6ó6ó)ó"ò%ò
Cò
Hò#ò"ò"ó"ó"òò&"òò&"ò"ò"ò"ò/ò/ò/ò/ò1òò
ò
ò
òòò
ò
ò
ò
ò
ò
ò
ò
"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"óò"ò"ò"òEò&ò "ò"ò?ò"ò"ò"ò"ò"ó"ò"óò"ó
ò"ò"ò ò"ò
ò"òò"òò"ò#ò
"ó#ó"ò"òò
"òò
"òò
"ó ò"ò"ò*ò"ò"ò"ò"òò
"òò"ò*ò ò
"ò	"ò"òò"ò'ò"ò'ò"ò/ò"òò"ò"ò"ò"ó"ó"ò"ò"óOò"ò"ò"ò"óJò"ó"ó"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"òòò&òò&òò&òò&ò&òòòò&ò
#ò"ó#ó*ò)ò*ò)ò*órŽ   r€   c                  ó,  — e Zd ZdZdZed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zdod„Zd„ Zd„ Zdpd„Zdpd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-dqd,„Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7drd6„Z8drd7„Z9d8„ Z:d9„ Z;d:„ Z<d;„ Z=d<„ Z>d=„ Z?d>„ Z@d?„ ZAd@„ ZBdA„ ZCdB„ ZDdC„ ZEdD„ ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJdI„ ZKdJ„ ZLdK„ ZMdL„ ZNdM„ ZOdN„ ZPdO„ ZQdP„ ZRdQ„ ZSdR„ ZTdS„ ZUdT„ ZVdU„ ZWdV„ ZXdW„ ZYdpdX„ZZdpdY„Z[dZ„ Z\d[„ Z]d\„ Z^d]„ Z_d^„ Z`d_„ Zad`„ Zbdsda„Zcdsdb„Zdeedc„ «       Zfeedd„ «       Zgeede„ «       Zheedf„ «       Zieedg„ «       Zjeedh„ «       Zkeedi„ «       Zleedj„ «       Zmeedk„ «       Zneedl„ «       Zoeedm„ «       Zpeedn„ «       Zqy)tr“   r�   )r›   rŠ   r‹   c                óZ   — t         j                  | «      }||_        ||_        ||_        |S r    )Úobjectr�   r›   r‹   rŠ   )rˆ   r‰   rŠ   r‹   Úobjs        rŒ   r’   zDMP_Python._newÖ  s*   € ä�n‰n˜SÓ!ˆØˆŒØˆŒØˆŒØˆ
rŽ   c                óÐ   — t        | «      t        |«      k7  ry| j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S ©NF)r…   r‹   rŠ   r›   r¸  s     rŒ   r   zDMP_Python._strict_eqÞ  sJ   € Ü�‹7”d˜1“gÒØØ�u‰u˜Ÿ™‰~ÒE !§%¡%¨1¯5©5¡.ÒE°Q·V±V¸q¿v¹vÑ5EÐErŽ   c                óP   — | j                  || j                  | j                  «      S )ú.Create a DMP out of the given representation. )r’   rŠ   r‹   ©r™   r‰   s     rŒ   ÚperzDMP_Python.perã  s   € à�v‰v�c˜1Ÿ5™5 !§%¡%Ó(Ð(rŽ   c                óx   — | j                  t        || j                  «      | j                  | j                  «      S rÛ   )r’   r    r‹   rŠ   rÜ   s     rŒ   rÞ   zDMP_Python.ground_newç  s(   € à�v‰v”j ¨¯©Ó.°·±°q·u±uÓ=Ð=rŽ   c                óN   — | j                  | j                  | j                  «      S r    )rÇ   r‹   rŠ   r˜   s    rŒ   rÉ   zDMP_Python._oneë  s   € Ø�u‰u�Q—U‘U˜AŸE™EÓ"Ð"rŽ   c                ó(  ‡ ‡‡— t        |t        «      r‰ j                  |j                  k7  rt        d‰ ›d|›�«      ‚‰ j                  |j                  k(  r9‰ j                  ‰ j                  ‰ j
                  ‰ j                  |j                  fS ‰ j                  ‰ j                  j                  |j                  «      cŠŠt        ‰ j                  ‰‰ j                  ‰«      }t        |j                  ‰|j                  ‰«      }ˆˆ ˆfd„}‰‰|||fS )z7Unify representations of two multivariate polynomials. râ   rã   c                ó*   •— ‰j                  | ‰‰«      S r    )r’   )r‰   rŠ   r™   r‹   s    €€€rŒ   rI  zDMP_Python.unify.<locals>.perý  s   ø€ Ø—v‘v˜c 3¨Ó,Ð,rŽ   )	rƒ   r€   r‹   rz   rŠ   rI  r›   rä   r   )r™   ræ   rI  rv  rI  rŠ   r‹   s   `    @@rŒ   rä   zDMP_Python.unifyî  sÉ   ú€ ô ˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—5‘5˜!Ÿ%™% §¡¨¯©°·±Ð6Ð6à—u‘u˜aŸe™eŸk™k¨!¯%©%Ó0ˆHˆC�ä˜AŸF™F C¨¯©°Ó4ˆAÜ˜AŸF™F C¨¯©°Ó4ˆAö-ð ˜˜S ! QÐ&Ð&rŽ   c                ól   — t         j                  | j                  | j                  | j                  «      S )z)Convert ``f`` to a Flint representation. )r‘   r’   r›   rŠ   r‹   r˜   s    rŒ   r»   zDMP_Python.to_DUP_Flint  s!   € ä�~‰~˜aŸf™f a§e¡e¨Q¯U©UÓ3Ð3rŽ   c                ó,   — t        | j                  «      S rü   )r„   r›   r˜   s    rŒ   r—   zDMP_Python.to_list  s   € ä�A—F‘F‹|ÐrŽ   c                óB   — t        | j                  | j                  «      S ©zBConvert ``f`` to a tuple representation with native coefficients. )r1   r›   r‹   r˜   s    rŒ   rÔ   zDMP_Python.to_tuple
  s   € ä˜AŸF™F A§E¡EÓ*Ð*rŽ   c                ó�   — | j                  t        | j                  | j                  | j                  |«      || j                  «      S )ú$Convert the ground domain of ``f``. )r’   r   r›   r‹   rŠ   r½   s     rŒ   r¹   zDMP_Python._convert  s0   € à�v‰v”k !§&¡&¨!¯%©%°·±¸Ó<¸cÀ1Ç5Á5ÓIÐIrŽ   c                ó”   — t        | j                  ||| j                  «      }| j                  || j                  | j                  «      S r  )r.   r›   rŠ   r’   r‹   )r™   r  r  r‰   s       rŒ   r  zDMP_Python._slice  s5   € ä˜Ÿ™  1 a§e¡eÓ,ˆØ�v‰v�c˜1Ÿ5™5 !§%¡%Ó(Ð(rŽ   c                ó¬   — t        | j                  |||| j                  | j                  «      }| j	                  || j                  | j                  «      S r  )r/   r›   r‹   rŠ   r’   )r™   r  r  r  r‰   s        rŒ   r  zDMP_Python._slice_lev  s=   € ä˜1Ÿ6™6 1 a¨¨A¯E©E°1·5±5Ó9ˆØ�v‰v�c˜1Ÿ5™5 !§%¡%Ó(Ð(rŽ   Nc                ó\   — t        | j                  | j                  | j                  |¬«      S )r  r  )r,   r›   r‹   rŠ   r%  s     rŒ   r"  zDMP_Python._terms  s   € ä˜aŸf™f a§e¡e¨Q¯U©U¸%Ô@Ð@rŽ   c                óº   — t        | j                  | j                  | j                  «      }| j	                  || j                  j                  | j                  «      S r2  )rY   r›   r‹   rŠ   r’   ©r™   r§   s     rŒ   r3  zDMP_Python._lift   s;   € ä�Q—V‘V˜QŸU™U A§E¡EÓ*ˆØ�v‰v�a˜Ÿ™Ÿ™ A§E¡EÓ*Ð*rŽ   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS r7  )r(   r›   r‹   rŠ   rI  rG  s      rŒ   r9  zDMP_Python.deflate%  s2   € ä˜1Ÿ6™6 1§5¡5¨!¯%©%Ó0‰ˆˆ1Ø�!—%‘%˜“(ˆ{ÐrŽ   c                ó°   — t        | j                  | j                  | j                  |¬«      \  }}| j	                  || j                  j                  |«      S )r<  ©r>  )r)   r›   r‹   rŠ   r’   )r™   r>  rI  r‹   s       rŒ   r?  zDMP_Python.inject*  s=   € ä˜AŸF™F A§E¡E¨1¯5©5¸Ô>‰ˆˆ3à�v‰v�a˜Ÿ™Ÿ™ CÓ(Ð(rŽ   c                ó®   — t        | j                  | j                  ||¬«      }| j                  ||| j                  t	        |j
                  «      z
  «      S )rB  r[  )r*   r›   r‹   r’   rÒ  Úsymbols)r™   rŠ   r>  rI  s       rŒ   rD  zDMP_Python.eject0  s?   € ä�a—f‘f˜aŸe™e S°Ô6ˆà�v‰v�a˜˜aŸe™e¤c¨#¯+©+Ó&6Ñ6Ó7Ð7rŽ   c                óž   — t        | j                  | j                  | j                  «      \  }}}|| j	                  || j                  |«      fS ©z&Remove useless generators from ``f``. )r-   r›   r‹   rŠ   r’   )r™   rH  rI  Úus       rŒ   rF  zDMP_Python._exclude6  s>   € ä˜aŸf™f a§e¡e¨Q¯U©UÓ3‰ˆˆ1ˆaà�!—&‘&˜˜AŸE™E 1Ó%Ð%Ð%rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S ©z6Returns a polynomial in `K[x_{P(1)}, ..., x_{P(n)}]`. )rI  r0   r›   r‹   rŠ   rN  s     rŒ   rM  zDMP_Python._permute<  s(   € à�u‰u”[ §¡¨¨A¯E©E°1·5±5Ó9Ó:Ð:rŽ   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS rS  )r+   r›   r‹   rŠ   rI  rG  s      rŒ   rT  zDMP_Python.terms_gcd@  s2   € ä˜QŸV™V Q§U¡U¨A¯E©EÓ2‰ˆˆ1Ø�!—%‘%˜“(ˆ{ÐrŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S r]  )rI  r2   r›   r‹   rŠ   r_  s     rŒ   r^  zDMP_Python._add_groundE  ó(   € à�u‰u”^ A§F¡F¨A¨q¯u©u°a·e±eÓ<Ó=Ð=rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rc  )rI  r3   r›   r‹   rŠ   r_  s     rŒ   rd  zDMP_Python._sub_groundI  re  rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rg  )rI  r4   r›   r‹   rŠ   r_  s     rŒ   rh  zDMP_Python._mul_groundM  re  rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rk  )rI  r5   r›   r‹   rŠ   r_  s     rŒ   rl  zDMP_Python._quo_groundQ  re  rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S ro  )rI  r6   r›   r‹   rŠ   r_  s     rŒ   rp  zDMP_Python._exquo_groundU  ó)   € à�u‰uÔ% a§f¡f¨a°·±¸¿¹Ó>Ó?Ð?rŽ   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S rV  )rI  r7   r›   r‹   rŠ   r˜   s    rŒ   rW  zDMP_Python.absY  ó&   € à�u‰u”W˜QŸV™V Q§U¡U¨A¯E©EÓ2Ó3Ð3rŽ   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S rY  )rI  r8   r›   r‹   rŠ   r˜   s    rŒ   r[  zDMP_Python.neg]  rl  rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rs  )rI  r9   r›   r‹   rŠ   r¸  s     rŒ   rt  zDMP_Python._adda  ó,   € à�u‰u”W˜QŸV™V Q§V¡V¨Q¯U©U°A·E±EÓ:Ó;Ð;rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rz  )rI  r:   r›   r‹   rŠ   r¸  s     rŒ   r{  zDMP_Python._sube  ro  rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r~  )rI  r;   r›   r‹   rŠ   r¸  s     rŒ   r  zDMP_Python._muli  ro  rŽ   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S r‚  )rI  r<   r›   r‹   rŠ   r˜   s    rŒ   r…  zDMP_Python.sqrm  rl  rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S ©r‡  )rI  r=   r›   r‹   rŠ   r‹  s     rŒ   rŠ  zDMP_Python._powq  s(   € à�u‰u”W˜QŸV™V Q¨¯©¨q¯u©uÓ5Ó6Ð6rŽ   c                ó¸   — t        | j                  |j                  | j                  | j                  «      \  }}| j	                  |«      | j	                  |«      fS rŽ  )r>   r›   r‹   rŠ   rI  ©r™   ræ   ry  r§   s       rŒ   r�  zDMP_Python._pdivu  sA   € ä˜Ÿ™ §¡¨¯©¨q¯u©uÓ5‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r”  )rI  r?   r›   r‹   rŠ   r¸  s     rŒ   r–  zDMP_Python._premz  ó,   € à�u‰u”X˜aŸf™f a§f¡f¨a¯e©e°Q·U±UÓ;Ó<Ð<rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r™  )rI  r@   r›   r‹   rŠ   r¸  s     rŒ   r›  zDMP_Python._pquo~  rx  rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rž  )rI  rA   r›   r‹   rŠ   r¸  s     rŒ   r   zDMP_Python._pexquo‚  s,   € à�u‰u”Z §¡¨¯©°·±°q·u±uÓ=Ó>Ð>rŽ   c                ó¸   — t        | j                  |j                  | j                  | j                  «      \  }}| j	                  |«      | j	                  |«      fS r£  )rB   r›   r‹   rŠ   rI  rv  s       rŒ   r¤  zDMP_Python._div†  sA   € ä�q—v‘v˜qŸv™v q§u¡u¨a¯e©eÓ4‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r§  )rI  rC   r›   r‹   rŠ   r¸  s     rŒ   r¨  zDMP_Python._rem‹  ro  rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r«  )rI  rD   r›   r‹   rŠ   r¸  s     rŒ   r¬  zDMP_Python._quo�  ro  rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r¯  )rI  rE   r›   r‹   rŠ   r¸  s     rŒ   r°  zDMP_Python._exquo“  s,   € à�u‰u”Y˜qŸv™v q§v¡v¨q¯u©u°a·e±eÓ<Ó=Ð=rŽ   c                óD   — t        | j                  || j                  «      S )rÆ  )r   r›   r‹   rÈ  s     rŒ   rÇ  zDMP_Python._degree—  s   € ä˜QŸV™V Q¨¯©Ó.Ð.rŽ   c                óB   — t        | j                  | j                  «      S rË  )r   r›   r‹   r˜   s    rŒ   rÌ  zDMP_Python.degree_list›  s   € ä˜qŸv™v q§u¡uÓ-Ð-rŽ   c                óB   — t        d„ | j                  «       D «       «      S )rÏ  c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr    ©rÓ  )r¢   r  s     rŒ   r¤   z*DMP_Python.total_degree.<locals>.<genexpr>¡  s   è ø€ Ò.˜a”3�q—6Ñ.ùs   ‚)Úmaxrµ   r˜   s    rŒ   rÐ  zDMP_Python.total_degreeŸ  s   € äÑ. 1§8¡8£:Ô.Ó.Ð.rŽ   c                óX   — t        | j                  | j                  | j                  «      S rã  )r   r›   r‹   rŠ   r˜   s    rŒ   rä  zDMP_Python.LC£  ó   € ä˜QŸV™V Q§U¡U¨A¯E©EÓ2Ð2rŽ   c                óX   — t        | j                  | j                  | j                  «      S ræ  )r   r›   r‹   rŠ   r˜   s    rŒ   rè  zDMP_Python.TC§  r†  rŽ   c                óZ   — t        | j                  || j                  | j                  «      S ©rê  )r   r›   r‹   rŠ   rí  s     rŒ   rì  zDMP_Python._nth«  s   € ä˜aŸf™f a¨¯©°·±Ó6Ð6rŽ   c                óX   — t        | j                  | j                  | j                  «      S rò  )rH   r›   r‹   rŠ   r˜   s    rŒ   ró  zDMP_Python.max_norm¯  s   € ä˜AŸF™F A§E¡E¨1¯5©5Ó1Ð1rŽ   c                óX   — t        | j                  | j                  | j                  «      S rõ  )rI   r›   r‹   rŠ   r˜   s    rŒ   rö  zDMP_Python.l1_norm³  s   € ä˜1Ÿ6™6 1§5¡5¨!¯%©%Ó0Ð0rŽ   c                óX   — t        | j                  | j                  | j                  «      S rø  )rJ   r›   r‹   rŠ   r˜   s    rŒ   rù  zDMP_Python.l2_norm_squared·  s   € ä" 1§6¡6¨1¯5©5°!·%±%Ó8Ð8rŽ   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS rû  )rK   r›   r‹   rŠ   rI  )r™   rÝ   rI  s      rŒ   rü  zDMP_Python.clear_denoms»  s2   € ä# A§F¡F¨A¯E©E°1·5±5Ó9‰ˆˆqØ�a—e‘e˜A“hˆÐrŽ   c           	     óz   — | j                  t        | j                  ||| j                  | j                  «      «      S )rþ  )rI  rL   r›   r‹   rŠ   r   s      rŒ   rÿ  zDMP_Python._integrateÀ  s+   € à�u‰uÔ% a§f¡f¨a°°A·E±E¸1¿5¹5ÓAÓBÐBrŽ   c           	     óz   — | j                  t        | j                  ||| j                  | j                  «      «      S )r  )rI  rM   r›   r‹   rŠ   r   s      rŒ   r  zDMP_Python._diffÄ  s*   € à�u‰u”[ §¡¨¨A¨q¯u©u°a·e±eÓ<Ó=Ð=rŽ   c                óŽ   — t        | j                  | j                  j                  |«      d| j                  | j                  «      S r�   )rN   r›   rŠ   r¾   r‹   r  s     rŒ   r  zDMP_Python._evalÈ  s.   € Ü˜1Ÿ6™6 1§5¡5§=¡=°Ó#3°Q¸¿¹¸q¿u¹uÓEÐErŽ   c                óâ   — t        | j                  | j                  j                  |«      || j                  | j                  «      }| j                  || j                  | j                  dz
  «      S ©Nr¥   )rN   r›   rŠ   r¾   r‹   r†   )r™   r  r  r‰   s       rŒ   r
  zDMP_Python._eval_levË  sL   € Ü˜!Ÿ&™& !§%¡%§-¡-°Ó"2°A°q·u±u¸a¿e¹eÓDˆØ�u‰u�S˜!Ÿ%™% §¡¨¡Ó+Ð+rŽ   c                ó¢   — t        | j                  |j                  | j                  «      \  }}| j                  |«      | j                  |«      fS )r  )rZ   r›   rŠ   rI  ©r™   ræ   rÕ  Úhs       rŒ   r  zDMP_Python._half_gcdexÏ  s;   € ä˜aŸf™f a§f¡f¨a¯e©eÓ4‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!rŽ   c                óÄ   — t        | j                  |j                  | j                  «      \  }}}| j                  |«      | j                  |«      | j                  |«      fS )r  )r[   r›   rŠ   rI  )r™   ræ   rÕ  rÄ  r•  s        rŒ   r  zDMP_Python._gcdexÔ  sG   € ä˜AŸF™F A§F¡F¨A¯E©EÓ2‰ˆˆ1ˆaØ�u‰u�Q‹x˜Ÿ™˜q› 1§5¡5¨£8Ð+Ð+rŽ   c                óz   — t        | j                  |j                  | j                  «      }| j                  |«      S )r  )r\   r›   rŠ   rI  )r™   ræ   rÕ  s      rŒ   r   zDMP_Python._invertÙ  s)   € ä�q—v‘v˜qŸv™v q§u¡uÓ-ˆØ�u‰u�Q‹xˆrŽ   c                ób   — | j                  t        | j                  || j                  «      «      S ©r$  )rI  rO   r›   rŠ   r‹  s     rŒ   r%  zDMP_Python._revertÞ  s"   € à�u‰u”Z §¡¨¨1¯5©5Ó1Ó2Ð2rŽ   c                ó¬   — t        | j                  |j                  | j                  | j                  «      }t	        t        | j                  |«      «      S r)  )r]   r›   r‹   rŠ   r„   ÚmaprI  ©r™   ræ   ÚRs      rŒ   r*  zDMP_Python._subresultantsâ  s7   € ä˜aŸf™f a§f¡f¨a¯e©e°Q·U±UÓ;ˆÜ”C˜Ÿ™˜q“MÓ"Ð"rŽ   c                ó&  — t        | j                  |j                  | j                  | j                  d¬«      \  }}| j                  r*| j	                  || j                  | j                  dz
  «      }|t        t        | j                  |«      «      fS )r/  T)r2  r¥   )r^   r›   r‹   rŠ   r†   r„   r›  rI  ©r™   ræ   Úresr�  s       rŒ   r0  z DMP_Python._resultant_includePRSç  sg   € ä˜qŸv™v q§v¡v¨q¯u©u°a·e±eÈÔM‰ˆˆQØ�5Š5Ø—%‘%˜˜QŸU™U A§E¡E¨A¡IÓ.ˆCØ”Dœ˜QŸU™U A›Ó'Ð'Ð'rŽ   c                óÞ   — t        | j                  |j                  | j                  | j                  «      }| j                  r*| j	                  || j                  | j                  dz
  «      }|S r’  )r^   r›   r‹   rŠ   r†   )r™   ræ   r   s      rŒ   r1  zDMP_Python._resultantî  sL   € Ü˜AŸF™F A§F¡F¨A¯E©E°1·5±5Ó9ˆØ�5Š5Ø—%‘%˜˜QŸU™U A§E¡E¨A¡IÓ.ˆCØˆ
rŽ   c                óÈ   — t        | j                  | j                  | j                  «      }| j                  r*| j	                  || j                  | j                  dz
  «      }|S )r7  r¥   )r_   r›   r‹   rŠ   r†   )r™   r   s     rŒ   r8  zDMP_Python.discriminantô  sF   € ä˜qŸv™v q§u¡u¨a¯e©eÓ4ˆØ�5Š5Ø—%‘%˜˜QŸU™U A§E¡E¨A¡IÓ.ˆCØˆ
rŽ   c                óÚ   — t        | j                  |j                  | j                  | j                  «      \  }}}| j	                  |«      | j	                  |«      | j	                  |«      fS r:  )r`   r›   r‹   rŠ   rI  )r™   ræ   r•  ÚcffÚcfgs        rŒ   r;  zDMP_Python._cofactorsû  sM   € ä# A§F¡F¨A¯F©F°A·E±E¸1¿5¹5ÓA‰ˆˆ3�Ø�u‰u�Q‹x˜Ÿ™˜s› Q§U¡U¨3£ZÐ/Ð/rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r?  )rI  ra   r›   r‹   rŠ   r¸  s     rŒ   r@  zDMP_Python._gcd   ro  rŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rD  )rI  rb   r›   r‹   rŠ   r¸  s     rŒ   rF  zDMP_Python._lcm  ro  rŽ   c                óÄ   — t        | j                  |j                  | j                  | j                  d¬«      \  }}}}||| j	                  |«      | j	                  |«      fS )rK  F©rN  ©rc   r›   r‹   rŠ   rI  ©r™   ræ   ÚcFÚcGrI  rv  s         rŒ   rM  zDMP_Python._cancel  sK   € ä! !§&¡&¨!¯&©&°!·%±%¸¿¹ÈÔN‰ˆˆB��1Ø�2�q—u‘u˜Q“x §¡ q£Ð)Ð)rŽ   c                ó¼   — t        | j                  |j                  | j                  | j                  d¬«      \  }}| j	                  |«      | j	                  |«      fS )rK  Tr©  rª  ru  s       rŒ   rL  zDMP_Python._cancel_include  sC   € ä˜!Ÿ&™& !§&¡&¨!¯%©%°·±ÀÔE‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rS  )rI  rP   r›   r‹   rŠ   rU  s     rŒ   rT  zDMP_Python._trunc  rj  rŽ   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S rZ  )rI  rS   r›   r‹   rŠ   r˜   s    rŒ   r[  zDMP_Python.monic  s'   € à�u‰uÔ% a§f¡f¨a¯e©e°Q·U±UÓ;Ó<Ð<rŽ   c                óX   — t        | j                  | j                  | j                  «      S r]  )rQ   r›   r‹   rŠ   r˜   s    rŒ   r^  zDMP_Python.content  s   € ä! !§&¡&¨!¯%©%°·±Ó7Ð7rŽ   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS r`  )rR   r›   r‹   rŠ   rI  )r™   ÚcontrI  s      rŒ   ra  zDMP_Python.primitive  s2   € ä& q§v¡v¨q¯u©u°a·e±eÓ<‰ˆˆaØ�Q—U‘U˜1“Xˆ~ÐrŽ   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rc  )rI  rT   r›   r‹   rŠ   r¸  s     rŒ   rd  zDMP_Python._compose#  s,   € à�u‰u”[ §¡¨¯©°·±¸¿¹Ó>Ó?Ð?rŽ   c           	     ó|   — t        t        | j                  t        | j                  | j
                  «      «      «      S ©rh  )r„   r›  rI  rU   r›   rŠ   r˜   s    rŒ   ri  zDMP_Python._decompose'  s'   € ä”C˜Ÿ™œ}¨Q¯V©V°Q·U±UÓ;Ó<Ó=Ð=rŽ   c                ób   — | j                  t        | j                  || j                  «      «      S ©rm  )rI  rV   r›   rŠ   r  s     rŒ   rn  zDMP_Python._shift+  s"   € à�u‰u”Y˜qŸv™v q¨!¯%©%Ó0Ó1Ð1rŽ   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rq  )rI  rW   r›   r‹   rŠ   r  s     rŒ   rr  zDMP_Python._shift_list/  s(   € à�u‰u”Y˜qŸv™v q¨!¯%©%°·±Ó7Ó8Ð8rŽ   c                óŒ   — | j                  t        | j                  |j                  |j                  | j                  «      «      S ©rw  )rI  rX   r›   rŠ   r}  s      rŒ   rx  zDMP_Python._transform3  s,   € à�u‰u”] 1§6¡6¨1¯6©6°1·6±6¸1¿5¹5ÓAÓBÐBrŽ   c           	     ó|   — t        t        | j                  t        | j                  | j
                  «      «      «      S ©r  )r„   r›  rI  rv   r›   rŠ   r˜   s    rŒ   r€  zDMP_Python._sturm7  s'   € ä”C˜Ÿ™œy¨¯©°·±Ó7Ó8Ó9Ð9rŽ   c                óB   — t        | j                  | j                  «      S ©r„  )rw   r›   rŠ   r˜   s    rŒ   r…  zDMP_Python._cauchy_upper_bound;  ó   € ä% a§f¡f¨a¯e©eÓ4Ð4rŽ   c                óB   — t        | j                  | j                  «      S ©rŠ  )rx   r›   rŠ   r˜   s    rŒ   r‹  zDMP_Python._cauchy_lower_bound?  rÀ  rŽ   c                óB   — t        | j                  | j                  «      S ©r�  )ry   r›   rŠ   r˜   s    rŒ   r�  z&DMP_Python._mignotte_sep_bound_squaredC  s   € ä-¨a¯f©f°a·e±eÓ<Ð<rŽ   c                ó–   — t        | j                  | j                  «      D ��cg c]  \  }}| j                  |«      |f‘Œ c}}S c c}}w ©r”  )rd   r›   rŠ   rI  )r™   ræ   rð   s      rŒ   r•  zDMP_Python._gff_listG  s5   € ä+7¸¿¹ÀÇÁÓ+F×H¡4 1 a�!—%‘%˜“(˜A’ÓHÐHùÓHs   ¤Ac                óº   — t        | j                  | j                  | j                  «      }| j	                  || j                  j                  | j                  «      S r™  )re   r›   r‹   rŠ   r†   rX  s     rŒ   rš  zDMP_Python.normK  s;   € ä�Q—V‘V˜QŸU™U A§E¡EÓ*ˆØ�u‰u�Q˜Ÿ™Ÿ	™	 1§5¡5Ó)Ð)rŽ   c                óæ   — t        | j                  | j                  | j                  «      \  }}}|| j	                  |«      | j                  || j                  j                  | j                  «      fS rœ  )rg   r›   r‹   rŠ   rI  r†   )r™   rÕ  ræ   r§   s       rŒ   r�  zDMP_Python.sqf_normP  sP   € ä˜qŸv™v q§u¡u¨a¯e©eÓ4‰ˆˆ1ˆaØ�!—%‘%˜“(˜AŸE™E ! Q§U¡U§Y¡Y°·±Ó6Ð6Ð6rŽ   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S rŸ  )rI  rh   r›   r‹   rŠ   r˜   s    rŒ   r   zDMP_Python.sqf_partU  s&   € à�u‰u”\ !§&¡&¨!¯%©%°·±Ó7Ó8Ð8rŽ   c                ó¼   — t        | j                  | j                  | j                  |«      \  }}||D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}fS c c}}w r¢  )ri   r›   r‹   rŠ   rI  ©r™   r¦   rÝ   Úfactorsræ   rð   s         rŒ   r¥  zDMP_Python.sqf_listY  sK   € ä% a§f¡f¨a¯e©e°Q·U±U¸CÓ@‰ˆˆwØ°'×;©$¨!¨Q˜Ÿ™˜q› 1šÓ;Ð;Ð;ùÓ;s   ¶Ac                ó²   — t        | j                  | j                  | j                  |«      }|D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}S c c}}w r¢  )rj   r›   r‹   rŠ   rI  ©r™   r¦   rÌ  ræ   rð   s        rŒ   r§  zDMP_Python.sqf_list_include^  sB   € ä& q§v¡v¨q¯u©u°a·e±e¸SÓAˆØ+2×4¡4 1 a�!—%‘%˜“(˜A’Ó4Ð4ùÓ4s   ²Ac                óº   — t        | j                  | j                  | j                  «      \  }}||D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}fS c c}}w r©  )rm   r›   r‹   rŠ   rI  )r™   rÝ   rÌ  ræ   rð   s        rŒ   r«  zDMP_Python.factor_listc  sI   € ä(¨¯©°·±¸¿¹Ó>‰ˆˆwØ°'×;©$¨!¨Q˜Ÿ™˜q› 1šÓ;Ð;Ð;ùÓ;s   µAc                ó°   — t        | j                  | j                  | j                  «      }|D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}S c c}}w r©  )rn   r›   r‹   rŠ   rI  ©r™   rÌ  ræ   rð   s       rŒ   r­  zDMP_Python.factor_list_includeh  s@   € ä)¨!¯&©&°!·%±%¸¿¹Ó?ˆØ+2×4¡4 1 a�!—%‘%˜“(˜A’Ó4Ð4ùÓ4s   ±Ac                óL   — t        | j                  | j                  ||||¬«      S ©Nr¯  )rp   r›   rŠ   r»  s        rŒ   r·  zDMP_Python._isolate_real_rootsm  s    € Ü% a§f¡f¨a¯e©e¸À#È3ÐUYÔZÐZrŽ   c                óL   — t        | j                  | j                  ||||¬«      S rÓ  )ro   r›   rŠ   r»  s        rŒ   r¶  z"DMP_Python._isolate_real_roots_sqfp  s    € Ü)¨!¯&©&°!·%±%¸SÀcÈsÐY]Ô^Ð^rŽ   c                óL   — t        | j                  | j                  ||||¬«      S rÓ  )rr   r›   rŠ   r»  s        rŒ   rµ  zDMP_Python._isolate_all_rootss  s    € Ü$ Q§V¡V¨Q¯U©U¸ÀÈ#ÐTXÔYÐYrŽ   c                óL   — t        | j                  | j                  ||||¬«      S rÓ  )rq   r›   rŠ   r»  s        rŒ   r´  z!DMP_Python._isolate_all_roots_sqfv  s    € Ü(¨¯©°·±¸CÀSÈcÐX\Ô]Ð]rŽ   c           	     óN   — t        | j                  ||| j                  |||¬«      S )NrÀ  )rs   r›   rŠ   rÃ  s         rŒ   rÂ  zDMP_Python._refine_real_rooty  s"   € Ü# A§F¡F¨A¨q°!·%±%¸SÈÐTXÔYÐYrŽ   c                óH   — t        | j                  | j                  ||¬«      S ©rÈ  ©r±  r²  )rt   r›   rŠ   rÉ  s      rŒ   rÊ  zDMP_Python.count_real_roots|  s   € ä# A§F¡F¨A¯E©E°sÀÔDÐDrŽ   c                óH   — t        | j                  | j                  ||¬«      S ©rÌ  rÚ  )ru   r›   rŠ   rÉ  s      rŒ   rÍ  zDMP_Python.count_complex_roots€  s   € ä& q§v¡v¨q¯u©u¸#À3ÔGÐGrŽ   c                óB   — t        | j                  | j                  «      S rÏ  )r"   r›   r‹   r˜   s    rŒ   r!  zDMP_Python.is_zero„  s   € ô ˜!Ÿ&™& !§%¡%Ó(Ð(rŽ   c                óX   — t        | j                  | j                  | j                  «      S rÒ  )r#   r›   r‹   rŠ   r˜   s    rŒ   rÓ  zDMP_Python.is_one‰  ó   € ô ˜Ÿ™ §¡¨¯©Ó.Ð.rŽ   c                óD   — t        | j                  d| j                  «      S )rÖ  N)r$   r›   r‹   r˜   s    rŒ   r×  zDMP_Python.is_groundŽ  s   € ô ˜AŸF™F D¨!¯%©%Ó0Ð0rŽ   c                óX   — t        | j                  | j                  | j                  «      S rÙ  )rf   r›   r‹   rŠ   r˜   s    rŒ   rÚ  zDMP_Python.is_sqf“  rß  rŽ   c                óŠ   — | j                   j                  t        | j                  | j                  | j                   «      «      S rÜ  )rŠ   rÓ  r   r›   r‹   r˜   s    rŒ   rÝ  zDMP_Python.is_monic˜  s,   € ð �u‰u�|‰|œM¨!¯&©&°!·%±%¸¿¹Ó?Ó@Ð@rŽ   c                óŠ   — | j                   j                  t        | j                  | j                  | j                   «      «      S rß  )rŠ   rÓ  rQ   r›   r‹   r˜   s    rŒ   rà  zDMP_Python.is_primitive�  s-   € ð �u‰u�|‰|Ô.¨q¯v©v°q·u±u¸a¿e¹eÓDÓEÐErŽ   c                ó”   — t        d„ t        | j                  | j                  | j                  «      j                  «       D «       «      S )râ  c              3  ó8   K  — | ]  }t        |«      d k  –— Œ y­w)r¥   Nrƒ  ©r¢   rß  s     rŒ   r¤   z'DMP_Python.is_linear.<locals>.<genexpr>¥  ó   è ø€ ÒY u”3�u“: •?ÑYùó   ‚©r¦   r'   r›   r‹   rŠ   Úkeysr˜   s    rŒ   rã  zDMP_Python.is_linear¢  ó3   € ô ÑY´¸A¿F¹FÀAÇEÁEÈ1Ï5É5Ó0Q×0VÑ0VÓ0XÔYÓYÐYrŽ   c                ó”   — t        d„ t        | j                  | j                  | j                  «      j                  «       D «       «      S )rå  c              3  ó8   K  — | ]  }t        |«      d k  –— Œ y­w)é   Nrƒ  ræ  s     rŒ   r¤   z*DMP_Python.is_quadratic.<locals>.<genexpr>ª  rç  rè  ré  r˜   s    rŒ   ræ  zDMP_Python.is_quadratic§  rë  rŽ   c                ó:   — t        | j                  «       «      dk  S )ré  r¥   )rÒ  rë   r˜   s    rŒ   rê  zDMP_Python.is_monomial¬  s   € ô �1—9‘9“;Ó 1Ñ$Ð$rŽ   c                ó&   — | j                  «       duS )rí  N)rá  r˜   s    rŒ   rî  zDMP_Python.is_homogeneous±  s   € ð ×"Ñ"Ó$¨DÐ0Ð0rŽ   c                óX   — t        | j                  | j                  | j                  «      S rð  )rl   r›   r‹   rŠ   r˜   s    rŒ   rñ  zDMP_Python.is_irreducible¶  s   € ô ! §¡¨¯©°·±Ó6Ð6rŽ   c                ó\   — | j                   s t        | j                  | j                  «      S y)rô  F)r‹   rk   r›   rŠ   r˜   s    rŒ   rõ  zDMP_Python.is_cyclotomic»  s#   € ð �uŠuÜ# A§F¡F¨A¯E©EÓ2Ð2àrŽ   r    r6  r   r7  r9  )rrÐ   r:  r;  r<  r=  r>  r’   r   rI  rÞ   rÉ   rä   r»   r—   rÔ   r¹   r  r  r"  r3  r9  r?  rD  rF  rM  rT  r^  rd  rh  rl  rp  rW  r[  rt  r{  r  r…  rŠ  r�  r–  r›  r   r¤  r¨  r¬  r°  rÇ  rÌ  rÐ  rä  rè  rì  ró  rö  rù  rü  rÿ  r  r  r
  r  r  r   r%  r*  r0  r1  r8  r;  r@  rF  rM  rL  rT  r[  r^  ra  rd  ri  rn  rr  rx  r€  r…  r‹  r�  r•  rš  r�  r   r¥  r§  r«  r­  r·  r¶  rµ  r´  rÂ  rÊ  rÍ  r?  r!  rÓ  r×  rÚ  rÝ  rà  rã  ræ  rê  rî  rñ  rõ  r~   rŽ   rŒ   r“   r“   Ñ  sû  „ Ù3à&€Iàñó ðòFò
)ò>ò#ò'ò(4òò+òJò)ò
)ó
Aò+ò
ó
)ó8ò&ò;òò
>ò>ò>ò>ò@ò4ò4ò<ò<ò<ò4ò7ò"ò
=ò=ò?ò"ò
<ò<ò>ó/ò.ò/ò3ò3ò7ò2ò1ò9òó
Có>òFò,ò"ò
,ò
ò
3ò#ò
(òòò0ò
<ò<ò*ò
"ò
@ò=ò8òò
@ò>ò2ò9òCò:ò5ò5ò=òIò*ò
7ò
9ó<ó
5ò
<ò
5ò
[ò_òZò^òZóEóHð ñ)ó ð)ð ñ/ó ð/ð ñ1ó ð1ð ñ/ó ð/ð ñAó ðAð ñFó ðFð ñZó ðZð ñZó ðZð ñ%ó ð%ð ñ1ó ð1ð ñ7ó ð7ð ñó ñrŽ   r“   c                  ó`  — e Zd ZdZdZdZd„ Zed„ «       Zd„ Z	ed„ «       Z
ed„ «       Zed	„ «       Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdsd„Zd„ Zd„ Zdtd„Zdtd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1dud0„Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7d6„ Z8d7„ Z9d8„ Z:d9„ Z;dvd:„Z<dvd;„Z=d<„ Z>d=„ Z?d>„ Z@d?„ ZAd@„ ZBdA„ ZCdB„ ZDdC„ ZEdD„ ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJdI„ ZKdJ„ ZLdK„ ZMdL„ ZNdM„ ZOdN„ ZPdO„ ZQdP„ ZRdQ„ ZSdR„ ZTdS„ ZUdT„ ZVdU„ ZWdV„ ZXdW„ ZYdX„ ZZdY„ Z[dZ„ Z\dtd[„Z]dtd\„Z^d]„ Z_d^„ Z`d_„ Zad`„ Zbda„ Zcdb„ Zddc„ Zedd„ Zfdwde„Zgdwdf„Zheidg„ «       Zjeidh„ «       Zkeidi„ «       Zleidj„ «       Zmeidk„ «       Zneidl„ «       Zoeidm„ «       Zpeidn„ «       Zqeido„ «       Zreidp„ «       Zseidq„ «       Zteidr„ «       Zuy)xr‘   r�   r   )r›   rŠ   Ú_clsc                óh   — | j                   | j                  «       | j                  | j                  ffS r    )rÏ   r—   rŠ   r‹   r×   s    rŒ   Ú
__reduce__zDUP_Flint.__reduce__Ë  s&   € Ø�~‰~ §¡£°·±¸$¿(¹(ÐCÐCÐCrŽ   c                óX   — | j                  |d d d…   ||«      }| j                  ||«      S ©Néÿÿÿÿ)Ú_flint_polyÚfrom_repr‡   s       rŒ   r’   zDUP_Flint._newÎ  s-   € à�o‰o˜c¡$ B $™i¨¨cÓ2ˆØ�|‰|˜C Ó%Ð%rŽ   c                óB   — | j                   j                  «       ddd…   S )rý   Nrù  )r›   r¶   r˜   s    rŒ   r—   zDUP_Flint.to_listÓ  s   € à�v‰v�}‰}‹™t ˜tÑ$Ð$rŽ   c                óV   — |t         v sJ ‚|dk(  sJ ‚| j                  |«      } ||«      S r�   )r|   Ú_get_flint_poly_cls)rˆ   r‰   rŠ   r‹   Ú	flint_clss        rŒ   rú  zDUP_Flint._flint_poly×  s5   € à”nÑ$Ð$Ð$Ø�aŠxˆˆxØ×+Ñ+¨CÓ0ˆ	Ù˜‹~ÐrŽ   c                óŽ   — |j                   rt        j                  S |j                  rt        j                  S t        d|z  «      ‚)Nú%Domain %s is not supported with flint)Úis_ZZr}   Ú	fmpz_polyÚis_QQÚ	fmpq_polyr¼   )rˆ   rŠ   s     rŒ   rþ  zDUP_Flint._get_flint_poly_clsÞ  s5   € à�9Š9Ü—?‘?Ð"Ø�YŠYÜ—?‘?Ð"äÐFÈÑLÓMÐMrŽ   c                óZ  — |j                   r-t        |t        j                  «      sJ ‚t        j                  }nG|j                  r-t        |t        j
                  «      sJ ‚t        j
                  }nt        d|z  «      ‚t        j                  | «      }||_	        ||_
        ||_        |S )z,Create a DMP from the given representation. r  )r  rƒ   r}   r  r  r  r¼   rB  r�   rŠ   r›   rô  )rˆ   r‰   rŠ   rô  rC  s        rŒ   rû  zDUP_Flint.from_repç  s…   € ð �9Š9Ü˜c¤5§?¡?Ô3Ð3Ð3Ü—?‘?‰DØ�YŠYÜ˜c¤5§?¡?Ô3Ð3Ð3Ü—?‘?‰DäÐFÈÑLÓMÐMä�n‰n˜SÓ!ˆØˆŒØˆŒØˆŒàˆ
rŽ   c                óš   — t        | «      t        |«      k7  ry| j                  |j                  k(  xr | j                  |j                  k(  S rE  )r…   rŠ   r›   r¸  s     rŒ   r   zDUP_Flint._strict_eqû  s9   € Ü�‹7”d˜1“gÒØØ�u‰u˜Ÿ™‰~Ò2 !§&¡&¨A¯F©FÑ"2Ð2rŽ   c                óZ   — | j                  | j                  |g«      | j                  «      S rÛ   ©rû  rô  rŠ   rÜ   s     rŒ   rÞ   zDUP_Flint.ground_new   s!   € à�z‰z˜!Ÿ&™& % ›/¨1¯5©5Ó1Ð1rŽ   c                óL   — | j                  | j                  j                  «      S r    )rÞ   rŠ   rÇ   r˜   s    rŒ   rÉ   zDUP_Flint._one  s   € Ø�|‰|˜AŸE™EŸI™IÓ&Ð&rŽ   c                ó   — t         ‚)z*Unify representations of two polynomials. )r¼   r¸  s     rŒ   rä   zDUP_Flint.unify  s   € äÐrŽ   c                ót   — t         j                  | j                  «       | j                  | j                  «      S )z1Convert ``f`` to a Python native representation. )r“   r’   r—   rŠ   r‹   r˜   s    rŒ   rº   zDUP_Flint.to_DMP_Python  s#   € ä�‰˜qŸy™y›{¨A¯E©E°1·5±5Ó9Ð9rŽ   c                ó4   — t        | j                  «       «      S rQ  )rÔ  r—   r˜   s    rŒ   rÔ   zDUP_Flint.to_tuple  s   € ä�Q—Y‘Y“[Ó!Ð!rŽ   c                ó`  — |t         k(  rB| j                  t        k(  r/| j                  t	        j
                  | j                  «      |«      S |t        k(  r@| j                  t         k(  r-| j                  «       j                  |«      j                  «       S t        d| j                  › d|› �«      ‚)rS  zDUP_Flint: Cannot convert z to )r   rŠ   r   rû  r}   r  r›   rº   r¹   r»   r¼   r½   s     rŒ   r¹   zDUP_Flint._convert  s€   € à”"Š9˜Ÿ™¤"šØ—:‘:œeŸo™o¨a¯f©fÓ5°sÓ;Ð;Ø”BŠY˜1Ÿ5™5¤Bš;à—?‘?Ó$×-Ñ-¨cÓ2×?Ñ?ÓAÐAäÐ!;¸A¿E¹E¸7À$ÀsÀeÐLÓMÐMrŽ   c                ó’   — | j                   j                  «       || }| j                  | j                  |«      | j                  «      S r  )r›   r¶   rû  rô  rŠ   )r™   r  r  r¶   s       rŒ   r  zDUP_Flint._slice  s5   € à—‘—‘“  1Ð%ˆØ�z‰z˜!Ÿ&™& ›.¨!¯%©%Ó0Ð0rŽ   c                ó   — t         ‚r  rÀ   r  s       rŒ   r  zDUP_Flint._slice_lev"  rÐ  rŽ   Nc                óö   — |�|j                   dk(  rCt        | j                  j                  «       «      D ��cg c]  \  }}|sŒ	|f|f‘Œ }}}|ddd…   S | j	                  «       j                  |¬«      S c c}}w )r  NÚlexrù  r  )Úaliasr+  r›   r¶   rº   r"  )r™   r  r  r£   r  s        rŒ   r"  zDUP_Flint._terms'  sq   € àˆ=˜EŸK™K¨5Ò0Ü,5°a·f±f·m±m³oÓ,F×M¡D A qÊ!˜�t˜Q’iÐMˆEÑMØ™˜2˜‘;Ðð —?‘?Ó$×+Ñ+°%Ð+Ó8Ð8ùó Ns   ¸
A5ÁA5c                ó   — t         ‚r2  rÀ   r˜   s    rŒ   r3  zDUP_Flint._lift5  rÐ  rŽ   c                óš   — | j                   rd| fS | j                  j                  «       \  }}|f| j                  || j                  «      fS )r8  )r¥   )r!  r›   Ú	deflationrû  rŠ   )r™   ræ   r  s      rŒ   r9  zDUP_Flint.deflate:  sF   € ð �9Š9Ø˜�7ˆNØ�v‰v×ÑÓ!‰ˆˆ1Øˆt�Q—Z‘Z  1§5¡5Ó)Ð)Ð)rŽ   c                ó   — t         ‚r;  rÀ   r=  s     rŒ   r?  zDUP_Flint.injectG  rÐ  rŽ   c                ó   — t         ‚rA  rÀ   rC  s      rŒ   rD  zDUP_Flint.ejectL  rÐ  rŽ   c                ó   — t         ‚r_  rÀ   r˜   s    rŒ   rF  zDUP_Flint._excludeQ  rÐ  rŽ   c                ó   — t         ‚rb  rÀ   rN  s     rŒ   rM  zDUP_Flint._permuteV  rÐ  rŽ   c                óh   — | j                  «       j                  «       \  }}||j                  «       fS rS  )rº   rT  r»   rG  s      rŒ   rT  zDUP_Flint.terms_gcd[  s/   € ð �‰Ó ×*Ñ*Ó,‰ˆˆ1Ø�!—.‘.Ó"Ð"Ð"rŽ   c                óT   — | j                  | j                  |z   | j                  «      S r]  ©rû  r›   rŠ   r_  s     rŒ   r^  zDUP_Flint._add_grounda  ó   € à�z‰z˜!Ÿ&™& 1™* a§e¡eÓ,Ð,rŽ   c                óT   — | j                  | j                  |z
  | j                  «      S rc  r  r_  s     rŒ   rd  zDUP_Flint._sub_grounde  r  rŽ   c                óT   — | j                  | j                  |z  | j                  «      S rg  r  r_  s     rŒ   rh  zDUP_Flint._mul_groundi  r  rŽ   c                óT   — | j                  | j                  |z  | j                  «      S rk  r  r_  s     rŒ   rl  zDUP_Flint._quo_groundm  ó   € à�z‰z˜!Ÿ&™& A™+ q§u¡uÓ-Ð-rŽ   c                óˆ   — t        | j                  |«      \  }}|rt        | |«      ‚| j                  || j                  «      S ro  )Údivmodr›   r   rû  rŠ   )r™   r£   ry  r§   s       rŒ   rp  zDUP_Flint._exquo_groundq  s;   € ä�a—f‘f˜aÓ ‰ˆˆ1ÙÜ% a¨Ó+Ð+Ø�z‰z˜!˜QŸU™UÓ#Ð#rŽ   c                óZ   — | j                  «       j                  «       j                  «       S rV  )rº   rW  r»   r˜   s    rŒ   rW  zDUP_Flint.absx  s!   € à�‰Ó ×$Ñ$Ó&×3Ñ3Ó5Ð5rŽ   c                óP   — | j                  | j                   | j                  «      S rY  r  r˜   s    rŒ   r[  zDUP_Flint.neg|  s   € à�z‰z˜1Ÿ6™6˜' 1§5¡5Ó)Ð)rŽ   c                óh   — | j                  | j                  |j                  z   | j                  «      S rs  r  r¸  s     rŒ   rt  zDUP_Flint._add€  ó#   € à�z‰z˜!Ÿ&™& 1§6¡6™/¨1¯5©5Ó1Ð1rŽ   c                óh   — | j                  | j                  |j                  z
  | j                  «      S rz  r  r¸  s     rŒ   r{  zDUP_Flint._sub„  r(  rŽ   c                óh   — | j                  | j                  |j                  z  | j                  «      S r~  r  r¸  s     rŒ   r  zDUP_Flint._mulˆ  r(  rŽ   c                óT   — | j                  | j                  dz  | j                  «      S )rƒ  rî  r  r˜   s    rŒ   r…  zDUP_Flint.sqrŒ  r"  rŽ   c                óT   — | j                  | j                  |z  | j                  «      S rt  r  r‹  s     rŒ   rŠ  zDUP_Flint._pow�  r"  rŽ   c                ó(  — | j                  «       |j                  «       z
  dz   }t        |j                  «       |z  | j                  z  |j                  «      \  }}| j	                  || j
                  «      | j	                  || j
                  «      fS )r�  r¥   )r*  r$  rä  r›   rû  rŠ   ©r™   ræ   rÚ  ry  r§   s        rŒ   r�  zDUP_Flint._pdiv”  sm   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆÜ�a—d‘d“f˜a‘i !§&¡&Ñ(¨!¯&©&Ó1‰ˆˆ1Ø�z‰z˜!˜QŸU™UÓ# Q§Z¡Z°°1·5±5Ó%9Ð9Ð9rŽ   c                óÜ   — | j                  «       |j                  «       z
  dz   }|j                  «       |z  | j                  z  |j                  z  }| j                  || j                  «      S )r•  r¥   ©r*  rä  r›   rû  rŠ   )r™   ræ   rÚ  ry  s       rŒ   r–  zDUP_Flint._premš  sS   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆØ�T‰T‹V�Q‰Y˜Ÿ™Ñ 1§6¡6Ñ)ˆØ�z‰z˜!˜QŸU™UÓ#Ð#rŽ   c                óÜ   — | j                  «       |j                  «       z
  dz   }|j                  «       |z  | j                  z  |j                  z  }| j                  || j                  «      S )rš  r¥   r0  )r™   ræ   rÚ  r§   s       rŒ   r›  zDUP_Flint._pquo   sS   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆØ�T‰T‹V�Q‰Y˜Ÿ™Ñ A§F¡FÑ*ˆØ�z‰z˜!˜QŸU™UÓ#Ð#rŽ   c                ó  — | j                  «       |j                  «       z
  dz   }t        |j                  «       |z  | j                  z  |j                  «      \  }}|rt	        | |«      ‚| j                  || j                  «      S )rŸ  r¥   )r*  r$  rä  r›   r   rû  rŠ   r.  s        rŒ   r   zDUP_Flint._pexquo¦  si   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆÜ�a—d‘d“f˜a‘i !§&¡&Ñ(¨!¯&©&Ó1‰ˆˆ1ÙÜ% a¨Ó+Ð+Ø�z‰z˜!˜QŸU™UÓ#Ð#rŽ   c                ó„  — | j                   j                  r[t        | j                  |j                  «      \  }}| j	                  || j                   «      | j	                  || j                   «      fS | j                  «       j                  |j                  «       «      \  }}|j                  «       |j                  «       fS r£  )rŠ   r  r$  r›   rû  rº   r¤  r»   rv  s       rŒ   r¤  zDUP_Flint._div®  s‹   € à�5‰5�>Š>Ü˜!Ÿ&™& !§&¡&Ó)‰DˆAˆqØ—:‘:˜a §¡Ó'¨¯©°A°q·u±uÓ)=Ð=Ð=ð —?‘?Ó$×)Ñ)¨!¯/©/Ó*;Ó<‰DˆAˆqØ—>‘>Ó# Q§^¡^Ó%5Ð5Ð5rŽ   c                óh   — | j                  | j                  |j                  z  | j                  «      S r§  r  r¸  s     rŒ   r¨  zDUP_Flint._rem¸  r(  rŽ   c                óh   — | j                  | j                  |j                  z  | j                  «      S r«  r  r¸  s     rŒ   r¬  zDUP_Flint._quo¼  s$   € à�z‰z˜!Ÿ&™& A§F¡FÑ*¨A¯E©EÓ2Ð2rŽ   c                óJ   — | j                  |«      \  }}|rt        | |«      ‚|S r¯  )r¤  r   rv  s       rŒ   r°  zDUP_Flint._exquoÀ  s(   € à�v‰v�a‹y‰ˆˆ1ÙÜ% a¨Ó+Ð+ØˆrŽ   c                óP   — | j                   j                  «       }|dk(  rt        }|S )rÆ  rù  )r›   r*  r   )r™   r  rÚ  s      rŒ   rÇ  zDUP_Flint._degreeÇ  s"   € à�F‰F�M‰M‹OˆØ�Š7ÜˆAØˆrŽ   c                ó$   — | j                  «       fS rË  ©rÇ  r˜   s    rŒ   rÌ  zDUP_Flint.degree_listÎ  s   € à—‘“ÐÐrŽ   c                ó"   — | j                  «       S rÎ  r9  r˜   s    rŒ   rÐ  zDUP_Flint.total_degreeÒ  s   € à�y‰y‹{ÐrŽ   c                óP   — | j                   | j                   j                  «          S rã  ©r›   r*  r˜   s    rŒ   rä  zDUP_Flint.LCÖ  s   € à�v‰v�a—f‘f—m‘m“oÑ&Ð&rŽ   c                ó    — | j                   d   S )rç  r   ©r›   r˜   s    rŒ   rè  zDUP_Flint.TCÚ  s   € à�v‰v�a‰yÐrŽ   c                ó(   — |\  }| j                   |   S r‰  r>  )r™   rî  r  s      rŒ   rì  zDUP_Flint._nthÞ  s   € à‰ˆØ�v‰v�a‰yÐrŽ   c                ó>   — | j                  «       j                  «       S rò  )rº   ró  r˜   s    rŒ   ró  zDUP_Flint.max_normã  s   € à�‰Ó ×)Ñ)Ó+Ð+rŽ   c                ó>   — | j                  «       j                  «       S rõ  )rº   rö  r˜   s    rŒ   rö  zDUP_Flint.l1_normç  s   € à�‰Ó ×(Ñ(Ó*Ð*rŽ   c                ó>   — | j                  «       j                  «       S rø  )rº   rù  r˜   s    rŒ   rù  zDUP_Flint.l2_norm_squaredë  s   € à�‰Ó ×0Ñ0Ó2Ð2rŽ   c                óÄ   — | j                   j                  «       }| j                  | j                  | j                   j	                  «       «      | j
                  «      }||fS rû  )r›   Údenomrû  rô  ÚnumerrŠ   )r™   rD  rE  s      rŒ   rü  zDUP_Flint.clear_denomsï  sB   € à—‘—‘“ˆØ—
‘
˜1Ÿ6™6 !§&¡&§,¡,£.Ó1°1·5±5Ó9ˆØ�eˆ|ÐrŽ   c                ó*  — |dk(  sJ ‚| j                   j                  rH| j                  }t        |«      D ]  }|j	                  «       }Œ | j                  || j                   «      S | j                  «       j                  ||¬«      j                  «       S )rþ  r   )r  r  )	rŠ   r  r›   ÚrangeÚintegralrû  rº   rÿ  r»   ©r™   r  r  r‰   r-  s        rŒ   rÿ  zDUP_Flint._integrateõ  sz   € à�AŠvˆˆvØ�5‰5�;Š;Ø—&‘&ˆCÜ˜1“Xò %�Ø—l‘l“n‘ð%à—:‘:˜c 1§5¡5Ó)Ð)à—?‘?Ó$×/Ñ/°!°qÐ/Ó9×FÑFÓHÐHrŽ   c                ó    — |dk(  sJ ‚| j                   }t        |«      D ]  }|j                  «       }Œ | j                  || j                  «      S )z1Computes the ``m``-th order derivative of ``f``. r   )r›   rG  Ú
derivativerû  rŠ   rI  s        rŒ   r  zDUP_Flint._diff   sJ   € à�AŠvˆˆvØ�f‰fˆÜ�q“ò 	#ˆAØ—.‘.Ó"‰Cð	#à�z‰z˜#˜qŸu™uÓ%Ð%rŽ   c                ó@   — | j                  «       j                  |«      S r    )rº   r  r  s     rŒ   r  zDUP_Flint._eval  s   € Ø�‰Ó ×&Ñ& qÓ)Ð)rŽ   c                ó   — t         ‚r    rÀ   r  s      rŒ   r
  zDUP_Flint._eval_lev  rß   rŽ   c                ó¢   — | j                  «       j                  |j                  «       «      \  }}|j                  «       |j                  «       fS )z#Half extended Euclidean algorithm. )rº   r  r»   r”  s       rŒ   r  zDUP_Flint._half_gcdex  s=   € à�‰Ó ×,Ñ,¨Q¯_©_Ó->Ó?‰ˆˆ1Ø�~‰~Ó §¡Ó!1Ð1Ð1rŽ   c                óú   — | j                   j                  |j                   «      \  }}}| j                  || j                  «      | j                  || j                  «      | j                  || j                  «      fS )zExtended Euclidean algorithm. )r›   Úxgcdrû  rŠ   )r™   ræ   r•  rÕ  rÄ  s        rŒ   r  zDUP_Flint._gcdex  sX   € à—&‘&—+‘+˜aŸf™fÓ%‰ˆˆ1ˆaØ�z‰z˜!˜QŸU™UÓ# Q§Z¡Z°°1·5±5Ó%9¸1¿:¹:ÀaÈÏÉÓ;OÐOÐOrŽ   c                óN  — | j                   j                  rU| j                  j                  |j                  «      \  }}}|dk7  rt	        d«      ‚| j                  || j                   «      S | j                  «       j                  |j                  «       «      j                  «       S )r  r¥   úzero divisor)	rŠ   r  r›   rP  r   rû  rº   r   r»   )r™   ræ   rA  ÚF_invr  s        rŒ   r   zDUP_Flint._invert  sx   € à�5‰5�;Š;ØŸF™FŸK™K¨¯©Ó/‰MˆC�˜Ø�aŠxÜ# NÓ3Ð3Ø—:‘:˜e Q§U¡UÓ+Ð+à—?‘?Ó$×,Ñ,¨Q¯_©_Ó->Ó?×LÑLÓNÐNrŽ   c                ó\   — | j                  «       j                  |«      j                  «       S r™  )rº   r%  r»   r‹  s     rŒ   r%  zDUP_Flint._revert#  s#   € à�‰Ó ×(Ñ(¨Ó+×8Ñ8Ó:Ð:rŽ   c                ó¢   — | j                  «       j                  |j                  «       «      }|D �cg c]  }|j                  «       ‘Œ c}S c c}w r)  )rº   r*  r»   rœ  s      rŒ   r*  zDUP_Flint._subresultants'  s;   € à�O‰OÓ×,Ñ,¨Q¯_©_Ó->Ó?ˆØ+,Ö. a�—‘Õ!Ò.Ð.ùÒ.s   ²Ac                ó¬   — | j                  «       j                  |j                  «       «      \  }}||D �cg c]  }|j                  «       ‘Œ c}fS c c}w r.  )rº   r0  r»   rŸ  s       rŒ   r0  zDUP_Flint._resultant_includePRS,  sD   € à—‘Ó"×8Ñ8¸¿¹Ó9JÓK‰ˆˆQØ°Ö3¨1�a—n‘nÕ&Ò3Ð3Ð3ùÒ3s   ¶Ac                ó\   — | j                  «       j                  |j                  «       «      S )z'Computes resultant of ``f`` and ``g``. )rº   r1  r¸  s     rŒ   r1  zDUP_Flint._resultant1  s!   € à�‰Ó ×+Ñ+¨A¯O©OÓ,=Ó>Ð>rŽ   c                ó>   — | j                  «       j                  «       S r6  )rº   r8  r˜   s    rŒ   r8  zDUP_Flint.discriminant5  s   € à�‰Ó ×-Ñ-Ó/Ð/rŽ   c                ój   — | j                  |«      }|| j                  |«      |j                  |«      fS r:  )rA  r±  )r™   ræ   r•  s      rŒ   r;  zDUP_Flint._cofactors9  s,   € à�E‰E�!‹HˆØ�!—'‘'˜!“*˜aŸg™g a›jÐ(Ð(rŽ   c                ó€   — | j                  | j                  j                  |j                  «      | j                  «      S r?  )rû  r›   rA  rŠ   r¸  s     rŒ   r@  zDUP_Flint._gcd>  s(   € à�z‰z˜!Ÿ&™&Ÿ*™* Q§V¡VÓ,¨a¯e©eÓ4Ð4rŽ   c                óL  — | r|s%| j                  | j                  j                  «      S | j                  |«      j	                  | j                  |«      «      }|j                  j                  r|j                  «       }|S |j                  «       dk  r|j                  «       }|S )rE  r   )
rÞ   rŠ   rÅ   r  r°  r@  r  r[  rä  r[  )r™   ræ   rÛ  s      rŒ   rF  zDUP_Flint._lcmB  s|   € ñ ‘aØ—<‘< §¡§
¡
Ó+Ð+à�F‰F�1‹I×Ñ˜QŸV™V A›YÓ'ˆà�5‰5�>Š>Ø—‘“	ˆAð ˆð �T‰T‹V�aŠZØ—‘“ˆAàˆrŽ   c                óÊ  — | j                   |j                   cxk(  rt        t        fv sJ ‚ J ‚| j                   j                  r'| j	                  «       \  }}|j	                  «       \  }}n0| j                   j
                  | }}|j                   j
                  |}}|j                  |«      }||z  ||z  }}|j                  |«      }|j                  |«      |j                  |«      }}|j                  «       dk  }|j                  «       dk  }	|r#|	r!|j                  «       |j                  «       }}n+|r| |j                  «       }}n|	r| |j                  «       }}||||fS )rK  r   )rŠ   r   r   r  rü  rÇ   rA  r@  r±  rä  r[  )
r™   ræ   r­  rI  r¬  rv  ÚcHÚHÚf_negÚg_negs
             rŒ   rM  zDUP_Flint._cancelQ  s(  € ð �u‰u˜Ÿ™Ô)¤"¤b Ñ)Ð)Ñ)Ð)Ð)à�5‰5�;Š;Ø—N‘NÓ$‰EˆB�Ø—N‘NÓ$‰EˆB‘à—E‘E—I‘I˜q�ˆBØ—E‘E—I‘I˜q�ˆBà�V‰V�B‹ZˆØ�r‘˜2 ™8ˆBˆà�F‰F�1‹IˆØ�w‰w�q‹z˜1Ÿ7™7 1›:ˆ1ˆà—‘“˜‘
ˆØ—‘“˜‘
ˆá‘UØ—5‘5“7˜AŸE™E›Gˆq‰AÙØ�C˜Ÿ™›�‰BÙØ�C˜Ÿ™›�ˆBà�2�q˜!ˆ|ÐrŽ   c                ór   — | j                  |«      \  }}}}|j                  |«      |j                  |«      fS rJ  )rM  rh  r«  s         rŒ   rL  zDUP_Flint._cancel_includep  s4   € à—y‘y “|‰ˆˆB��1Ø�}‰}˜RÓ  !§-¡-°Ó"3Ð3Ð3rŽ   c                ó\   — | j                  «       j                  |«      j                  «       S rS  )rº   rT  r»   rU  s     rŒ   rT  zDUP_Flint._truncu  s#   € à�‰Ó ×'Ñ'¨Ó*×7Ñ7Ó9Ð9rŽ   c                ó@   — | j                  | j                  «       «      S rZ  )rp  rä  r˜   s    rŒ   r[  zDUP_Flint.monicy  s   € à�‰˜qŸt™t›vÓ&Ð&rŽ   c                ó>   — | j                  «       j                  «       S r]  )rº   r^  r˜   s    rŒ   r^  zDUP_Flint.content}  s   € ð �‰Ó ×(Ñ(Ó*Ð*rŽ   c                óL   — | j                  «       }| j                  |«      }||fS r`  )r^  rp  )r™   r³  Úprims      rŒ   ra  zDUP_Flint.primitive‚  s%   € à�y‰y‹{ˆØ�‰˜tÓ$ˆØ�TˆzÐrŽ   c                ól   — | j                  | j                  |j                  «      | j                  «      S rc  r  r¸  s     rŒ   rd  zDUP_Flint._composeˆ  s#   € à�z‰z˜!Ÿ&™& §¡›.¨!¯%©%Ó0Ð0rŽ   c                ó€   — | j                  «       j                  «       D �cg c]  }|j                  «       ‘Œ c}S c c}w r¶  )rº   ri  r»   r¸  s     rŒ   ri  zDUP_Flint._decomposeŒ  s-   € à+,¯?©?Ó+<×+GÑ+GÓ+IÖK a�—‘Õ!ÒKÐKùÒKó   ¡;c                ó¦   — | j                  || j                  j                  g«      }| j                  | j	                  |«      | j                  «      S r¸  )rô  rŠ   rÇ   rû  r›   )r™   r  Úx_plus_as      rŒ   rn  zDUP_Flint._shift�  s:   € à—6‘6˜1˜aŸe™eŸi™i˜.Ó)ˆØ�z‰z˜!Ÿ&™& Ó*¨A¯E©EÓ2Ð2rŽ   c                ó¢   — | j                  «       |j                  «       |j                  «       }}}|j                  ||«      j                  «       S r»  )rº   r{  r»   )r™   rV  ry  rI  rO  rz  s         rŒ   rx  zDUP_Flint._transform•  s>   € à—/‘/Ó# Q§_¡_Ó%6¸¿¹Ó8Iˆaˆ1ˆØ�{‰{˜1˜aÓ ×-Ñ-Ó/Ð/rŽ   c                ó€   — | j                  «       j                  «       D �cg c]  }|j                  «       ‘Œ c}S c c}w r½  )rº   r€  r»   r¸  s     rŒ   r€  zDUP_Flint._sturmš  s-   € à+,¯?©?Ó+<×+CÑ+CÓ+EÖG a�—‘Õ!ÒGÐGùÒGri  c                ó>   — | j                  «       j                  «       S r¿  )rº   r…  r˜   s    rŒ   r…  zDUP_Flint._cauchy_upper_boundž  ó   € à�‰Ó ×4Ñ4Ó6Ð6rŽ   c                ó>   — | j                  «       j                  «       S rÂ  )rº   r‹  r˜   s    rŒ   r‹  zDUP_Flint._cauchy_lower_bound¢  ro  rŽ   c                ó>   — | j                  «       j                  «       S rÄ  )rº   r�  r˜   s    rŒ   r�  z%DUP_Flint._mignotte_sep_bound_squared¦  s   € à�‰Ó ×<Ñ<Ó>Ð>rŽ   c                ó”   — | j                  «       }|j                  «       D ��cg c]  \  }}|j                  «       |f‘Œ c}}S c c}}w rÆ  )rº   r–  r»   )r™   rI  ræ   rð   s       rŒ   r•  zDUP_Flint._gff_listª  s8   € à�O‰OÓˆØ34·:±:³<×A©4¨1¨a�!—.‘.Ó" AÒ&ÓAÐAùÓAó   ¤Ac                ó   — t         ‚r™  rÀ   r˜   s    rŒ   rš  zDUP_Flint.norm¯  rÐ  rŽ   c                ó   — t         ‚rœ  rÀ   r˜   s    rŒ   r�  zDUP_Flint.sqf_norm´  rÐ  rŽ   c                ó^   — | j                  | j                  | j                  «       «      «      S rŸ  )r°  r@  r  r˜   s    rŒ   r   zDUP_Flint.sqf_part¹  s    € à�x‰x˜Ÿ™˜qŸw™w›yÓ)Ó*Ð*rŽ   c                ó¢   — | j                  «       j                  |¬«      \  }}||D ��cg c]  \  }}|j                  «       |f‘Œ c}}fS c c}}w ©r£  )r¦   )rº   r¥  r»   rË  s         rŒ   r¥  zDUP_Flint.sqf_list½  sI   € àŸ™Ó*×3Ñ3¸Ð3Ó<‰ˆˆwØ¸'×C±$°!°Q˜Ÿ™Ó)¨1Ò-ÓCÐCÐCùÓCs   ªAc                ó˜   — | j                  «       j                  |¬«      }|D ��cg c]  \  }}|j                  «       |f‘Œ c}}S c c}}w rx  )rº   r§  r»   rÎ  s        rŒ   r§  zDUP_Flint.sqf_list_includeÂ  s@   € à—/‘/Ó#×4Ñ4¸Ð4Ó=ˆØ3:×<©4¨1¨a�!—.‘.Ó" AÒ&Ó<Ð<ùÓ<s   ¦Ac                óx  — | j                   j                  rN| j                  j                  «       \  }}|D ��cg c]#  \  }}| j	                  || j                   «      |f‘Œ% }}}n¶| j                   j
                  rˆ| j                  j                  «       \  }}|D ��cg c]#  \  }}| j	                  || j                   «      |f‘Œ% }}}g }|D ]3  \  }}|j                  «       \  }}|||z  z  }|j                  ||f«       Œ5 nt        d| j                   z  «      ‚| j                  |«      }||fS c c}}w c c}}w )rª  r  )
rŠ   r  r›   Úfactorrû  r  rü  rö   r¼   r	   )r™   rÝ   rÌ  ræ   rð   Úfactors_monicrÚ  s          rŒ   r«  zDUP_Flint.factor_listÇ  s  € ð �5‰5�;Š;àŸV™VŸ]™]›_‰NˆE�7Ø>E×G±d°a¸˜Ÿ™ A q§u¡uÓ-¨qÒ1ÐGˆGÒGà�U‰U�[Š[ð ŸV™VŸ]™]›_‰NˆE�7ØDK×M¹D¸A¸q˜qŸz™z¨!¨Q¯U©UÓ3°QÒ7ÐMˆMÑMð ˆGØ%ò '‘��1Ø—~‘~Ó'‘��1Ø˜˜A™‘�Ø—‘  1˜vÕ&ñ'ô ÐFÈÏÉÑNÓOÐOð —/‘/ 'Ó*ˆà�gˆ~Ðùó- Hùó Ns   ¹(D0Â(D6c                ó”   — | j                  «       j                  «       }|D ��cg c]  \  }}|j                  «       |f‘Œ c}}S c c}}w r©  )rº   r­  r»   rÑ  s       rŒ   r­  zDUP_Flint.factor_list_includeå  s=   € ð —/‘/Ó#×7Ñ7Ó9ˆØ3:×<©4¨1¨a�!—.‘.Ó" AÒ&Ó<Ð<ùÓ<rs  c                óÂ   ‡ — |D ��cg c]  \  }}|j                  «       |f‘Œ }}}t        |d¬«      }ˆ fd„}|D ��cg c]  \  }} ||«      |f‘Œ c}}S c c}}w c c}}w )z+Sort a list of factors to canonical order. T)Úmultiplec                óf   •— ‰j                  ‰j                  | d d d…   «      ‰j                  «      S rø  r	  )ræ   r™   s    €rŒ   ú<lambda>z)DUP_Flint._sort_factors.<locals>.<lambda>õ  s&   ø€  §¡¨A¯F©F°1±T°r°T±7«O¸Q¿U¹UÓ!C€ rŽ   )r—   r	   )r™   rÌ  ræ   rð   Úto_dup_flints   `    rŒ   r	   zDUP_Flint._sort_factorsð  s`   ø€ ð 29×:©¨¨A�Q—Y‘Y“[ !Ò$Ð:ˆÑ:Ü °$Ô7ˆÛCˆØ29×;©$¨!¨Q‘,˜q“/ 1Ò%Ó;Ð;ùó ;ùó <s
   ‡A½Ac                óF   — | j                  «       j                  ||||«      S r    )rº   r·  r»  s        rŒ   r·  zDUP_Flint._isolate_real_rootsø  s    € Ø�‰Ó ×4Ñ4°S¸#¸sÀDÓIÐIrŽ   c                óF   — | j                  «       j                  ||||«      S r    )rº   r¶  r»  s        rŒ   r¶  z!DUP_Flint._isolate_real_roots_sqfû  s    € Ø�‰Ó ×8Ñ8¸¸cÀ3ÈÓMÐMrŽ   c                óF   — | j                  «       j                  ||||«      S r    )rº   rµ  r»  s        rŒ   rµ  zDUP_Flint._isolate_all_rootsþ  s    € Ø�‰Ó ×3Ñ3°C¸¸cÀ4ÓHÐHrŽ   c                óF   — | j                  «       j                  ||||«      S r    )rº   r´  r»  s        rŒ   r´  z DUP_Flint._isolate_all_roots_sqf	  s    € Ø�‰Ó ×7Ñ7¸¸SÀ#ÀtÓLÐLrŽ   c                óH   — | j                  «       j                  |||||«      S r    )rº   rÂ  rÃ  s         rŒ   rÂ  zDUP_Flint._refine_real_root	  s"   € Ø�‰Ó ×2Ñ2°1°a¸¸eÀTÓJÐJrŽ   c                óD   — | j                  «       j                  ||¬«      S rÙ  )rº   rÊ  rÉ  s      rŒ   rÊ  zDUP_Flint.count_real_roots	  s   € à�‰Ó ×1Ñ1°c¸sÐ1ÓCÐCrŽ   c                óD   — | j                  «       j                  ||¬«      S rÜ  )rº   rÍ  rÉ  s      rŒ   rÍ  zDUP_Flint.count_complex_roots	  s   € à�‰Ó ×4Ñ4¸À#Ð4ÓFÐFrŽ   c                ó   — | j                    S rÏ  r>  r˜   s    rŒ   r!  zDUP_Flint.is_zero	  s   € ð —6‘6ˆzÐrŽ   c                óH   — | j                   | j                  j                  k(  S rÒ  )r›   rŠ   rÇ   r˜   s    rŒ   rÓ  zDUP_Flint.is_one	  s   € ð �v‰v˜Ÿ™Ÿ™Ñ"Ð"rŽ   c                ó<   — | j                   j                  «       dk  S )rÖ  r   r<  r˜   s    rŒ   r×  zDUP_Flint.is_ground	  ó   € ð �v‰v�}‰}‹ !Ñ#Ð#rŽ   c                ó<   — | j                   j                  «       dk  S )râ  r¥   r<  r˜   s    rŒ   rã  zDUP_Flint.is_linear	  r�  rŽ   c                ó<   — | j                   j                  «       dk  S )rå  rî  r<  r˜   s    rŒ   ræ  zDUP_Flint.is_quadratic#	  r�  rŽ   c                ó6   — | j                  «       j                  S rè  )rº   rê  r˜   s    rŒ   rê  zDUP_Flint.is_monomial(	  s   € ð �‰Ó ×,Ñ,Ð,rŽ   c                óP   — | j                  «       | j                  j                  k(  S rÜ  )rä  rŠ   rÇ   r˜   s    rŒ   rÝ  zDUP_Flint.is_monic-	  s   € ð �t‰t‹v˜Ÿ™Ÿ™Ñ"Ð"rŽ   c                ó6   — | j                  «       j                  S rß  )rº   rà  r˜   s    rŒ   rà  zDUP_Flint.is_primitive2	  s   € ð �‰Ó ×-Ñ-Ð-rŽ   c                ó6   — | j                  «       j                  S rì  )rº   rî  r˜   s    rŒ   rî  zDUP_Flint.is_homogeneous7	  ó   € ð �‰Ó ×/Ñ/Ð/rŽ   c                ó6   — | j                  «       j                  S rÙ  )rº   rÚ  r˜   s    rŒ   rÚ  zDUP_Flint.is_sqf<	  s   € ð �‰Ó ×'Ñ'Ð'rŽ   c                ó6   — | j                  «       j                  S rð  )rº   rñ  r˜   s    rŒ   rñ  zDUP_Flint.is_irreducibleA	  r”  rŽ   c                ó¨   — | j                   j                  r#t        | j                  j	                  «       «      S | j                  «       j                  S ró  )rŠ   r  Úboolr›   rõ  rº   r˜   s    rŒ   rõ  zDUP_Flint.is_cyclotomicF	  s:   € ð �5‰5�;Š;Ü˜Ÿ™×,Ñ,Ó.Ó/Ð/à—?‘?Ó$×2Ñ2Ð2rŽ   r    r6  r   r7  r9  )vrÐ   r:  r;  r<  r‹   r=  rö  r>  r’   r—   rú  rþ  rû  r   rÞ   rÉ   rä   rº   rÔ   r¹   r  r  r"  r3  r9  r?  rD  rF  rM  rT  r^  rd  rh  rl  rp  rW  r[  rt  r{  r  r…  rŠ  r�  r–  r›  r   r¤  r¨  r¬  r°  rÇ  rÌ  rÐ  rä  rè  rì  ró  rö  rù  rü  rÿ  r  r  r
  r  r  r   r%  r*  r0  r1  r8  r;  r@  rF  rM  rL  rT  r[  r^  ra  rd  ri  rn  rx  r€  r…  r‹  r�  r•  rš  r�  r   r¥  r§  r«  r­  r	   r·  r¶  rµ  r´  rÂ  rÊ  rÍ  r?  r!  rÓ  r×  rã  ræ  rê  rÝ  rà  rî  rÚ  rñ  rõ  r~   rŽ   rŒ   r‘   r‘   Ä  s7  „ Ù3à
€Cà'€IòDð ñ&ó ð&ò%ð ñó ðð ñNó ðNð ñó ðò&3ò
2ò'òò:ò"òNò1ò
"ó
9ò"ò
*ó"ó
"ò
"ò
"ò
#ò-ò-ò-ò.ò$ò6ò*ò2ò2ò2ò.ò.ò:ò$ò$ò$ò6ò2ò3òóò òò'òòò
,ò+ò3òó	Ió&ò*ò"ò2ò
Pò
Oò;ò/ò
4ò
?ò0ò)ò
5òòò>4ò
:ò'ò+ò
ò1òLò3ò
0ò
Hò7ò7ò?òBò
"ò
"ò
+óDó
=ò
ò<	=ò<òJòNòIòMòKóDóGð ñó ðð ñ#ó ð#ð ñ$ó ð$ð ñ$ó ð$ð ñ$ó ð$ð ñ-ó ð-ð ñ#ó ð#ð ñ.ó ð.ð ñ0ó ð0ð ñ(ó ð(ð ñ0ó ð0ð ñ3ó ñ3rŽ   r‘   c                óJ   — t        t        | ||«      t        |||«      ||«      S r    )ÚDMFr   ©ÚnumÚdenr‹   rŠ   s       rŒ   Úinit_normal_DMFrž  O	  s*   € ÜŒz˜#˜s CÓ(Ü˜#˜s CÓ(¨#¨só4ð 4rŽ   c                  ó\  — e Zd ZdZdZd.d„Zed.d„«       Zd„ Zed.d„«       Z	d„ Z
d	„ Zd
„ Zd„ Zd/d„Zd0d„Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd1d„Zed„ «       Zed„ «       Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.d+„ Z/d,„ Z0d-„ Z1y)2rš  z'Dense Multivariate Fractions over `K`. r›  Nc                óŒ   — | j                  |||«      \  }}}t        ||||«      \  }}|| _        || _        || _        || _        y r    )Ú_parserc   rœ  r�  r‹   rŠ   )rØ   r‰   rŠ   r‹   rœ  r�  s         rŒ   Ú__init__zDMF.__init__Y	  sJ   € ØŸ™ C¨¨cÓ2‰ˆˆS�#Ü˜c 3¨¨SÓ1‰ˆˆSàˆŒØˆŒØˆŒØˆ�rŽ   c                ó–   — | j                  |||«      \  }}}t        j                  | «      }||_        ||_        ||_        ||_        |S r    )r¡  rB  r�   rœ  r�  r‹   rŠ   )rˆ   r‰   rŠ   r‹   rœ  r�  rC  s          rŒ   r†   zDMF.newb	  sI   € àŸ
™
 3¨¨SÓ1‰ˆˆS�#ä�n‰n˜SÓ!ˆàˆŒØˆŒØˆŒØˆŒàˆ
rŽ   c                óP   — | j                  || j                  | j                  «      S r    )r†   rŠ   r‹   )rØ   r‰   s     rŒ   rÞ   zDMF.ground_newo	  s   € Ø�x‰x˜˜TŸX™X t§x¡xÓ0Ð0rŽ   c                óŽ  — t        |t        «      rÉ|\  }}|�;t        |t        «      rt        |||«      }t        |t        «      r=t        |||«      }n/t	        |«      \  }}t	        |«      \  }}||k(  r|}nt        d«      ‚t        ||«      rt        d«      ‚t        ||«      rt        ||«      }n�t        |||«      rƒt        |||«      }t        |||«      }nh|}|�Jt        |t        «      rt        |||«      }n:t        |t        «      s*t        |j                  |«      |«      }nt	        |«      \  }}t        ||«      }|||fS )Nzinconsistent number of levelszfraction denominator)rƒ   rÔ  r³   r&   r   r	  r"   ÚZeroDivisionErrorr   r   r8   r„   r    r¾   )rˆ   r‰   rŠ   r‹   rœ  r�  Únum_levÚden_levs           rŒ   r¡  z
DMF._parser	  s:  € ä�cœ5Ô!Ø‰HˆC�àˆÜ˜c¤4Ô(Ü'¨¨S°#Ó6�Cä˜c¤4Ô(Ü'¨¨S°#Ó6‘Cä+¨CÓ0‘��WÜ+¨CÓ0‘��Wà˜gÒ%Ø!‘Cä$Ð%DÓEÐEä˜#˜sÔ#Ü'Ð(>Ó?Ð?ä˜#˜sÔ#Ü˜c 3Ó'‘ä! # s¨CÔ0Ü! # s¨CÓ0�CÜ! # s¨CÓ0‘CàˆCàˆÜ˜c¤4Ô(Ü'¨¨S°#Ó6‘CÜ# C¬Ô.Ü$ S§[¡[°Ó%5°sÓ;‘Cä'¨Ó,‘��Sä˜#˜sÓ#ˆCà�C˜ˆ}ÐrŽ   c                ó‚   — | j                   j                  ›d| j                  ›d| j                  ›d| j                  ›d�S )Nz((rÍ   z), rÎ   )rÏ   rÐ   rœ  r�  rŠ   r˜   s    rŒ   rÑ   zDMF.__repr__ž	  s'   € Ø%&§[¡[×%9Ó%9¸1¿5»5À!Ç%Ã%ÈÏËÐOÐOrŽ   c                óê   — t        | j                  j                  t        | j                  | j
                  «      t        | j                  | j
                  «      | j
                  | j                  f«      S r    )rÓ   rÏ   rÐ   r1   rœ  r‹   r�  rŠ   r˜   s    rŒ   rÕ   zDMF.__hash__¡	  sO   € Ü�Q—[‘[×)Ñ)¬<¸¿¹¸q¿u¹uÓ+EÜ˜Ÿ™ §¡Ó&¨¯©¨q¯u©uð6ó 7ð 	7rŽ   c                óˆ  ‡ ‡— t        |t        «      r‰ j                  |j                  k7  rt        d‰ ›d|›�«      ‚‰ j                  |j                  k(  rE‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  f|j                  fS ‰ j                  ‰ j                  j                  |j                  «      c}Št        ‰ j                  |‰ j                  ‰«      t        ‰ j                  |‰ j                  ‰«      f}t        |j                  ||j                  ‰«      }dd|fˆˆ fd„	}|‰|||fS )z0Unify a multivariate fraction and a polynomial. râ   rã   TFc                ó„   •— |r|s| |z  S |dz
  }|rt        | ||‰«      \  } }‰j                  j                  | |f‰|«      S r’  ©rc   rÏ   r†   ©rœ  r�  rO  Úkillr‹   rŠ   r™   s        €€rŒ   rI  zDMF.poly_unify.<locals>.per´	  óM   ø€ ÙÙØ" 3™w˜à! A™g˜áÜ)¨#¨s°C¸Ó=‘H�C˜à—{‘{—‘¨¨S z°3¸Ó<Ð<rŽ   )rƒ   r€   r‹   rz   rŠ   rI  rœ  r�  r›   rä   r   ©r™   ræ   r‹   rI  rv  rI  rŠ   s   `     @rŒ   Ú
poly_unifyzDMF.poly_unify¥	  só   ù€ ä˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—E‘E˜1Ÿ5™5 !§%¡%¨!¯%©%°·±¨¸¿¹Ð@Ð@à—u‘u˜aŸe™eŸk™k¨!¯%©%Ó0ˆHˆC�ä˜QŸU™U C¨¯©°Ó4Ü˜QŸU™U C¨¯©°Ó4ð6ˆAô ˜AŸF™F C¨¯©°Ó4ˆAà%)°¸3ö 
=ð ˜˜S ! QÐ&Ð&rŽ   c                óä  ‡ ‡— t        |t        «      r‰ j                  |j                  k7  rt        d‰ ›d|›�«      ‚‰ j                  |j                  k(  rQ‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  f|j                  |j                  ffS ‰ j                  ‰ j                  j                  |j                  «      c}Št        ‰ j                  |‰ j                  ‰«      t        ‰ j                  |‰ j                  ‰«      f}t        |j                  ||j                  ‰«      t        |j                  ||j                  ‰«      f}dd|fˆˆ fd„	}|‰|||fS )z5Unify representations of two multivariate fractions. râ   rã   TFc                ó„   •— |r|s| |z  S |dz
  }|rt        | ||‰«      \  } }‰j                  j                  | |f‰|«      S r’  r­  r®  s        €€rŒ   rI  zDMF.frac_unify.<locals>.perÓ	  r°  rŽ   )
rƒ   rš  r‹   rz   rŠ   rI  rœ  r�  rä   r   r±  s   `     @rŒ   Ú
frac_unifyzDMF.frac_unifyÂ	  s  ù€ ä˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—E‘E˜1Ÿ5™5 !§%¡%¨!¯%©%°·±¨Ø*+¯%©%°·±¨ð9ð 9ð —u‘u˜aŸe™eŸk™k¨!¯%©%Ó0ˆHˆC�ä˜QŸU™U C¨¯©°Ó4Ü˜QŸU™U C¨¯©°Ó4ð6ˆAô ˜QŸU™U C¨¯©°Ó4Ü˜QŸU™U C¨¯©°Ó4ð6ˆAð &*°¸3ö 
=ð ˜˜S ! QÐ&Ð&rŽ   c                ó²   — | j                   | j                  }}|r|s||z  S |dz  }|rt        ||||«      \  }}| j                  j	                  ||f||«      S )z.Create a DMF out of the given representation. r¥   )r‹   rŠ   rc   rÏ   r†   )r™   rœ  r�  rO  r¯  r‹   rŠ   s          rŒ   rI  zDMF.perá	  s]   € à—5‘5˜!Ÿ%™%ˆSˆáÙØ˜3‘w�à�q‘�áÜ! # s¨C°Ó5‰HˆC�à�{‰{�‰  S˜z¨3°Ó4Ð4rŽ   c                ó^   — | j                   }|r	|s|S |dz  }t        || j                  |«      S )rG  r¥   )r‹   r€   rŠ   )r™   r‰   r¯  r‹   s       rŒ   Úhalf_perzDMF.half_perð	  s2   € à�e‰eˆáÙØ�
à�q‘�ä�3˜Ÿ™˜sÓ#Ð#rŽ   c                ó(   — | j                  d||«      S r�   ©r†   rÄ   s      rŒ   rÅ   zDMF.zeroü	  ó   € à�w‰w�q˜#˜sÓ#Ð#rŽ   c                ó(   — | j                  d||«      S r’  rº  rÄ   s      rŒ   rÇ   zDMF.one 
  r»  rŽ   c                ó8   — | j                  | j                  «      S )z Returns the numerator of ``f``. )r¸  rœ  r˜   s    rŒ   rE  z	DMF.numer
  ó   € à�z‰z˜!Ÿ%™%Ó Ð rŽ   c                ó8   — | j                  | j                  «      S )z"Returns the denominator of ``f``. )r¸  r�  r˜   s    rŒ   rD  z	DMF.denom
  r¾  rŽ   c                óN   — | j                  | j                  | j                  «      S )z4Remove common factors from ``f.num`` and ``f.den``. )rI  rœ  r�  r˜   s    rŒ   rO  z
DMF.cancel
  s   € à�u‰u�Q—U‘U˜AŸE™EÓ"Ð"rŽ   c                ó�   — | j                  t        | j                  | j                  | j                  «      | j
                  d¬«      S )rZ  F©rO  )rI  r8   rœ  r‹   rŠ   r�  r˜   s    rŒ   r[  zDMF.neg
  s0   € à�u‰u”W˜QŸU™U A§E¡E¨1¯5©5Ó1°1·5±5ÀˆuÓGÐGrŽ   c                ó*   — | | j                  |«      z   S r]  )rÞ   r_  s     rŒ   r`  zDMF.add_ground
  s   € à�1—<‘< “?Ñ"Ð"rŽ   c           	     ó8  — t        |t        «      r,| j                  |«      \  }}}\  }}}t        |||||«      |}	}nV| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        t        ||||«      t        ||||«      ||«      }t        ||||«      }	 |||	«      S )z0Add two multivariate fractions ``f`` and ``g``. )rƒ   r€   r²  rF   rµ  r9   r;   ©r™   ræ   r‹   rŠ   rI  ÚF_numÚF_denrv  rœ  r�  rI  ÚG_numÚG_dens                rŒ   rw  zDMF.add
  ó°   € ä�aœÔØ/0¯|©|¸A«Ñ,ˆC��c™>˜E 5¨1Ü" 5¨%°°C¸Ó=¸u�‰Cà"#§,¡,¨q£/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eäœ' %¨°°SÓ9Ü! %¨°°SÓ9¸3ÀóEˆCä˜% ¨¨SÓ1ˆCá�3˜‹}ÐrŽ   c           	     ó8  — t        |t        «      r,| j                  |«      \  }}}\  }}}t        |||||«      |}	}nV| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        t        ||||«      t        ||||«      ||«      }t        ||||«      }	 |||	«      S )z5Subtract two multivariate fractions ``f`` and ``g``. )rƒ   r€   r²  rG   rµ  r:   r;   rÅ  s                rŒ   r|  zDMF.sub'
  rÊ  rŽ   c                ó  — t        |t        «      r+| j                  |«      \  }}}\  }}}t        ||||«      |}	}n>| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        ||||«      }t        ||||«      }	 |||	«      S )z5Multiply two multivariate fractions ``f`` and ``g``. ©rƒ   r€   r²  r;   rµ  rÅ  s                rŒ   r€  zDMF.mul6
  s”   € ä�aœÔØ/0¯|©|¸A«Ñ,ˆC��c™>˜E 5¨1Ü˜u a¨¨cÓ2°E�‰Cà"#§,¡,¨q£/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eä˜% ¨¨SÓ1ˆCÜ˜% ¨¨SÓ1ˆCá�3˜‹}ÐrŽ   c           	     ó@  — t        |t        «      rx| j                  | j                  }}|dk  r||| }}}| j	                  t        ||| j                  | j                  «      t        ||| j                  | j                  «      d¬«      S t        dt        |«      z  «      ‚)r‡  r   FrÂ  rˆ  )
rƒ   r©   rœ  r�  rI  r=   r‹   rŠ   r‰  r…   )r™   r  rœ  r�  s       rŒ   rŒ  zDMF.powD
  s�   € ä�aœÔØ—u‘u˜aŸe™e�ˆCØ�1ŠuØ! 3¨¨˜!�S�Ø—5‘5œ  a¨¯©°·±Ó6Ü   a¨¯©°·±Ó6¸uð ó Fð Fô Ð6¼¸a»Ñ@ÓAÐArŽ   c                ó  — t        |t        «      r+| j                  |«      \  }}}\  }}}|t        ||||«      }	}n>| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        ||||«      }t        ||||«      }	 |||	«      S )z0Computes quotient of fractions ``f`` and ``g``. rÍ  rÅ  s                rŒ   r­  zDMF.quoO
  s”   € ä�aœÔØ/0¯|©|¸A«Ñ,ˆC��c™>˜E 5¨1Øœg e¨Q°°SÓ9�‰Cà"#§,¡,¨q£/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eä˜% ¨¨SÓ1ˆCÜ˜% ¨¨SÓ1ˆCá�3˜‹}ÐrŽ   c                óR   — | j                  | j                  | j                  d¬«      S )z&Computes inverse of a fraction ``f``. FrÂ  )rI  r�  rœ  )r™   Úchecks     rŒ   r!  z
DMF.invert_
  s   € à�u‰u�Q—U‘U˜AŸE™E¨%ˆuÓ0Ð0rŽ   c                óB   — t        | j                  | j                  «      S )z.Returns ``True`` if ``f`` is a zero fraction. ©r"   rœ  r‹   r˜   s    rŒ   r!  zDMF.is_zeroc
  s   € ô ˜!Ÿ%™% §¡Ó'Ð'rŽ   c                ó²   — t        | j                  | j                  | j                  «      xr+ t        | j                  | j                  | j                  «      S )z.Returns ``True`` if ``f`` is a unit fraction. )r#   rœ  r‹   rŠ   r�  r˜   s    rŒ   rÓ  z
DMF.is_oneh
  s>   € ô ˜Ÿ™ §¡ q§u¡uÓ-ò +Ü�a—e‘e˜QŸU™U A§E¡EÓ*ð	+rŽ   c                ó"   — | j                  «       S r    rú  r˜   s    rŒ   rû  zDMF.__neg__n
  rø  rŽ   c                óB  — t        |t        t        f«      r| j                  |«      S || j                  v r*| j                  | j                  j                  |«      «      S 	 | j                  | j                  |«      «      S # t        t        t        f$ r	 t        cY S w xY wr    )rƒ   r€   rš  rw  rŠ   r`  r¾   r¸  r‰  r   rÁ   rý  r¸  s     rŒ   rþ  zDMF.__add__q
  s}   € Ü�aœ#œs˜Ô$Ø—5‘5˜“8ˆOØ�!—%‘%‰ZØ—<‘< §¡§¡¨aÓ 0Ó1Ð1ð	"Ø—5‘5˜Ÿ™ A›Ó'Ð'øÜœ>Ô+>Ð?ò 	"Ü!Ò!ð	"ús   Á!B ÂBÂBc                ó$   — | j                  |«      S r    r  r¸  s     rŒ   r  zDMF.__radd__|
  r  rŽ   c                óÒ   — t        |t        t        f«      r| j                  |«      S 	 | j                  | j	                  |«      «      S # t
        t        t        f$ r	 t        cY S w xY wr    )	rƒ   r€   rš  r|  r¸  r‰  r   rÁ   rý  r¸  s     rŒ   r  zDMF.__sub__
  óV   € Ü�aœ#œs˜Ô$Ø—5‘5˜“8ˆOð	"Ø—5‘5˜Ÿ™ A›Ó'Ð'øÜœ>Ô+>Ð?ò 	"Ü!Ò!ð	"úó   ©A	 Á	A&Á%A&c                ó&   — |  j                  |«      S r    r  r¸  s     rŒ   r  zDMF.__rsub__ˆ
  r	  rŽ   c                óÒ   — t        |t        t        f«      r| j                  |«      S 	 | j                  | j	                  |«      «      S # t
        t        t        f$ r	 t        cY S w xY wr    )	rƒ   r€   rš  r€  r¸  r‰  r   rÁ   rý  r¸  s     rŒ   r  zDMF.__mul__‹
  rÙ  rÚ  c                ó$   — | j                  |«      S r    r  r¸  s     rŒ   r  zDMF.__rmul__”
  r  rŽ   c                ó$   — | j                  |«      S r    r  r‹  s     rŒ   r  zDMF.__pow__—
  r  rŽ   c                óÒ   — t        |t        t        f«      r| j                  |«      S 	 | j                  | j	                  |«      «      S # t
        t        t        f$ r	 t        cY S w xY wr    )	rƒ   r€   rš  r­  r¸  r‰  r   rÁ   rý  r¸  s     rŒ   r  zDMF.__truediv__š
  rÙ  rÚ  c                ó,   — | j                  d¬«      |z  S )NF)rÑ  )r!  )rØ   ræ   s     rŒ   r  zDMF.__rtruediv__£
  s   € Ø�{‰{ ˆ{Ó'¨Ñ)Ð)rŽ   c                ód  — 	 t        |t        «      r[| j                  |«      \  }}}\  }}}| j                  |j                  k(  r]t	        || j                  | j
                  «      xr ||k(  S | j                  |«      \  }}}}}| j                  |j                  k(  r||k(  S y# t        $ r Y yw xY wrE  ©rƒ   r€   r²  r‹   r#   rŠ   rµ  rz   ©r™   ræ   r  rÆ  rÇ  rv  rI  s          rŒ   r!  z
DMF.__eq__¦
  s§   € ð	Ü˜!œSÔ!Ø-.¯\©\¸!«_Ñ*��1�a™˜% ¨à—5‘5˜AŸE™E’>Ü$ U¨A¯E©E°1·5±5Ó9ÒH¸eÀq¹jÐHà !§¡¨Q£‘��1�a˜˜Aà—5‘5˜AŸE™E’>Ø ™6�Mð øô !ò 	Øàð	ús   ‚A*B# Á-4B# Â#	B/Â.B/c                óf  — 	 t        |t        «      r\| j                  |«      \  }}}\  }}}| j                  |j                  k(  r^t	        || j                  | j
                  «      xr ||k(   S | j                  |«      \  }}}}}| j                  |j                  k(  r||k7  S y# t        $ r Y yw xY w)NTrâ  rã  s          rŒ   Ú__ne__z
DMF.__ne__·
  sª   € ð	Ü˜!œSÔ!Ø-.¯\©\¸!«_Ñ*��1�a™˜% ¨à—5‘5˜AŸE™E’>Ü )¨%°·±¸¿¹Ó >Ò MÀ5ÈAÁ:ÐNÐNà !§¡¨Q£‘��1�a˜˜Aà—5‘5˜AŸE™E’>Ø ™6�Mð øô !ò 	Øàð	ús   ‚A+B$ Á.4B$ Â$	B0Â/B0c                ó:   — | j                  |«      \  }}}}}||k  S r    ©rµ  ©r™   ræ   r  rI  rv  s        rŒ   r+  z
DMF.__lt__È
  ó"   € ØŸ™ Q›‰ˆˆ1ˆa��AØ�1‰uˆrŽ   c                ó:   — | j                  |«      \  }}}}}||k  S r    rç  rè  s        rŒ   r.  z
DMF.__le__Ì
  ó"   € ØŸ™ Q›‰ˆˆ1ˆa��AØ�A‰vˆrŽ   c                ó:   — | j                  |«      \  }}}}}||kD  S r    rç  rè  s        rŒ   r1  z
DMF.__gt__Ð
  ré  rŽ   c                ó:   — | j                  |«      \  }}}}}||k\  S r    rç  rè  s        rŒ   r3  z
DMF.__ge__Ô
  rë  rŽ   c                óD   — t        | j                  | j                  «       S r    rÓ  r˜   s    rŒ   r5  zDMF.__bool__Ø
  s   € Ü˜aŸe™e Q§U¡UÓ+Ð+Ð+rŽ   r    )TFr6  r8  )2rÐ   r:  r;  r<  r=  r¢  r>  r†   rÞ   r¡  rÑ   rÕ   r²  rµ  rI  r¸  rÅ   rÇ   rE  rD  rO  r[  r`  rw  r|  r€  rŒ  r­  r±  r!  r?  r!  rÓ  rû  rþ  r  r  r  r  r  r  r  r  r!  rå  r+  r.  r1  r3  r5  r~   rŽ   rŒ   rš  rš  T	  sA  „ Ù1à,€Ióð ò
ó ð
ò1ð ò)ó ð)òVPò7ò'ò:'ó>5ó
$ð ñ$ó ð$ð ñ$ó ð$ò!ò!ò#òHò#òòòò	Bòð €Eó1ð ñ(ó ð(ð ñ+ó ð+ò
ò	"òò"òò"òòò"ò*òò"ò"òòòó,rŽ   rš  c                óD   — t        t        | |«      t        ||«      |«      S r    )ÚANPr   )r‰   ÚmodrŠ   s      rŒ   Úinit_normal_ANPrò  Ü
  s$   € ÜŒz˜#˜sÓ#Ü˜#˜sÓ# Só*ð *rŽ   c                  óÜ  ‡ — e Zd ZdZdZd„ Zeˆ fd„«       Zd„ Ze	d„ «       Z
e	d„ «       Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+e	d(„ «       Z,e	d)„ «       Z-e	d*„ «       Z.d+„ Z/d,„ Z0d-„ Z1d.„ Z2d/„ Z3d0„ Z4d1„ Z5d2„ Z6d3„ Z7d4„ Z8d5„ Z9d6„ Z:d7„ Z;d8„ Z<d9„ Z=d:„ Z>d;„ Z?d<„ Z@d=„ ZAˆ xZBS )>rð  z1Dense Algebraic Number Polynomials over a field. )r›   Ú_modrŠ   c                óò  — t        |t        «      rn€t        |«      t        u rt        t	        ||«      |d«      }nWt        |t
        «      r|D �cg c]  }|j                  |«      ‘Œ }}n|j                  |«      g}t        t        |«      |d«      }t        |t        «      rn>t        |t        «      rt        t	        ||«      |d«      }nt        t        |«      |d«      }| j                  |||«      S c c}w r�   )	rƒ   r€   r…   r³   r%   r„   r¾   r   r†   )rˆ   r‰   rñ  rŠ   r  s        rŒ   r�   zANP.__new__æ
  sÎ   € Ü�cœ3ÔØÜ�#‹Yœ$ÑÜ”m C¨Ó-¨s°AÓ6‰Cä˜#œtÔ$Ø/2Ö3¨!�s—{‘{ 1•~Ð3�Ñ3à—{‘{ 3Ó'Ð(�Ü”i “n c¨1Ó-ˆCä�cœ3ÔØÜ˜œTÔ"Ü”m C¨Ó-¨s°AÓ6‰Cä”i “n c¨1Ó-ˆCà�w‰w�s˜C Ó%Ð%ùò 4s   ÁC4c                ó¼   •— |j                   |j                   cxk(  r|k(  st        d«      ‚ t        d«      ‚t        ‰| �  | «      }||_        ||_        ||_         |S )NzInconsistent domain)rŠ   r¼   Úsuperr�   r›   rô  )rˆ   r‰   rñ  rŠ   rC  rÏ   s        €rŒ   r†   zANP.newû
  s]   ø€ à—‘˜3Ÿ7™7Ô) cÒ)ÜÐ4Ó5Ð5ð *ÜÐ4Ó5Ð5Ü‰g‰o˜cÓ"ˆØˆŒØˆŒØˆŒØˆ
rŽ   c                óT   — t         | j                  | j                  | j                  ffS r    )rð  r‰   rñ  rŠ   r×   s    rŒ   rö  zANP.__reduce__  s    € Ü�T—X‘X˜tŸx™x¨¯©Ð2Ð2Ð2rŽ   c                ó6   — | j                   j                  «       S r    ©r›   r—   r×   s    rŒ   r‰   zANP.rep  s   € à�y‰y× Ñ Ó"Ð"rŽ   c                ó"   — | j                  «       S r    )Úmod_to_listr×   s    rŒ   rñ  zANP.mod  s   € à×ÑÓ!Ð!rŽ   c                ó   — | j                   S r    r>  r×   s    rŒ   Úto_DMPz
ANP.to_DMP  ó   € Ø�y‰yÐrŽ   c                ó   — | j                   S r    )rô  r×   s    rŒ   Ú
mod_to_DMPzANP.mod_to_DMP  rÿ  rŽ   c                óP   — | j                  || j                  | j                  «      S r    )r†   rô  rŠ   rH  s     rŒ   rI  zANP.per  s   € Ø�u‰u�S˜!Ÿ&™& !§%¡%Ó(Ð(rŽ   c                óº   — | j                   j                  ›d| j                  j                  «       ›d| j                  j                  «       ›d| j
                  ›d�S rË   )rÏ   rÐ   r›   r—   rô  rŠ   r˜   s    rŒ   rÑ   zANP.__repr__  s8   € Ø#$§;¡;×#7Ó#7¸¿¹¿¹Õ9IÈ1Ï6É6Ï>É>ÕK[Ð]^×]bÓ]bÐcÐcrŽ   c                ó¨   — t        | j                  j                  | j                  «       | j                  j                  «       | j
                  f«      S r    )rÓ   rÏ   rÐ   rÔ   rô  rŠ   r˜   s    rŒ   rÕ   zANP.__hash__  s5   € Ü�Q—[‘[×)Ñ)¨1¯:©:«<¸¿¹¿¹Ó9JÈAÏEÉEÐRÓSÐSrŽ   c                ó®   — | j                   |k(  r| S | j                  | j                  j                  |«      | j                  j                  |«      |«      S )z.Convert ``f`` to a ``ANP`` over a new domain. )rŠ   r†   r›   r¾   rô  r½   s     rŒ   r¾   zANP.convert"  s?   € à�5‰5�CŠ<ØˆHà—5‘5˜Ÿ™Ÿ™¨Ó,¨a¯f©f¯n©n¸SÓ.AÀ3ÓGÐGrŽ   c                óÖ  ‡‡— t        |t        «      r| j                  |j                  k7  rt        d| ›d|›�«      ‚| j                  |j                  k(  r9| j                  | j
                  | j                  |j                  | j                  fS | j                  j                  |j                  «      Št        | j                  | j                  ‰«      }t        |j                  |j                  ‰«      }‰| j                  k7  r1‰|j                  k7  r"t        | j                  | j                  ‰«      Šn(‰| j                  k(  r| j                  Šn|j                  Šˆˆfd„}‰|||‰fS )z0Unify representations of two algebraic numbers. râ   rã   c                ó   •— t        | ‰‰«      S r    ©rð  )r‰   rŠ   rñ  s    €€rŒ   r�  zANP.unify.<locals>.<lambda>B  s   ø€ œc # s¨CÓ0€ rŽ   )	rƒ   rð  rñ  rz   rŠ   rI  r‰   rä   r   )r™   ræ   rI  rv  rI  rŠ   rñ  s        @@rŒ   rä   z	ANP.unify)  s  ù€ ô ˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—5‘5˜!Ÿ%™% §¡¨¯©¨q¯u©uÐ4Ð4à—%‘%—+‘+˜aŸe™eÓ$ˆCä˜AŸE™E 1§5¡5¨#Ó.ˆAÜ˜AŸE™E 1§5¡5¨#Ó.ˆAà�a—e‘eŠ|  q§u¡u¢Ü! !§%¡%¨¯©°Ó4‘à˜!Ÿ%™%’<ØŸ%™%‘CàŸ%™%�Cä0ˆCà�C˜˜A˜sÐ"Ð"rŽ   c                ó’  — t        |t        «      r| j                  |j                  k7  rt        d| ›d|›�«      ‚| j                  |j                  k7  rG| j                  j                  |j                  «      }| j                  |«      } |j                  |«      }| j                  |j                  | j                  | j                  fS rá   )rƒ   rð  rô  rz   rŠ   rä   r¾   r›   rå   s      rŒ   Ú	unify_ANPzANP.unify_ANPF  s‹   € ä˜!œSÔ! Q§V¡V¨q¯v©vÒ%5Ý#ÂÁAÐ$FÓGÐGð �5‰5�A—E‘EŠ>Ø—%‘%—+‘+˜aŸe™eÓ$ˆCØ—	‘	˜#“ˆAØ—	‘	˜#“ˆAà�v‰v�q—v‘v˜qŸv™v q§u¡uÐ,Ð,rŽ   c                ó   — t        d||«      S r�   r  ©rˆ   rñ  rŠ   s      rŒ   rÅ   zANP.zeroS  ó   € ä�1�c˜3ÓÐrŽ   c                ó   — t        d||«      S r’  r  r  s      rŒ   rÇ   zANP.oneW  r  rŽ   c                ó6   — | j                   j                  «       S )ré   )r›   rë   r˜   s    rŒ   rë   zANP.to_dict[  ó   € à�v‰v�~‰~ÓÐrŽ   c                ó´   — t        | j                  d| j                  «      }|j                  «       D ]#  \  }}| j                  j	                  |«      ||<   Œ% |S )rí   r   )r'   r‰   rŠ   rî   rï   )r™   r‰   rð   rñ   s       rŒ   rò   zANP.to_sympy_dict_  sN   € ä˜!Ÿ%™%  A§E¡EÓ*ˆà—I‘I“Kò 	'‰DˆAˆqØ—U‘U—^‘^ AÓ&ˆC�ŠFð	'ð ˆ
rŽ   c                ó6   — | j                   j                  «       S rü   rú  r˜   s    rŒ   r—   zANP.to_listh  r  rŽ   c                ó6   — | j                   j                  «       S )z5Return ``f.mod`` as a list with native coefficients. )rô  r—   r˜   s    rŒ   rü  zANP.mod_to_listl  r  rŽ   c                óz   — | j                  «       D �cg c]  }| j                  j                  |«      ‘Œ c}S c c}w )rô   )r—   rŠ   rï   r_  s     rŒ   rú   zANP.to_sympy_listp  s)   € à,-¯I©I«KÖ9 q�—‘—‘ Õ"Ò9Ð9ùÒ9s   “"8c                ó6   — | j                   j                  «       S rÿ   )r›   rÔ   r˜   s    rŒ   rÔ   zANP.to_tuplet  s   € ð �v‰v�‰Ó Ð rŽ   c           
     óh   — t        t        t        t        |j                  |«      «      «      ||«      S r    )rð  r   r„   r›  r¾   )rˆ   r‰   rñ  rŠ   s       rŒ   r¯   zANP.from_list|  s&   € ä”9œT¤# c§k¡k°3Ó"7Ó8Ó9¸3ÀÓDÐDrŽ   c                óV   — | j                  | j                  j                  |«      «      S r]  )rI  r›   r`  r_  s     rŒ   r`  zANP.add_ground€  ó    € à�u‰u�Q—V‘V×&Ñ& qÓ)Ó*Ð*rŽ   c                óV   — | j                  | j                  j                  |«      «      S rc  )rI  r›   re  r_  s     rŒ   re  zANP.sub_ground„  r  rŽ   c                óV   — | j                  | j                  j                  |«      «      S )z3Multiply ``f`` by an element of the ground domain. )rI  r›   ri  r_  s     rŒ   ri  zANP.mul_groundˆ  r  rŽ   c                óV   — | j                  | j                  j                  |«      «      S )z6Quotient of ``f`` by an element of the ground domain. )rI  r›   rm  r_  s     rŒ   rm  zANP.quo_groundŒ  r  rŽ   c                óT   — | j                  | j                  j                  «       «      S r    )rI  r›   r[  r˜   s    rŒ   r[  zANP.neg�  s   € Ø�u‰u�Q—V‘V—Z‘Z“\Ó"Ð"rŽ   c                ór   — | j                  |«      \  }}}}| j                  |j                  |«      ||«      S r    )r
  r†   rw  ©r™   ræ   rI  rv  rñ  rŠ   s         rŒ   rw  zANP.add“  ó2   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�u‰u�Q—U‘U˜1“X˜s CÓ(Ð(rŽ   c                ór   — | j                  |«      \  }}}}| j                  |j                  |«      ||«      S r    )r
  r†   r|  r  s         rŒ   r|  zANP.sub—  r  rŽ   c                ó�   — | j                  |«      \  }}}}| j                  |j                  |«      j                  |«      ||«      S r    )r
  r†   r€  r©  r  s         rŒ   r€  zANP.mul›  s;   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�u‰u�Q—U‘U˜1“X—\‘\ #Ó&¨¨SÓ1Ð1rŽ   c                ó<  — t        |t        «      st        dt        |«      z  «      ‚| j                  }| j
                  }|dk  r|j                  |«      | }}| j                  |j                  |«      j                  | j                  «      || j                  «      S )r‡  rˆ  r   )rƒ   r©   r‰  r…   rô  r›   r!  r†   rŒ  r©  rŠ   )r™   r  rñ  rI  s       rŒ   rŒ  zANP.powŸ  s{   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�f‰fˆØ�F‰FˆàˆqŠ5Ø—8‘8˜C“= 1 "ˆqˆAð �u‰u�Q—U‘U˜1“X—\‘\ !§&¡&Ó)¨3°·±Ó6Ð6rŽ   c                ó®   — | j                  |«      \  }}}}| j                  |j                  |j                  |«      «      j	                  |«      ||«      S r    )r
  r†   r€  r!  r©  r  s         rŒ   r±  z	ANP.exquo­  sF   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�u‰u�Q—U‘U˜1Ÿ8™8 C›=Ó)×-Ñ-¨cÓ2°C¸Ó=Ð=rŽ   c                óp   — | j                  |«      | j                  | j                  | j                  «      fS r    )r±  rÅ   rô  rŠ   r¸  s     rŒ   r¥  zANP.div±  s(   € Ø�w‰w�q‹z˜1Ÿ6™6 !§&¡&¨!¯%©%Ó0Ð0Ð0rŽ   c                ó$   — | j                  |«      S r    )r±  r¸  s     rŒ   r­  zANP.quo´  s   € Ø�w‰w�q‹zÐrŽ   c                ó¨   — | j                  |«      \  }}}}|j                  |«      \  }}|j                  r| j                  ||«      S t	        d«      ‚)NrR  )r
  r  rÓ  rÅ   r   )r™   ræ   rI  rv  rñ  rŠ   rÕ  r•  s           rŒ   r©  zANP.rem·  sK   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�|‰|˜A‹‰ˆˆ1à�8Š8Ø—6‘6˜#˜sÓ#Ð#ä Ó/Ð/rŽ   c                ó6   — | j                   j                  «       S rã  )r›   rä  r˜   s    rŒ   rä  zANP.LCÀ  ó   € à�v‰v�y‰y‹{ÐrŽ   c                ó6   — | j                   j                  «       S ræ  )r›   rè  r˜   s    rŒ   rè  zANP.TCÄ  r(  rŽ   c                ó.   — | j                   j                  S )z6Returns ``True`` if ``f`` is a zero algebraic number. )r›   r!  r˜   s    rŒ   r!  zANP.is_zeroÈ  s   € ð �v‰v�~‰~ÐrŽ   c                ó.   — | j                   j                  S )z6Returns ``True`` if ``f`` is a unit algebraic number. )r›   rÓ  r˜   s    rŒ   rÓ  z
ANP.is_oneÍ  s   € ð �v‰v�}‰}ÐrŽ   c                ó.   — | j                   j                  S rÕ  )r›   r×  r˜   s    rŒ   r×  zANP.is_groundÒ  s   € ð �v‰v×ÑÐrŽ   c                ó   — | S r    r~   r˜   s    rŒ   Ú__pos__zANP.__pos__×  s   € ØˆrŽ   c                ó"   — | j                  «       S r    rú  r˜   s    rŒ   rû  zANP.__neg__Ú  rø  rŽ   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr    )rƒ   rð  rw  rŠ   r¾   r`  r   rý  r¸  s     rŒ   rþ  zANP.__add__Ý  óW   € Ü�aœÔØ—5‘5˜“8ˆOð	#Ø—‘—‘˜aÓ ˆAð —<‘< “?Ð"øô ò 	"Ü!Ò!ð	"úó   £A ÁA!Á A!c                ó$   — | j                  |«      S r    r  r¸  s     rŒ   r  zANP.__radd__ç  r  rŽ   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr    )rƒ   rð  r|  rŠ   r¾   re  r   rý  r¸  s     rŒ   r  zANP.__sub__ê  r1  r2  c                ó&   — |  j                  |«      S r    r  r¸  s     rŒ   r  zANP.__rsub__ô  r	  rŽ   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr    )rƒ   rð  r€  rŠ   r¾   ri  r   rý  r¸  s     rŒ   r  zANP.__mul__÷  r1  r2  c                ó$   — | j                  |«      S r    r  r¸  s     rŒ   r  zANP.__rmul__  r  rŽ   c                ó$   — | j                  |«      S r    r  r‹  s     rŒ   r  zANP.__pow__  r  rŽ   c                ó$   — | j                  |«      S r    r  r¸  s     rŒ   r  zANP.__divmod__  r  rŽ   c                ó$   — | j                  |«      S r    r  r¸  s     rŒ   r  zANP.__mod__
  r  rŽ   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr    )rƒ   rð  r­  rŠ   r¾   rm  r   rý  r¸  s     rŒ   r  zANP.__truediv__  r1  r2  c                ód   — 	 | j                  |«      \  }}}}||k(  S # t        $ r	 t        cY S w xY wr    ©r
  rz   rý  ©r™   ræ   rI  rv  r  s        rŒ   r!  z
ANP.__eq__  ó>   € ð	"ØŸ™ Q›‰JˆAˆq�!�Qð �A‰vˆøô !ò 	"Ü!Ò!ð	"úó   ‚ �/®/c                ód   — 	 | j                  |«      \  }}}}||k7  S # t        $ r	 t        cY S w xY wr    r=  r>  s        rŒ   rå  z
ANP.__ne__  r?  r@  c                ó8   — | j                  |«      \  }}}}||k  S r    ©r
  r>  s        rŒ   r+  z
ANP.__lt__%  ó    € Ø—[‘[ “^‰
ˆˆ1ˆa�Ø�1‰uˆrŽ   c                ó8   — | j                  |«      \  }}}}||k  S r    rC  r>  s        rŒ   r.  z
ANP.__le__)  ó    € Ø—[‘[ “^‰
ˆˆ1ˆa�Ø�A‰vˆrŽ   c                ó8   — | j                  |«      \  }}}}||kD  S r    rC  r>  s        rŒ   r1  z
ANP.__gt__-  rD  rŽ   c                ó8   — | j                  |«      \  }}}}||k\  S r    rC  r>  s        rŒ   r3  z
ANP.__ge__1  rF  rŽ   c                ó,   — t        | j                  «      S r    )r˜  r›   r˜   s    rŒ   r5  zANP.__bool__5  s   € Ü�A—F‘F‹|ÐrŽ   )CrÐ   r:  r;  r<  r=  r�   r>  r†   rö  r?  r‰   rñ  rþ  r  rI  rÑ   rÕ   r¾   rä   r
  rÅ   rÇ   rë   rò   r—   rü  rú   rÔ   r¯   r`  re  ri  rm  r[  rw  r|  r€  rŒ  r±  r¥  r­  r©  rä  rè  r!  rÓ  r×  r.  rû  rþ  r  r  r  r  r  r  r  r  r  r!  rå  r+  r.  r1  r3  r5  Ú__classcell__)rÏ   s   @rŒ   rð  rð  á
  s¾  ø„ Ù;à'€Iò&ð* óó ðò3ð ñ#ó ð#ð ñ"ó ð"òòò)òdòTòHò#ò:-ð ñ ó ð ð ñ ó ð ò òò ò ò:ò!ð ñEó ðEò+ò+ò+ò+ò#ò)ò)ò2ò7ò>ò1òò0òòð ñó ðð ñó ðð ñ ó ð òòò#òò#òò#òòòòò#òòòòòòörŽ   rð  )“r<  Ú
__future__r   Úsympy.external.gmpyr   Úsympy.utilities.exceptionsr   Úsympy.core.numbersr   Úsympy.core.sympifyr   Úsympy.polys.polyutilsr   r	   Úsympy.polys.domainsr
   r   r   Úsympy.polys.polyerrorsr   r   r   r   Úsympy.polys.densebasicr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Úsympy.polys.densearithr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   Úsympy.polys.densetoolsrK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   Úsympy.polys.euclidtoolsrZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   Úsympy.polys.sqfreetoolsrd   re   rf   rg   rh   ri   rj   Úsympy.polys.factortoolsrk   rl   rm   rn   Úsympy.polys.rootisolationro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   Ú__annotations__r}   r|   r€   r“   r‘   rž  rš  rò  rð  r~   rŽ   rŒ   ú<module>r[     sQ  ðÚ 7å "å ,å @å !Ý *ß Cß .Ñ .÷ó ÷÷ ÷ ÷ ÷ ÷ ÷ ÷ õ ÷0÷ ÷ ÷ ÷ ÷ õ ÷4÷ ÷ ÷ ñ ÷"÷ ÷ ÷(÷ (ñ (÷.ó .÷$÷ $÷ $ñ $÷ð
 #Ó "à�7ÒÛØ˜"�X�Nà€EØ€NôDˆ+ô DôN"p�ô pôfH
3�ô H
3òV4ô
E,Ð
˜kô E,òP*ô
Uˆ+õ UrŽ   