§
    ¬³Ùg¤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’dS )#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                  óZ  — 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/„Z0d0„ Z1d1„ Z2d2„ Z3d3„ Z4d4„ Z5d5„ Z6d6„ Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;d;„ Z<d<„ Z=d=„ Z>d>„ Z?d?„ Z@d@„ ZAdA„ ZBdB„ ZCdC„ ZDdD„ ZEdE„ ZFdF„ ZGdG„ ZHdH„ ZIdI„ ZJdJ„ ZKdK„ ZLdL„ ZMdM„ ZNdN„ ZOdO„ ZPdP„ ZQdQ„ ZRdR„ ZSdS„ ZTdT„ ZUdU„ ZVdV„ ZWdW„ ZXdX„ ZYdY„ ZZdZ„ Z[dÕd[„Z\d\„ Z]d]„ Z^d^„ Z_d_„ Z`d`„ Zada„ Zbdb„ Zcdc„ Zddd„ Zede„ Zfdf„ Zgdg„ Zhdh„ ZidÖdj„Zjdk„ ZkdÖdl„Zldm„ ZmdÕdn„Zndo„ Zodp„ Zpdq„ Zqdr„ Zrds„ Zsdt„ Ztdu„ Zudv„ Zvdw„ Zwdx„ Zxdy„ Zydz„ ZzdÔd{„Z{dÔd|„Z|d}„ 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ÑdS )ÛÚDMPú)Dense Multivariate Polynomials over `K`. r~   Nc                óÂ   — |€t          |¦  «        \  }}n4t          |t          ¦  «        st          dt	          |¦  «        z  ¦  «        ‚|                      |||¦  «        S )Nzexpected list, got %s)r   Ú
isinstanceÚlistr   ÚtypeÚnew©ÚclsÚrepÚdomÚlevs       úM/granary/edev/quantum/lib/python3.11/site-packages/sympy/polys/polyclasses.pyÚ__new__zDMP.__new__�   s]   € àˆ;Ý# CÑ(Ô(‰HˆC��Ý˜C¥Ñ&Ô&ð 	FÝ Ð!8½4À¹9¼9Ñ!DÑEÔEÐEà�wŠw�s˜C Ñ%Ô%Ð%ó    c                óž   — t           �+|dk    r%|t          v rt                               |||¦  «        S t                               |||¦  «        S ©Nr   )r}   r|   Ú	DUP_FlintÚ_newÚ
DMP_Pythonr‡   s       rŒ   r†   zDMP.new˜   sI   € õ ÐØ�aŠxˆx˜C¥>Ð1Ð1Ý —~’~ c¨3°Ñ4Ô4Ð4å�Š˜s C¨Ñ-Ô-Ð-rŽ   c                óN   — t          ddd¬¦  «         |                      ¦   «         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¤   s8   € õ 	"ð #ð &,Ø'0ð		
ñ 		
ô 		
ð 		
ð �yŠy‰{Œ{ÐrŽ   c                óÆ   — t           �Yt          | t          ¦  «        rD| j        dk    r9| j        t
          v r+t                               | 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.
        Nr   )	r}   rƒ   r“   r‹   rŠ   r|   r‘   r†   Ú_repr˜   s    rŒ   Úto_bestzDMP.to_bestµ   sS   € õ ÐÝ˜!�ZÑ(Ô(ð ;¨Q¬U°aªZ¨Z¸A¼EÅ^Ð<SÐ<SÝ —}’} Q¤V¨Q¬U°A´EÑ:Ô:Ð:àˆrŽ   c                ó–   ‡‡— t          ‰t          ¦  «        sJ ‚t          |t          ¦  «        r|dk    sJ ‚ˆˆfd„Š ‰||¦  «         d S )Nr   c                ó¨   •— t          | t          ¦  «        sJ ‚|dk    rt          ˆfd„| D ¦   «         ¦  «        sJ ‚d S | D ]} ‰||dz
  ¦  «         Œd S )Nr   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S ©N)Úof_type)Ú.0ÚcrŠ   s     €rŒ   ú	<genexpr>z;DMP._validate_args.<locals>.validate_rep.<locals>.<genexpr>É   s-   øè è € Ð7Ð7¨a˜3Ÿ;š; q™>œ>Ð7Ð7Ð7Ð7Ð7Ð7rŽ   é   )rƒ   r„   Úall)r‰   r‹   ÚrrŠ   Úvalidate_reps      €€rŒ   r¨   z(DMP._validate_args.<locals>.validate_repÆ   sƒ   ø€ Ý˜c¥4Ñ(Ô(Ð(Ð(Ð(Ø�aŠxˆxÝÐ7Ð7Ð7Ð7°3Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7àð -ð -�AØ �L  C¨!¡GÑ,Ô,Ð,Ð,ð-ð -rŽ   )rƒ   r
   Úint)rˆ   r‰   rŠ   r‹   r¨   s     ` @rŒ   Ú_validate_argszDMP._validate_argsÁ   sn   øø€ å˜#�vÑ&Ô&Ð&Ð&Ð&Ý˜#�sÑ#Ô#Ð0¨¨qª¨¨¨ð	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	ˆ�S˜#ÑÔÐÐÐrŽ   c                óR   — t          |||¦  «        }|                      |||¦  «        S r    )r&   r†   ©rˆ   r‰   r‹   rŠ   s       rŒ   Ú	from_dictzDMP.from_dictÐ   s)   € å˜C  cÑ*Ô*ˆØ�wŠw�s˜C Ñ%Ô%Ð%rŽ   c                óP   — |                       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Ô7¸¸cÑBÔBÐBrŽ   c                óN   — |                       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Ô4°c¸3Ñ?Ô?Ð?rŽ   c           
     ól   —  | t          t          t          ||¦  «        ¦  «        ¦  «        ||¦  «        S r    )Údictr„   Úzip)rˆ   ÚmonomsÚcoeffsr‹   rŠ   s        rŒ   Úfrom_monoms_coeffszDMP.from_monoms_coeffsß   s0   € àˆs•4��S ¨Ñ0Ô0Ñ1Ô1Ñ2Ô2°C¸Ñ=Ô=Ð=rŽ   c                óè  — | j         |k    r| S | j        st          €|                      |¦  «        S t	          | t
          ¦  «        rE|t          v r|                      |¦  «        S |                      ¦   «                              |¦  «        S t	          | t          ¦  «        rE|t          v r'|                      |¦  «         	                    ¦   «         S |                      |¦  «        S t          d¦  «        ‚)z0Convert ``f`` to a ``DMP`` over the new domain. Nzunreachable code)rŠ   r‹   r}   Ú_convertrƒ   r‘   r|   Úto_DMP_Pythonr“   Úto_DUP_FlintÚRuntimeError©r™   rŠ   s     rŒ   ÚconvertzDMP.convertã   sÓ   € àŒ5�CŠ<ˆ<ØˆHØŒUð 	3•e�mØ—:’:˜c‘?”?Ð"Ý˜�9Ñ%Ô%ð 	3Ø•nÐ$Ð$Ø—z’z #‘”Ð&à—’Ñ(Ô(×1Ò1°#Ñ6Ô6Ð6Ý˜�:Ñ&Ô&ð 	3Ø•nÐ$Ð$Ø—z’z #‘”×3Ò3Ñ5Ô5Ð5à—z’z #‘”Ð&åÐ1Ñ2Ô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                ó@   — 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                óZ   — | j         j        ›d|                      ¦   «         ›d| j        ›d�S ©Nú(ú, ú))Ú	__class__Ú__name__r—   rŠ   r˜   s    rŒ   Ú__repr__zDMP.__repr__  s,   € Ø œ{Ô3Ð3Ð3°Q·Y²Y±[´[°[°[À!Ä%À%À%ÐHÐHrŽ   c                ót   — t          | j        j        |                      ¦   «         | j        | j        f¦  «        S r    )ÚhashrÏ   rÐ   Úto_tupler‹   rŠ   r˜   s    rŒ   Ú__hash__zDMP.__hash__  s*   € Ý�Q”[Ô)¨1¯:ª:©<¬<¸¼ÀÄÐFÑGÔGÐGrŽ   c                óD   — |                       ¦   «         | j        | j        fS r    )r—   rŠ   r‹   ©Úselfs    rŒ   Ú__getnewargs__zDMP.__getnewargs__
  s   € Ø�|Š|‰~Œ~˜tœx¨¬Ð1Ð1rŽ   c                ó   — t           ‚©z*Construct a new ground instance of ``f``. rÀ   ©r™   Úcoeffs     rŒ   Ú
ground_newzDMP.ground_new  ó   € å!Ð!rŽ   c                ó0  — t          |t          ¦  «        r| j        |j        k    rt          d| ›d|›�¦  «        ‚| j        |j        k    rI| 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  s†   € å˜!�SÑ!Ô!ð 	H Q¤U¨a¬e¢^ ^Ý#Ð#ÀÀÀÀAÀAÐ$FÑGÔGÐGàŒ5�A”EŠ>ˆ>Ø”%—+’+˜aœeÑ$Ô$ˆCØ—	’	˜#‘”ˆAØ—	’	˜#‘”ˆAà�!ˆtˆrŽ   Fc                ó`   — t          |                      ¦   «         | 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¸4Ð@Ñ@Ô@Ð@rŽ   c                ó    — |                       |¬¦  «        }|                     ¦   «         D ]"\  }}| 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!  sN   € à�iŠi˜TˆiÑ"Ô"ˆà—I’I‘K”Kð 	'ð 	'‰DˆAˆqØ”U—^’^ AÑ&Ô&ˆC�‰FˆFàˆ
rŽ   c                óL   ‡ ‡— ˆ ˆfd„Š ‰‰                       ¦   «         ¦  «        S )ú@Convert ``f`` to a list representation with SymPy coefficients. c                óØ   •— g }| D ]c}t          |t          ¦  «        r|                      ‰|¦  «        ¦  «         Œ6|                     ‰j                             |¦  «        ¦  «         Œd|S r    )rƒ   r„   ÚappendrŠ   rï   )r‰   ÚoutÚvalr™   Úsympify_nested_lists      €€rŒ   rù   z.DMP.to_sympy_list.<locals>.sympify_nested_list,  sr   ø€ ØˆCØð 4ð 4�Ý˜c¥4Ñ(Ô(ð 4Ø—J’JÐ2Ð2°3Ñ7Ô7Ñ8Ô8Ð8Ð8à—J’J˜qœuŸ~š~¨cÑ2Ô2Ñ3Ô3Ð3Ð3Øˆ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                óZ   — |                       | 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                óZ   — |                       | j                             ¦   «         ¦  «        S )z Make the ground domain a field. )r¾   rŠ   Ú	get_fieldr˜   s    rŒ   Úto_fieldzDMP.to_fieldG  ó    € à�yŠy˜œŸšÑ*Ô*Ñ+Ô+Ð+rŽ   c                óZ   — |                       | j                             ¦   «         ¦  «        S )zMake the ground domain exact. )r¾   rŠ   Ú	get_exactr˜   s    rŒ   Úto_exactzDMP.to_exactK  r  rŽ   r   c                ón   — | j         s|s|                      ||¦  «        S |                      |||¦  «        S ©z1Take a continuous subsequence of terms of ``f``. )r‹   Ú_sliceÚ
_slice_lev©r™   ÚmÚnÚjs       rŒ   Úslicez	DMP.sliceO  s;   € àŒ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                óB   — d„ |                       |¬¦  «        D ¦   «         S )z;Returns all non-zero coefficients from ``f`` in lex order. c                ó   — g | ]\  }}|‘ŒS r~   r~   )r¢   Ú_r£   s      rŒ   ú
<listcomp>zDMP.coeffs.<locals>.<listcomp>^  ó   € Ð5Ð5Ð5‘t�q˜!�Ð5Ð5Ð5rŽ   ©Úorder©Úterms©r™   r  s     rŒ   r¶   z
DMP.coeffs\  ó$   € à5Ð5˜qŸwšw¨U˜wÑ3Ô3Ð5Ñ5Ô5Ð5rŽ   c                óB   — d„ |                       |¬¦  «        D ¦   «         S )z8Returns all non-zero monomials from ``f`` in lex order. c                ó   — g | ]\  }}|‘ŒS r~   r~   )r¢   r  r  s      rŒ   r  zDMP.monoms.<locals>.<listcomp>b  r  rŽ   r  r  r  s     rŒ   rµ   z
DMP.monoms`  r   rŽ   c                ót   — | j         rd| j        dz   z  }|| j        j        fgS |                      |¬¦  «        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ð 	)Ø˜qœu q™yÑ)ˆJØ ¤¤Ð,Ð-Ð-à—8’8 %�8Ñ(Ô(Ð(rŽ   c                ó   — t           ‚r    rÀ   r  s     rŒ   r'  z
DMP._termsl  rÂ   rŽ   c                óŽ   — | j         rt          d¦  «        ‚| s| j        j        gS t	          |                      ¦   «         ¦  «        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  sF   € àŒ5ð 	LÝ!Ð"JÑKÔKÐKàð 	%Ø”E”J�<Ðå˜Ÿ	š	™œÑ$Ô$Ð$rŽ   c                óÄ   ‡— | j         rt          d¦  «        ‚|                      ¦   «         Š‰dk     rdgS ˆfd„t          |                      ¦   «         ¦  «        D ¦   «         S )z"Returns all monomials from ``f``. r+  r   r%  c                ó"   •— g | ]\  }}‰|z
  f‘ŒS r~   r~   ©r¢   Úir£   r  s      €rŒ   r  z"DMP.all_monoms.<locals>.<listcomp>ƒ  s#   ø€ ÐBÐBÐB¡$ ! Q�a˜!‘e�XÐBÐBÐBrŽ   )r‹   r{   ÚdegreeÚ	enumerater—   ©r™   r  s    @rŒ   Ú
all_monomszDMP.all_monomsy  sd   ø€ àŒ5ð 	LÝ!Ð"JÑKÔKÐKà�HŠH‰JŒJˆàˆqŠ5ˆ5Ø�6ˆMàBÐBÐBÐB­)°A·I²I±K´KÑ*@Ô*@ÐBÑBÔBÐBrŽ   c                óÜ   ‡— | j         rt          d¦  «        ‚|                      ¦   «         Š‰dk     rd| j        j        fgS ˆfd„t          |                      ¦   «         ¦  «        D ¦   «         S )z Returns all terms from a ``f``. r+  r   r%  c                ó&   •— g | ]\  }}‰|z
  f|f‘ŒS r~   r~   r/  s      €rŒ   r  z!DMP.all_terms.<locals>.<listcomp>�  s'   ø€ ÐGÐGÐG¡t q¨!�q˜1‘u�h �]ÐGÐGÐGrŽ   )r‹   r{   r1  rŠ   rÅ   r2  r—   r3  s    @rŒ   Ú	all_termszDMP.all_terms…  so   ø€ àŒ5ð 	LÝ!Ð"JÑKÔKÐKà�HŠH‰JŒJˆàˆqŠ5ˆ5Ø˜1œ5œ:Ð&Ð'Ð'àGÐGÐGÐG­y¸¿º¹¼Ñ/EÔ/EÐGÑGÔGÐGrŽ   c                óN   — |                       ¦   «                              ¦   «         S ©z-Convert algebraic coefficients to rationals. )Ú_liftrœ   r˜   s    rŒ   ÚliftzDMP.lift‘  s   € à�wŠw‰yŒy× Ò Ñ"Ô"Ð"rŽ   c                ó   — t           ‚r    rÀ   r˜   s    rŒ   r:  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Š   rE  s      rŒ   Úejectz	DMP.eject   rß   rŽ   c                ó\   — |                       ¦   «         \  }}||                     ¦   «         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Œ   rM  zDMP._exclude·  rÂ   rŽ   c                ó,   — |                       |¦  «        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À   rU  s     rŒ   rT  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                ó\   — |                       | 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Ÿ]š]¨1Ñ-Ô-Ñ.Ô.Ð.rŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S ©z5Subtract an element of the ground domain from ``f``. )Ú_sub_groundrŠ   r¾   rf  s     rŒ   Ú
sub_groundzDMP.sub_groundà  rh  rŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S ©z5Multiply ``f`` by a an element of the ground domain. )Ú_mul_groundrŠ   r¾   rf  s     rŒ   Ú
mul_groundzDMP.mul_groundä  rh  rŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S ©z8Quotient of ``f`` by a an element of the ground domain. )Ú_quo_groundrŠ   r¾   rf  s     rŒ   Ú
quo_groundzDMP.quo_groundè  rh  rŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S ©z>Exact quotient of ``f`` by a an element of the ground domain. )Ú_exquo_groundrŠ   r¾   rf  s     rŒ   Úexquo_groundzDMP.exquo_groundì  s"   € à�Š˜qœuŸ}š}¨QÑ/Ô/Ñ0Ô0Ð0rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z2Add two multivariate polynomials ``f`` and ``g``. )rç   Ú_add©r™   ræ   rP  ÚGs       rŒ   ÚaddzDMP.addð  ó%   € à�{Š{˜1‰~Œ~‰ˆˆ1Ø�vŠv�a‰yŒyÐrŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z7Subtract two multivariate polynomials ``f`` and ``g``. )rç   Ú_subr|  s       rŒ   ÚsubzDMP.subõ  r  rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z7Multiply two multivariate polynomials ``f`` and ``g``. )rç   Ú_mulr|  s       rŒ   ÚmulzDMP.mulú  r  rŽ   c                ó*   — |                       ¦   «         S ©ú(Square a multivariate polynomial ``f``. )Ú_sqrr˜   s    rŒ   ÚsqrzDMP.sqrÿ  s   € à�vŠv‰xŒxˆrŽ   c                ó”   — t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚|                      |¦  «        S )ú+Raise ``f`` to a non-negative power ``n``. ú``int`` expected, got %s)rƒ   r©   Ú	TypeErrorr…   Ú_powr3  s     rŒ   ÚpowzDMP.pow  s?   € å˜!�SÑ!Ô!ð 	BÝÐ6½¸a¹¼Ñ@ÑAÔAÐAØ�vŠv�a‰yŒyÐrŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©ú/Polynomial pseudo-division of ``f`` and ``g``. )rç   Ú_pdivr|  s       rŒ   ÚpdivzDMP.pdiv	  ó%   € à�{Š{˜1‰~Œ~‰ˆˆ1Ø�wŠw�q‰zŒzÐrŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©ú0Polynomial pseudo-remainder of ``f`` and ``g``. )rç   Ú_premr|  s       rŒ   ÚpremzDMP.prem  r˜  rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©ú/Polynomial pseudo-quotient of ``f`` and ``g``. )rç   Ú_pquor|  s       rŒ   ÚpquozDMP.pquo  r˜  rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©ú5Polynomial exact pseudo-quotient of ``f`` and ``g``. )rç   Ú_pexquor|  s       rŒ   Úpexquoz
DMP.pexquo  s%   € à�{Š{˜1‰~Œ~‰ˆˆ1Ø�yŠy˜‰|Œ|ÐrŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z7Polynomial division with remainder of ``f`` and ``g``. )rç   Ú_divr|  s       rŒ   ÚdivzDMP.div  r  rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z2Computes polynomial remainder of ``f`` and ``g``. )rç   Ú_remr|  s       rŒ   ÚremzDMP.rem"  r  rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z1Computes polynomial quotient of ``f`` and ``g``. )rç   Ú_quor|  s       rŒ   ÚquozDMP.quo'  r  rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z7Computes polynomial exact quotient of ``f`` and ``g``. )rç   Ú_exquor|  s       rŒ   Úexquoz	DMP.exquo,  s%   € à�{Š{˜1‰~Œ~‰ˆˆ1Ø�xŠx˜‰{Œ{ÐrŽ   c                ó   — t           ‚r    rÀ   rf  s     rŒ   re  zDMP._add_ground1  rÂ   rŽ   c                ó   — t           ‚r    rÀ   rf  s     rŒ   rk  zDMP._sub_ground4  rÂ   rŽ   c                ó   — t           ‚r    rÀ   rf  s     rŒ   ro  zDMP._mul_ground7  rÂ   rŽ   c                ó   — t           ‚r    rÀ   rf  s     rŒ   rs  zDMP._quo_ground:  rÂ   rŽ   c                ó   — t           ‚r    rÀ   rf  s     rŒ   rw  zDMP._exquo_ground=  rÂ   rŽ   c                ó   — t           ‚r    rÀ   ©r™   ræ   s     rŒ   r{  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À   r3  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                ó”   — t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚|                      |¦  «        S )ú0Returns the leading degree of ``f`` in ``x_j``. r�  )rƒ   r©   r�  r…   Ú_degree©r™   r  s     rŒ   r1  z
DMP.degreeg  s?   € å˜!�SÑ!Ô!ð 	BÝÐ6½¸a¹¼Ñ@Ñ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                ó  — |                       ¦   «         }i }|t          |                      ¦   «         d         d         ¦  «        k    }|                      ¦   «         D ]z}t          |d         ¦  «        }||k     r||z
  }nd}|r|d         ||d         |fz   <   Œ=t	          |d         ¦  «        }||xx         |z  cc<   |d         |t          |¦  «        <   Œ{t                               || 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Údr0  Úls	            rŒ   Ú
homogenizezDMP.homogenizey  sú   € à�^Š^ÑÔˆØˆØ�3˜qŸwšw™yœy¨œ|¨AœÑ/Ô/Ò/ˆ
Ø—G’G‘I”Ið 	+ð 	+ˆDÝ�D˜”G‘”ˆAØ�2ŠvˆvØ˜‘F��à�Øð +Ø)-¨a¬��t˜A”w ! ‘~Ñ&Ð&å˜˜aœ‘M”M�Ø�!��”˜‘	��‘Ø#'¨¤7�•u˜Q‘x”xÑ Ð Ý�}Š}˜V Q¤U­S°©_¬_Ñ%<¸a¼eÑDÔDÐDrŽ   c                ó°   — | j         rt           S |                      ¦   «         }t          |d         ¦  «        }|D ]}t          |¦  «        }||k    r dS Œ|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Œ  se   € àŒ9ð 	Ý�3ˆJà—’‘”ˆÝ�6˜!”9‰~Œ~ˆàð 	ð 	ˆEÝ˜‘J”JˆEà˜Š}ˆ}Ø�t�tð ð ˆ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|                      |¦  «        S t          d¦  «        ‚)ú+Returns the ``n``-th coefficient of ``f``. c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r    )rƒ   r©   )r¢   r  s     rŒ   r¤   zDMP.nth.<locals>.<genexpr>¦  s,   è è € Ð-Ð- a�z˜!�SÑ!Ô!Ð-Ð-Ð-Ð-Ð-Ð-rŽ   za sequence of integers expected)r¦   Ú_nthr�  ©r™   ÚNs     rŒ   ÚnthzDMP.nth¤  s@   € åÐ-Ð-¨1Ð-Ñ-Ô-Ñ-Ô-ð 	?Ø—6’6˜!‘9”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Ž   r¥   c                óþ   — t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚|                      ||¦  «        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¾  sp   € å˜!�SÑ!Ô!ð 	BÝÐ6½¸a¹¼Ñ@ÑAÔAÐAå˜!�SÑ!Ô!ð 	BÝÐ6½¸a¹¼Ñ@Ñ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  ¦  «        ‚|                      ||¦  «        S )ú<Computes the ``m``-th order derivative of ``f`` in ``x_j``. r�  )rƒ   r©   r�  r…   Ú_diffr  s      rŒ   ÚdiffzDMP.diffË  sn   € å˜!�SÑ!Ô!ð 	BÝÐ6½¸a¹¼Ñ@ÑAÔAÐAå˜!�SÑ!Ô!ð 	BÝÐ6½¸a¹¼Ñ@Ñ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|                      ||¦  «        S |                      |¦  «        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Ø  s‰   € å˜!�SÑ!Ô!ð 	>ÝÐ6½¸a¹¼Ñ@ÑAÔAÐAØ�q�/�/’/�/˜AœE’/�/�/�/ÝÐ8¸1Ñ<Ñ=Ô=Ð=àŒ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                óˆ   — |                       |¦  «        \  }}|j        rt          d¦  «        ‚|                     |¦  «        S )ú2Half extended Euclidean algorithm, if univariate. úunivariate polynomial expected)rç   r‹   r  Ú_half_gcdexr|  s       rŒ   Ú
half_gcdexzDMP.half_gcdexê  s@   € à�{Š{˜1‰~Œ~‰ˆˆ1àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>à�}Š}˜QÑÔÐrŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   r  zDMP._half_gcdexó  rÂ   rŽ   c                ó¾   — |                       |¦  «        \  }}|j        rt          d¦  «        ‚|j        j        st          d¦  «        ‚|                     |¦  «        S )ú-Extended Euclidean algorithm, if univariate. r  zground domain must be a field)rç   r‹   r  rŠ   Úis_Fieldr   Ú_gcdexr|  s       rŒ   Úgcdexz	DMP.gcdexö  sY   € à�{Š{˜1‰~Œ~‰ˆˆ1àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>àŒuŒ~ð 	?ÝÐ=Ñ>Ô>Ð>à�xŠx˜‰{Œ{ÐrŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   r!  z
DMP._gcdex  rÂ   rŽ   c                óˆ   — |                       |¦  «        \  }}|j        rt          d¦  «        ‚|                     |¦  «        S )ú(Invert ``f`` modulo ``g``, if possible. r  )rç   r‹   r  Ú_invertr|  s       rŒ   Úinvertz
DMP.invert  s>   € à�{Š{˜1‰~Œ~‰ˆˆ1àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>à�yŠy˜‰|Œ|ÐrŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   r&  zDMP._invert  rÂ   rŽ   c                óX   — | j         rt          d¦  «        ‚|                      |¦  «        S )ú"Compute ``f**(-1)`` mod ``x**n``. r  )r‹   r  Ú_revertr3  s     rŒ   Úrevertz
DMP.revert  s+   € àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>à�yŠy˜‰|Œ|ÐrŽ   c                ó   — t           ‚r    rÀ   r3  s     rŒ   r+  zDMP._revert  rÂ   rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©ú7Computes subresultant PRS sequence of ``f`` and ``g``. )rç   Ú_subresultantsr|  s       rŒ   ÚsubresultantszDMP.subresultants  s)   € à�{Š{˜1‰~Œ~‰ˆˆ1Ø×Ò Ñ"Ô"Ð"rŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   r1  zDMP._subresultants   rÂ   rŽ   c                óŠ   — |                       |¦  «        \  }}|r|                     |¦  «        S |                     |¦  «        S )ú/Computes resultant of ``f`` and ``g`` via PRS. )rç   Ú_resultant_includePRSÚ
_resultant)r™   ræ   Ú
includePRSrP  r}  s        rŒ   Ú	resultantzDMP.resultant#  sA   € à�{Š{˜1‰~Œ~‰ˆˆ1Øð 	#Ø×*Ò*¨1Ñ-Ô-Ð-à—<’< ‘?”?Ð"rŽ   c                ó   — t           ‚r    rÀ   )r™   ræ   r8  s      rŒ   r7  zDMP._resultant+  rÂ   rŽ   c                ó   — t           ‚©ú Computes discriminant of ``f``. rÀ   r˜   s    rŒ   ÚdiscriminantzDMP.discriminant.  rß   rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z4Returns GCD of ``f`` and ``g`` and their cofactors. )rç   Ú
_cofactorsr|  s       rŒ   Ú	cofactorszDMP.cofactors2  s%   € à�{Š{˜1‰~Œ~‰ˆˆ1Ø�|Š|˜A‰ŒÐrŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   rA  zDMP._cofactors7  rÂ   rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z+Returns polynomial GCD of ``f`` and ``g``. )rç   Ú_gcdr|  s       rŒ   ÚgcdzDMP.gcd:  r  rŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   rF  zDMP._gcd?  rÂ   rŽ   c                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©ú+Returns polynomial LCM of ``f`` and ``g``. )rç   Ú_lcmr|  s       rŒ   ÚlcmzDMP.lcmB  r  rŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   rL  zDMP._lcmG  rÂ   rŽ   Tc                óŠ   — |                       |¦  «        \  }}|r|                     |¦  «        S |                     |¦  «        S ©ú6Cancel common factors in a rational function ``f/g``. )rç   Ú_cancel_includeÚ_cancel)r™   ræ   ÚincluderP  r}  s        rŒ   Úcancelz
DMP.cancelJ  sA   € à�{Š{˜1‰~Œ~‰ˆˆ1àð 	 Ø×$Ò$ QÑ'Ô'Ð'à—9’9˜Q‘<”<ÐrŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   rS  zDMP._cancelS  rÂ   rŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   rR  zDMP._cancel_includeV  rÂ   rŽ   c                ó\   — |                       | 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À   r[  s     rŒ   rZ  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                ó\   — |                       |¦  «        \  }}|                     |¦  «        S ©z4Computes functional composition of ``f`` and ``g``. )rç   Ú_composer|  s       rŒ   ÚcomposezDMP.composel  s%   € à�{Š{˜1‰~Œ~‰ˆˆ1Ø�zŠz˜!‰}Œ}ÐrŽ   c                ó   — t           ‚r    rÀ   r¾  s     rŒ   rj  zDMP._composeq  rÂ   rŽ   c                óV   — | j         rt          d¦  «        ‚|                      ¦   «         S )ú,Computes functional decomposition of ``f``. r  )r‹   r  Ú
_decomposer˜   s    rŒ   Ú	decomposezDMP.decomposet  s)   € àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>à�|Š|‰~Œ~ÐrŽ   c                ó   — t           ‚r    rÀ   r˜   s    rŒ   ro  zDMP._decompose{  rÂ   rŽ   c                óˆ   — | j         rt          d¦  «        ‚|                      | j                             |¦  «        ¦  «        S )ú/Efficiently compute Taylor shift ``f(x + a)``. r  )r‹   r  Ú_shiftrŠ   r¾   r  s     rŒ   Úshiftz	DMP.shift~  s;   € àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>à�xŠx˜œŸš aÑ(Ô(Ñ)Ô)Ð)rŽ   c                óJ   ‡ — ˆ fd„|D ¦   «         }‰                       |¦  «        S )ú/Efficiently compute Taylor shift ``f(X + A)``. c                óD   •— g | ]}‰j                              |¦  «        ‘ŒS r~   )rŠ   r¾   )r¢   Úair™   s     €rŒ   r  z"DMP.shift_list.<locals>.<listcomp>‡  s'   ø€ Ð+Ð+Ð+ 2ˆQŒU�]Š]˜2ÑÔÐ+Ð+Ð+rŽ   )Ú_shift_listr  s   ` rŒ   Ú
shift_listzDMP.shift_list…  s.   ø€ à+Ð+Ð+Ð+¨Ð+Ñ+Ô+ˆØ�}Š}˜QÑÔÐrŽ   c                ó   — t           ‚r    rÀ   r  s     rŒ   rt  z
DMP._shiftŠ  rÂ   rŽ   c                óê   — | j         rt          d¦  «        ‚|                     |¦  «        \  }}|                      |¦  «        \  }}|                     |¦  «        \  }}|                     ||¦  «        S )ú5Evaluate functional transformation ``q**n * f(p/q)``.r  )r‹   r  rç   Ú
_transform)r™   r\  ÚqrV  ÚQrP  s         rŒ   Ú	transformzDMP.transform�  sh   € àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>à�{Š{˜1‰~Œ~‰ˆˆ1Ø�{Š{˜1‰~Œ~‰ˆˆ1Ø�{Š{˜1‰~Œ~‰ˆˆ1à�|Š|˜A˜qÑ!Ô!Ð!rŽ   c                ó   — t           ‚r    rÀ   ©r™   r\  r€  s      rŒ   r  zDMP._transform˜  rÂ   rŽ   c                óV   — | j         rt          d¦  «        ‚|                      ¦   «         S )ú&Computes the Sturm sequence of ``f``. r  )r‹   r  Ú_sturmr˜   s    rŒ   Ústurmz	DMP.sturm›  s)   € àŒ5ð 	?ÝÐ=Ñ>Ô>Ð>à�xŠx‰zŒzÐrŽ   c                ó   — t           ‚r    rÀ   r˜   s    rŒ   r‡  z
DMP._sturm¢  rÂ   rŽ   c                óV   — | j         rt          d¦  «        ‚|                      ¦   «         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ð 	?ÝÐ=Ñ>Ô>Ð>à×$Ò$Ñ&Ô&Ð&rŽ   c                ó   — t           ‚r    rÀ   r˜   s    rŒ   rŒ  zDMP._cauchy_upper_bound¬  rÂ   rŽ   c                óV   — | j         rt          d¦  «        ‚|                      ¦   «         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                óV   — | j         rt          d¦  «        ‚|                      ¦   «         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ð 	?ÝÐ=Ñ>Ô>Ð>à×,Ò,Ñ.Ô.Ð.rŽ   c                ó   — t           ‚r    rÀ   r˜   s    rŒ   r—  zDMP._mignotte_sep_bound_squaredÀ  rÂ   rŽ   c                óV   — | j         rt          d¦  «        ‚|                      ¦   «         S )ú4Computes greatest factorial factorization of ``f``. r  )r‹   r  Ú	_gff_listr˜   s    rŒ   Úgff_listzDMP.gff_listÃ  s)   € àŒ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|                      ||||¬¦  «        S |r|s|                      ||||¬¦  «        S |s|r|                      ||||¬¦  «        S |                      ||||¬¦  «        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ð 	WÝ!Ð"UÑVÔVÐVàð 	O�3ð 	OØ×+Ò+°¸À#ÈDÐ+ÑQÔQÐQØð 	O˜ð 	OØ×'Ò'¨C°S¸cÈÐ'ÑMÔMÐMØð 	O˜ð 	OØ×,Ò,°¸#À3ÈTÐ,ÑRÔRÐRà×(Ò(¨S°c¸sÈÐ(ÑNÔ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                ób   — | j         rt          d¦  «        ‚|                      |||||¬¦  «        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  sH   € ð Œ5ð 	EÝ!ØCñEô Eð Eð ×"Ò" 1 a¨S¸ÀDÐ"ÑIÔ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                ó*   — |                       ¦   «         S r    )r^  r˜   s    rŒ   Ú__abs__zDMP.__abs__W  ó   € Ø�uŠu‰wŒwˆrŽ   c                ó*   — |                       ¦   «         S r    ©rb  r˜   s    rŒ   Ú__neg__zDMP.__neg__Z  rÿ  rŽ   c                ó°   — t          |t          ¦  «        r|                      |¦  «        S 	 |                      |¦  «        S # t          $ r
 t
          cY S w xY wr    )rƒ   r€   r~  rg  r   ÚNotImplementedr¾  s     rŒ   Ú__add__zDMP.__add__]  ó_   € Ý�a�ÑÔð 	&Ø—5’5˜‘8”8ˆOð&Ø—|’| A‘”Ð&øÝ!ð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøó   ¬A ÁAÁAc                ó,   — |                       |¦  «        S r    ©r  r¾  s     rŒ   Ú__radd__zDMP.__radd__f  ó   € Ø�yŠy˜‰|Œ|ÐrŽ   c                ó°   — t          |t          ¦  «        r|                      |¦  «        S 	 |                      |¦  «        S # t          $ r
 t
          cY S w xY wr    )rƒ   r€   rƒ  rl  r   r  r¾  s     rŒ   Ú__sub__zDMP.__sub__i  r  r  c                ó.   — |                        |¦  «        S r    r	  r¾  s     rŒ   Ú__rsub__zDMP.__rsub__r  ó   € Ø��|Š|˜A‰ŒÐrŽ   c                ó°   — t          |t          ¦  «        r|                      |¦  «        S 	 |                      |¦  «        S # t          $ r
 t
          cY S w xY wr    )rƒ   r€   r‡  rp  r   r  r¾  s     rŒ   Ú__mul__zDMP.__mul__u  r  r  c                ó,   — |                       |¦  «        S r    ©r  r¾  s     rŒ   Ú__rmul__zDMP.__rmul__~  r  rŽ   c                ó°   — t          |t          ¦  «        r|                      |¦  «        S 	 |                      |¦  «        S # t          $ r
 t
          cY S w xY wr    )rƒ   r€   r·  rp  r   r  r¾  s     rŒ   Ú__truediv__zDMP.__truediv__�  s`   € Ý�a�ÑÔð 	&Ø—7’7˜1‘:”:Ðð&Ø—|’| A‘”Ð&øÝ!ð &ð &ð &Ý%Ð%Ð%Ð%ð&øøør  c                óú   — t          |t          ¦  «        r|                     | ¦  «        S 	 |                      ¦   «                              |¦  «                             | ¦  «        S # t
          $ r
 t          cY S w xY wr    )rƒ   r€   r·  rÉ   rp  r   r  r¾  s     rŒ   Ú__rtruediv__zDMP.__rtruediv__Š  sz   € Ý�a�ÑÔð 	&Ø—7’7˜1‘:”:Ðð&Ø—v’v‘x”x×*Ò*¨1Ñ-Ô-×3Ò3°AÑ6Ô6Ð6øÝ!ð &ð &ð &Ý%Ð%Ð%Ð%ð&øøøs   ¬9A& Á&A:Á9A:c                ó,   — |                       |¦  «        S r    ©r’  r3  s     rŒ   Ú__pow__zDMP.__pow__“  ó   € Ø�uŠu�Q‰xŒxˆrŽ   c                ó,   — |                       |¦  «        S r    ©r«  r¾  s     rŒ   Ú
__divmod__zDMP.__divmod__–  r  rŽ   c                ó,   — |                       |¦  «        S r    ©r¯  r¾  s     rŒ   Ú__mod__zDMP.__mod__™  r  rŽ   c                ó°   — t          |t          ¦  «        r|                      |¦  «        S 	 |                      |¦  «        S # t          $ r
 t
          cY S w xY wr    )rƒ   r€   r³  rt  r�  r  r¾  s     rŒ   Ú__floordiv__zDMP.__floordiv__œ  s_   € Ý�a�ÑÔð 	&Ø—5’5˜‘8”8ˆOð&Ø—|’| A‘”Ð&øÝð &ð &ð &Ý%Ð%Ð%Ð%ð&øøør  c                óÄ   — | |u rdS t          |t          ¦  «        st          S 	 |                      |¦  «        \  }}|                     |¦  «        S # t
          $ r Y dS w xY w)NTF)rƒ   r€   r  rç   Ú
_strict_eqrz   r|  s       rŒ   Ú__eq__z
DMP.__eq__¥  sv   € Ø�ˆ6ˆ6Ø�4Ý˜!�SÑ!Ô!ð 	"Ý!Ð!ð	#Ø—;’;˜q‘>”>‰DˆAˆqð —<’< ‘?”?Ð"øõ !ð 	ð 	ð 	Ø�5�5ð	øøøs   ¤A Á
AÁAc                ó   — t           ‚r    rÀ   r¾  s     rŒ   r'  zDMP._strict_eq±  rÂ   rŽ   c                ó<   — |s| |k    S |                       |¦  «        S r    )r'  ©r™   ræ   Ústricts      rŒ   ÚeqzDMP.eq´  s#   € Øð 	#Ø˜’6ˆMà—<’< ‘?”?Ð"rŽ   c                ó2   — |                       ||¬¦  «         S )N)r,  )r-  r+  s      rŒ   ÚnezDMP.neº  s   € Ø—4’4˜ &�4Ñ)Ô)Ð)Ð)rŽ   c                ó†   — |                       |¦  «        \  }}|                     ¦   «         |                     ¦   «         k     S r    ©rç   r—   r|  s       rŒ   Ú__lt__z
DMP.__lt__½  ó0   € Ø�{Š{˜1‰~Œ~‰ˆˆ1Ø�yŠy‰{Œ{˜QŸYšY™[œ[Ò(Ð(rŽ   c                ó†   — |                       |¦  «        \  }}|                     ¦   «         |                     ¦   «         k    S r    r1  r|  s       rŒ   Ú__le__z
DMP.__le__Á  ó0   € Ø�{Š{˜1‰~Œ~‰ˆˆ1Ø�yŠy‰{Œ{˜aŸiši™kœkÒ)Ð)rŽ   c                ó†   — |                       |¦  «        \  }}|                     ¦   «         |                     ¦   «         k    S r    r1  r|  s       rŒ   Ú__gt__z
DMP.__gt__Å  r3  rŽ   c                ó†   — |                       |¦  «        \  }}|                     ¦   «         |                     ¦   «         k    S r    r1  r|  s       rŒ   Ú__ge__z
DMP.__ge__É  r6  rŽ   c                ó   — | j          S r    )r&  r˜   s    rŒ   Ú__bool__zDMP.__bool__Í  s   € Ø”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,  r4  r7  r;  r:  r@  rF  rK  rQ  rM  rW  rT  r[  r^  rb  rg  rl  rp  rt  rx  r~  rƒ  r‡  rŒ  r’  r—  r�  r¢  r§  r«  r¯  r³  r·  re  rk  ro  rs  rw  r{  r‚  r†  r‹  r‘  r–  rœ  r¡  r¦  rª  r®  r²  r¶  r1  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+  r2  r1  r9  r7  r>  rB  rA  rG  rF  rM  rL  rU  rS  rR  r]  rZ  ra  rd  rg  rk  rj  rp  ro  ru  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Þ  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/  r2  r5  r8  r:  r<  r~   rŽ   rŒ   r€   r€   Š   sž  € € € € € Ø3Ð3à€Ið&ð &ð &ð &ð ð	.ð 	.ñ „[ð	.ð ðð ñ „Xðð 
ð 
ð 
ð ðð ñ „[ðð ð&ð &ñ „[ð&ð ðCð Cñ „[ðCð ð@ð @ñ „[ð@ð ð>ð >ñ „[ð>ð3ð 3ð 3ð&"ð "ð "ð ð,ð ,ñ „[ð,ð ð0ð 0ñ „[ð0ð"ð "ð "ðIð Ið IðHð Hð Hð2ð 2ð 2ð"ð "ð "ð
ð 
ð 
ðAð Að Að Aðð ð ð ð0ð 0ð 0ð"ð "ð "ð"ð "ð "ð+ð +ð +ð,ð ,ð ,ð,ð ,ð ,ð)ð )ð )ð )ð"ð "ð "ð"ð "ð "ð6ð 6ð 6ð 6ð6ð 6ð 6ð 6ð)ð )ð )ð )ð"ð "ð "ð "ð%ð %ð %ð
Cð 
Cð 
Cð
Hð 
Hð 
Hð#ð #ð #ð"ð "ð "ð"ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ðð ð ð&"ð "ð "ðð ð ð&"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð/ð /ð /ð/ð /ð /ð/ð /ð /ð/ð /ð /ð1ð 1ð 1ðð ð ð
ð ð ð
ð ð ð
ð ð ðð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ðð ð ð ð"ð "ð "ð"ð "ð "ð"ð "ð "ðEð Eð Eð&ð ð ð "ð "ð "ð"ð "ð "ð?ð ?ð ?ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð "ð"ð "ð "ðð ð ð ð"ð "ð "ð
ð 
ð 
ð 
ð"ð "ð "ð"ð "ð "ð ð  ð  ð"ð "ð "ð
ð 
ð 
ð"ð "ð "ðð ð ð"ð "ð "ðð ð ð"ð "ð "ð#ð #ð #ð
"ð "ð "ð#ð #ð #ð #ð"ð "ð "ð "ð"ð "ð "ðð ð ð
"ð "ð "ðð ð ð
"ð "ð "ðð ð ð
"ð "ð "ð ð  ð  ð  ð"ð "ð "ð"ð "ð "ð*ð *ð *ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ðð ð ð
"ð "ð "ðð ð ð"ð "ð "ð*ð *ð *ð ð  ð  ð
"ð "ð "ð	"ð 	"ð 	"ð"ð "ð "ðð ð ð"ð "ð "ð'ð 'ð 'ð"ð "ð "ð'ð 'ð 'ð"ð "ð "ð/ð /ð /ð"ð "ð "ðð ð ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð"ð "ð "ðOð Oð Oð Oð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ðJð Jð Jð Jð"ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ðð ð ðð ð ð&ð &ð &ðð ð ð&ð &ð &ðð ð ð&ð &ð &ðð ð ð&ð &ð &ð&ð &ð &ðð ð ðð ð ðð ð ð&ð &ð &ð
#ð 
#ð 
#ð"ð "ð "ð#ð #ð #ð #ð*ð *ð *ð *ð)ð )ð )ð*ð *ð *ð)ð )ð )ð*ð *ð *ðð ð ð ð 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drd„Zd„ Zd„ Zdsd„Zdsd„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-dtd.„Z.d/„ Z/d0„ Z0d1„ Z1d2„ Z2d3„ Z3d4„ Z4d5„ Z5d6„ Z6d7„ Z7dud9„Z8dud:„Z9d;„ Z:d<„ Z;d=„ Z<d>„ Z=d?„ Z>d@„ Z?dA„ Z@dB„ ZAdC„ ZBdD„ ZCdE„ ZDdF„ ZEdG„ ZFdH„ ZGdI„ ZHdJ„ ZIdK„ ZJdL„ ZKdM„ ZLdN„ ZMdO„ ZNdP„ ZOdQ„ ZPdR„ ZQdS„ ZRdT„ ZSdU„ ZTdV„ ZUdW„ ZVdX„ ZWdY„ ZXdZ„ ZYdsd[„ZZdsd\„Z[d]„ Z\d^„ Z]d_„ Z^d`„ Z_da„ Z`db„ Zadc„ Zbdvdd„Zcdvde„Zdeedf„ ¦   «         Zfeedg„ ¦   «         Zgeedh„ ¦   «         Zheedi„ ¦   «         Zieedj„ ¦   «         Zjeedk„ ¦   «         Zkeedl„ ¦   «         Zleedm„ ¦   «         Zmeedn„ ¦   «         Zneedo„ ¦   «         Zoeedp„ ¦   «         Zpeedq„ ¦   «         ZqdS )wr“   r�   )r›   rŠ   r‹   c                ód   — t                                | ¦  «        }||_        ||_        ||_        |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          |¦  «        k    rdS | j        |j        k    o| j        |j        k    o| j        |j        k    S ©NF)r…   r‹   rŠ   r›   r¾  s     rŒ   r'  zDMP_Python._strict_eqÞ  sG   € Ý�‰7Œ7•d˜1‘g”gÒÐØ�5ØŒu˜œŠ~ÐE !¤%¨1¬5¢.ÐE°Q´V¸q¼vÒ5EÐErŽ   c                óD   — |                       || 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 !¤%Ñ(Ô(Ð(rŽ   c                ó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Ñ=Ô=Ð=rŽ   c                óB   — |                       | j        | j        ¦  «        S r    )rÇ   r‹   rŠ   r˜   s    rŒ   rÉ   zDMP_Python._oneë  s   € Ø�uŠu�Q”U˜AœEÑ"Ô"Ð"rŽ   c                ó¶  ‡ ‡‡— t          |t          ¦  «        r‰ j        |j        k    rt          d‰ ›d|›�¦  «        ‚‰ j        |j        k    r ‰ j        ‰ j        ‰ j        ‰ j        |j        fS ‰ j        ‰ j                             |j        ¦  «        cŠŠt          ‰ j        ‰‰ j        ‰¦  «        }t          |j        ‰|j        ‰¦  «        }ˆˆ ˆfd„}‰‰|||fS )z7Unify representations of two multivariate polynomials. râ   rã   c                ó2   •— ‰                      | ‰‰¦  «        S r    )r’   )r‰   rŠ   r™   r‹   s    €€€rŒ   rP  zDMP_Python.unify.<locals>.perý  s   ø€ Ø—v’v˜c 3¨Ñ,Ô,Ð,rŽ   )	rƒ   r€   r‹   rz   rŠ   rP  r›   rä   r   )r™   ræ   rP  r}  rP  rŠ   r‹   s   `    @@rŒ   rä   zDMP_Python.unifyî  së   øøø€ õ ˜!�SÑ!Ô!ð 	H Q¤U¨a¬e¢^ ^Ý#Ð#ÀÀÀÀAÀAÐ$FÑGÔGÐGàŒ5�A”EŠ>ˆ>Ø”5˜!œ% ¤¨¬°´Ð6Ð6à”u˜aœeŸkšk¨!¬%Ñ0Ô0ˆHˆC�å˜AœF C¨¬°Ñ4Ô4ˆAÝ˜AœF C¨¬°Ñ4Ô4ˆAð-ð -ð -ð -ð -ð -ð -ð ˜˜S ! QÐ&Ð&rŽ   c                óX   — t                                | 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 a¤e¨Q¬UÑ3Ô3Ð3rŽ   c                ó*   — t          | j        ¦  «        S rý   )r„   r›   r˜   s    rŒ   r—   zDMP_Python.to_list  s   € å�A”F‰|Œ|ÐrŽ   c                ó6   — 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 A¤EÑ*Ô*Ð*rŽ   c                óx   — |                       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  s.   € à�vŠv•k !¤&¨!¬%°´¸Ñ<Ô<¸cÀ1Ä5ÑIÔIÐIrŽ   c                ó|   — t          | j        ||| j        ¦  «        }|                      || j        | j        ¦  «        S r  )r.   r›   rŠ   r’   r‹   )r™   r  r  r‰   s       rŒ   r  zDMP_Python._slice  s3   € å˜œ  1 a¤eÑ,Ô,ˆØ�vŠv�c˜1œ5 !¤%Ñ(Ô(Ð(rŽ   c                óŠ   — t          | 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  s9   € å˜1œ6 1 a¨¨A¬E°1´5Ñ9Ô9ˆØ�vŠv�c˜1œ5 !¤%Ñ(Ô(Ð(rŽ   Nc                óF   — t          | j        | j        | j        |¬¦  «        S )r$  r  )r,   r›   r‹   rŠ   r  s     rŒ   r'  zDMP_Python._terms  s   € å˜aœf a¤e¨Q¬U¸%Ð@Ñ@Ô@Ð@rŽ   c                óŽ   — t          | j        | j        | j        ¦  «        }|                      || j        j        | j        ¦  «        S r9  )rY   r›   r‹   rŠ   r’   ©r™   r§   s     rŒ   r:  zDMP_Python._lift   s5   € å�Q”V˜QœU A¤EÑ*Ô*ˆØ�vŠv�a˜œœ A¤EÑ*Ô*Ð*rŽ   c                óv   — t          | j        | j        | j        ¦  «        \  }}||                      |¦  «        fS r>  )r(   r›   r‹   rŠ   rP  rN  s      rŒ   r@  zDMP_Python.deflate%  s1   € å˜1œ6 1¤5¨!¬%Ñ0Ô0‰ˆˆ1Ø�!—%’%˜‘(”(ˆ{ÐrŽ   Fc                óŽ   — t          | j        | j        | j        |¬¦  «        \  }}|                      || j        j        |¦  «        S )rC  ©rE  )r)   r›   r‹   rŠ   r’   )r™   rE  rP  r‹   s       rŒ   rF  zDMP_Python.inject*  s<   € å˜AœF A¤E¨1¬5¸Ð>Ñ>Ô>‰ˆˆ3à�vŠv�a˜œœ CÑ(Ô(Ð(rŽ   c                óž   — t          | j        | j        ||¬¦  «        }|                      ||| j        t	          |j        ¦  «        z
  ¦  «        S )rI  rb  )r*   r›   r‹   r’   rØ  Úsymbols)r™   rŠ   rE  rP  s       rŒ   rK  zDMP_Python.eject0  sC   € å�a”f˜aœe S°Ð6Ñ6Ô6ˆà�vŠv�a˜˜aœe¥c¨#¬+Ñ&6Ô&6Ñ6Ñ7Ô7Ð7rŽ   c                ó†   — t          | j        | j        | j        ¦  «        \  }}}||                      || j        |¦  «        fS ©z&Remove useless generators from ``f``. )r-   r›   r‹   rŠ   r’   )r™   rO  rP  Úus       rŒ   rM  zDMP_Python._exclude6  s<   € å˜aœf a¤e¨Q¬UÑ3Ô3‰ˆˆ1ˆaà�!—&’&˜˜AœE 1Ñ%Ô%Ð%Ð%rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S ©z6Returns a polynomial in `K[x_{P(1)}, ..., x_{P(n)}]`. )rP  r0   r›   r‹   rŠ   rU  s     rŒ   rT  zDMP_Python._permute<  s(   € à�uŠu•[ ¤¨¨A¬E°1´5Ñ9Ô9Ñ:Ô:Ð:rŽ   c                óv   — t          | j        | j        | j        ¦  «        \  }}||                      |¦  «        fS rZ  )r+   r›   r‹   rŠ   rP  rN  s      rŒ   r[  zDMP_Python.terms_gcd@  s1   € å˜QœV Q¤U¨A¬EÑ2Ô2‰ˆˆ1Ø�!—%’%˜‘(”(ˆ{ÐrŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S rd  )rP  r2   r›   r‹   rŠ   rf  s     rŒ   re  zDMP_Python._add_groundE  ó(   € à�uŠu•^ A¤F¨A¨q¬u°a´eÑ<Ô<Ñ=Ô=Ð=rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S rj  )rP  r3   r›   r‹   rŠ   rf  s     rŒ   rk  zDMP_Python._sub_groundI  rl  rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S rn  )rP  r4   r›   r‹   rŠ   rf  s     rŒ   ro  zDMP_Python._mul_groundM  rl  rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S rr  )rP  r5   r›   r‹   rŠ   rf  s     rŒ   rs  zDMP_Python._quo_groundQ  rl  rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S rv  )rP  r6   r›   r‹   rŠ   rf  s     rŒ   rw  zDMP_Python._exquo_groundU  ó)   € à�uŠuÕ% a¤f¨a°´¸¼Ñ>Ô>Ñ?Ô?Ð?rŽ   c                óh   — |                       t          | j        | j        | j        ¦  «        ¦  «        S r]  )rP  r7   r›   r‹   rŠ   r˜   s    rŒ   r^  zDMP_Python.absY  ó&   € à�uŠu•W˜QœV Q¤U¨A¬EÑ2Ô2Ñ3Ô3Ð3rŽ   c                óh   — |                       t          | j        | j        | j        ¦  «        ¦  «        S r`  )rP  r8   r›   r‹   rŠ   r˜   s    rŒ   rb  zDMP_Python.neg]  rs  rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S rz  )rP  r9   r›   r‹   rŠ   r¾  s     rŒ   r{  zDMP_Python._adda  ó*   € à�uŠu•W˜QœV Q¤V¨Q¬U°A´EÑ:Ô:Ñ;Ô;Ð;rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S r�  )rP  r:   r›   r‹   rŠ   r¾  s     rŒ   r‚  zDMP_Python._sube  rv  rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S r…  )rP  r;   r›   r‹   rŠ   r¾  s     rŒ   r†  zDMP_Python._muli  rv  rŽ   c                óh   — |                       t          | j        | j        | j        ¦  «        ¦  «        S r‰  )rP  r<   r›   r‹   rŠ   r˜   s    rŒ   rŒ  zDMP_Python.sqrm  rs  rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S ©rŽ  )rP  r=   r›   r‹   rŠ   r3  s     rŒ   r‘  zDMP_Python._powq  s(   € à�uŠu•W˜QœV Q¨¬¨q¬uÑ5Ô5Ñ6Ô6Ð6rŽ   c                ó¨   — t          | j        |j        | j        | j        ¦  «        \  }}|                      |¦  «        |                      |¦  «        fS r”  )r>   r›   r‹   rŠ   rP  ©r™   ræ   r€  r§   s       rŒ   r–  zDMP_Python._pdivu  s@   € å˜œ ¤¨¬¨q¬uÑ5Ô5‰ˆˆ1Ø�uŠu�Q‰xŒx˜Ÿš˜q™œÐ!Ð!rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S rš  )rP  r?   r›   r‹   rŠ   r¾  s     rŒ   rœ  zDMP_Python._premz  ó*   € à�uŠu•X˜aœf a¤f¨a¬e°Q´UÑ;Ô;Ñ<Ô<Ð<rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S rŸ  )rP  r@   r›   r‹   rŠ   r¾  s     rŒ   r¡  zDMP_Python._pquo~  r  rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S r¤  )rP  rA   r›   r‹   rŠ   r¾  s     rŒ   r¦  zDMP_Python._pexquo‚  s*   € à�uŠu•Z ¤¨¬°´°q´uÑ=Ô=Ñ>Ô>Ð>rŽ   c                ó¨   — t          | j        |j        | j        | j        ¦  «        \  }}|                      |¦  «        |                      |¦  «        fS r©  )rB   r›   r‹   rŠ   rP  r}  s       rŒ   rª  zDMP_Python._div†  s@   € å�q”v˜qœv q¤u¨a¬eÑ4Ô4‰ˆˆ1Ø�uŠu�Q‰xŒx˜Ÿš˜q™œÐ!Ð!rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S r­  )rP  rC   r›   r‹   rŠ   r¾  s     rŒ   r®  zDMP_Python._rem‹  rv  rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S r±  )rP  rD   r›   r‹   rŠ   r¾  s     rŒ   r²  zDMP_Python._quo�  rv  rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S rµ  )rP  rE   r›   r‹   rŠ   r¾  s     rŒ   r¶  zDMP_Python._exquo“  s*   € à�uŠu•Y˜qœv q¤v¨q¬u°a´eÑ<Ô<Ñ=Ô=Ð=rŽ   r   c                ó8   — t          | j        || j        ¦  «        S )rÌ  )r   r›   r‹   rÎ  s     rŒ   rÍ  zDMP_Python._degree—  s   € å˜QœV Q¨¬Ñ.Ô.Ð.rŽ   c                ó6   — t          | j        | j        ¦  «        S rÑ  )r   r›   r‹   r˜   s    rŒ   rÒ  zDMP_Python.degree_list›  s   € å˜qœv q¤uÑ-Ô-Ð-rŽ   c                óX   — t          d„ |                      ¦   «         D ¦   «         ¦  «        S )rÕ  c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r    ©rÙ  )r¢   r  s     rŒ   r¤   z*DMP_Python.total_degree.<locals>.<genexpr>¡  s(   è è € Ð.Ð.˜a•3�q‘6”6Ð.Ð.Ð.Ð.Ð.Ð.rŽ   )Úmaxrµ   r˜   s    rŒ   rÖ  zDMP_Python.total_degreeŸ  s'   € åÐ.Ð. 1§8¢8¡:¤:Ð.Ñ.Ô.Ñ.Ô.Ð.rŽ   c                óB   — t          | j        | j        | j        ¦  «        S ré  )r   r›   r‹   rŠ   r˜   s    rŒ   rê  zDMP_Python.LC£  ó   € å˜QœV Q¤U¨A¬EÑ2Ô2Ð2rŽ   c                óB   — t          | j        | j        | j        ¦  «        S rì  )r   r›   r‹   rŠ   r˜   s    rŒ   rî  zDMP_Python.TC§  r�  rŽ   c                óD   — t          | j        || j        | j        ¦  «        S ©rð  )r   r›   r‹   rŠ   ró  s     rŒ   rò  zDMP_Python._nth«  s   € å˜aœf a¨¬°´Ñ6Ô6Ð6rŽ   c                óB   — t          | j        | j        | j        ¦  «        S rø  )rH   r›   r‹   rŠ   r˜   s    rŒ   rù  zDMP_Python.max_norm¯  s   € å˜AœF A¤E¨1¬5Ñ1Ô1Ð1rŽ   c                óB   — t          | j        | j        | j        ¦  «        S rû  )rI   r›   r‹   rŠ   r˜   s    rŒ   rü  zDMP_Python.l1_norm³  s   € å˜1œ6 1¤5¨!¬%Ñ0Ô0Ð0rŽ   c                óB   — t          | j        | j        | j        ¦  «        S rþ  )rJ   r›   r‹   rŠ   r˜   s    rŒ   rÿ  zDMP_Python.l2_norm_squared·  s   € å" 1¤6¨1¬5°!´%Ñ8Ô8Ð8rŽ   c                óv   — t          | j        | j        | j        ¦  «        \  }}||                      |¦  «        fS r  )rK   r›   r‹   rŠ   rP  )r™   rÝ   rP  s      rŒ   r  zDMP_Python.clear_denoms»  s1   € å# A¤F¨A¬E°1´5Ñ9Ô9‰ˆˆqØ�a—e’e˜A‘h”hˆÐrŽ   r¥   c           	     ól   — |                       t          | j        ||| j        | j        ¦  «        ¦  «        S )r  )rP  rL   r›   r‹   rŠ   r  s      rŒ   r  zDMP_Python._integrateÀ  s+   € à�uŠuÕ% a¤f¨a°°A´E¸1¼5ÑAÔAÑBÔBÐBrŽ   c           	     ól   — |                       t          | j        ||| j        | j        ¦  «        ¦  «        S )r
  )rP  rM   r›   r‹   rŠ   r  s      rŒ   r  zDMP_Python._diffÄ  s*   € à�uŠu•[ ¤¨¨A¨q¬u°a´eÑ<Ô<Ñ=Ô=Ð=rŽ   c                óv   — t          | j        | j                             |¦  «        d| j        | j        ¦  «        S r�   )rN   r›   rŠ   r¾   r‹   r  s     rŒ   r  zDMP_Python._evalÈ  s,   € Ý˜1œ6 1¤5§=¢=°Ñ#3Ô#3°Q¸¼¸q¼uÑEÔEÐErŽ   c                ó¾   — t          | 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Ë  sI   € Ý˜!œ& !¤%§-¢-°Ñ"2Ô"2°A°q´u¸a¼eÑDÔDˆØ�uŠu�S˜!œ% ¤¨¡Ñ+Ô+Ð+rŽ   c                óœ   — t          | j        |j        | j        ¦  «        \  }}|                      |¦  «        |                      |¦  «        fS )r  )rZ   r›   rŠ   rP  ©r™   ræ   rÛ  Úhs       rŒ   r  zDMP_Python._half_gcdexÏ  s<   € å˜aœf a¤f¨a¬eÑ4Ô4‰ˆˆ1Ø�uŠu�Q‰xŒx˜Ÿš˜q™œÐ!Ð!rŽ   c                óÆ   — t          | j        |j        | j        ¦  «        \  }}}|                      |¦  «        |                      |¦  «        |                      |¦  «        fS )r  )r[   r›   rŠ   rP  )r™   ræ   rÛ  rË  rœ  s        rŒ   r!  zDMP_Python._gcdexÔ  sJ   € å˜AœF A¤F¨A¬EÑ2Ô2‰ˆˆ1ˆaØ�uŠu�Q‰xŒx˜Ÿš˜q™œ 1§5¢5¨¡8¤8Ð+Ð+rŽ   c                ól   — t          | j        |j        | j        ¦  «        }|                      |¦  «        S )r%  )r\   r›   rŠ   rP  )r™   ræ   rÛ  s      rŒ   r&  zDMP_Python._invertÙ  s(   € å�q”v˜qœv q¤uÑ-Ô-ˆØ�uŠu�Q‰xŒxˆrŽ   c                ó^   — |                       t          | j        || j        ¦  «        ¦  «        S ©r*  )rP  rO   r›   rŠ   r3  s     rŒ   r+  zDMP_Python._revertÞ  s$   € à�uŠu•Z ¤¨¨1¬5Ñ1Ô1Ñ2Ô2Ð2rŽ   c                ó’   — t          | j        |j        | j        | j        ¦  «        }t	          t          | j        |¦  «        ¦  «        S r/  )r]   r›   r‹   rŠ   r„   ÚmaprP  ©r™   ræ   ÚRs      rŒ   r1  zDMP_Python._subresultantsâ  s5   € å˜aœf a¤f¨a¬e°Q´UÑ;Ô;ˆÝ•C˜œ˜q‘M”MÑ"Ô"Ð"rŽ   c                óö   — t          | j        |j        | j        | j        d¬¦  «        \  }}| j        r$|                      || j        | j        dz
  ¦  «        }|t          t          | j        |¦  «        ¦  «        fS )r5  T)r8  r¥   )r^   r›   r‹   rŠ   r†   r„   r¢  rP  ©r™   ræ   Úresr¤  s       rŒ   r6  z DMP_Python._resultant_includePRSç  sj   € å˜qœv q¤v¨q¬u°a´eÈÐMÑMÔM‰ˆˆQØŒ5ð 	/Ø—%’%˜˜QœU A¤E¨A¡IÑ.Ô.ˆCØ•D�˜QœU A™œÑ'Ô'Ð'Ð'rŽ   c                ó¨   — t          | j        |j        | j        | j        ¦  «        }| j        r$|                      || j        | j        dz
  ¦  «        }|S r™  )r^   r›   r‹   rŠ   r†   )r™   ræ   r§  s      rŒ   r7  zDMP_Python._resultantî  sI   € Ý˜AœF A¤F¨A¬E°1´5Ñ9Ô9ˆØŒ5ð 	/Ø—%’%˜˜QœU A¤E¨A¡IÑ.Ô.ˆCØˆ
rŽ   c                óœ   — t          | j        | j        | j        ¦  «        }| j        r$|                      || j        | j        dz
  ¦  «        }|S )r=  r¥   )r_   r›   r‹   rŠ   r†   )r™   r§  s     rŒ   r>  zDMP_Python.discriminantô  sE   € å˜qœv q¤u¨a¬eÑ4Ô4ˆØŒ5ð 	/Ø—%’%˜˜QœU A¤E¨A¡IÑ.Ô.ˆCØˆ
rŽ   c                óÒ   — t          | j        |j        | j        | j        ¦  «        \  }}}|                      |¦  «        |                      |¦  «        |                      |¦  «        fS r@  )r`   r›   r‹   rŠ   rP  )r™   ræ   rœ  ÚcffÚcfgs        rŒ   rA  zDMP_Python._cofactorsû  sN   € å# A¤F¨A¬F°A´E¸1¼5ÑAÔA‰ˆˆ3�Ø�uŠu�Q‰xŒx˜Ÿš˜s™œ Q§U¢U¨3¡Z¤ZÐ/Ð/rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S rE  )rP  ra   r›   r‹   rŠ   r¾  s     rŒ   rF  zDMP_Python._gcd   rv  rŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S rJ  )rP  rb   r›   r‹   rŠ   r¾  s     rŒ   rL  zDMP_Python._lcm  rv  rŽ   c                ó´   — t          | j        |j        | j        | j        d¬¦  «        \  }}}}|||                      |¦  «        |                      |¦  «        fS )rQ  F©rT  ©rc   r›   r‹   rŠ   rP  ©r™   ræ   ÚcFÚcGrP  r}  s         rŒ   rS  zDMP_Python._cancel  sM   € å! !¤&¨!¬&°!´%¸¼ÈÐNÑNÔN‰ˆˆB��1Ø�2�q—u’u˜Q‘x”x §¢ q¡¤Ð)Ð)rŽ   c                ó¬   — t          | j        |j        | j        | j        d¬¦  «        \  }}|                      |¦  «        |                      |¦  «        fS )rQ  Tr°  r±  r|  s       rŒ   rR  zDMP_Python._cancel_include  sE   € å˜!œ& !¤&¨!¬%°´ÀÐEÑEÔE‰ˆˆ1Ø�uŠu�Q‰xŒx˜Ÿš˜q™œÐ!Ð!rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S rY  )rP  rP   r›   r‹   rŠ   r[  s     rŒ   rZ  zDMP_Python._trunc  rq  rŽ   c                óh   — |                       t          | j        | j        | j        ¦  «        ¦  «        S r`  )rP  rS   r›   r‹   rŠ   r˜   s    rŒ   ra  zDMP_Python.monic  s'   € à�uŠuÕ% a¤f¨a¬e°Q´UÑ;Ô;Ñ<Ô<Ð<rŽ   c                óB   — t          | j        | j        | j        ¦  «        S rc  )rQ   r›   r‹   rŠ   r˜   s    rŒ   rd  zDMP_Python.content  s   € å! !¤&¨!¬%°´Ñ7Ô7Ð7rŽ   c                óv   — t          | j        | j        | j        ¦  «        \  }}||                      |¦  «        fS rf  )rR   r›   r‹   rŠ   rP  )r™   ÚcontrP  s      rŒ   rg  zDMP_Python.primitive  s1   € å& q¤v¨q¬u°a´eÑ<Ô<‰ˆˆaØ�Q—U’U˜1‘X”Xˆ~ÐrŽ   c                ót   — |                       t          | j        |j        | j        | j        ¦  «        ¦  «        S ri  )rP  rT   r›   r‹   rŠ   r¾  s     rŒ   rj  zDMP_Python._compose#  s*   € à�uŠu•[ ¤¨¬°´¸¼Ñ>Ô>Ñ?Ô?Ð?rŽ   c           	     óv   — t          t          | j        t          | j        | j        ¦  «        ¦  «        ¦  «        S )rn  )r„   r¢  rP  rU   r›   rŠ   r˜   s    rŒ   ro  zDMP_Python._decompose'  s*   € å•C˜œ�}¨Q¬V°Q´UÑ;Ô;Ñ<Ô<Ñ=Ô=Ð=rŽ   c                ó^   — |                       t          | j        || j        ¦  «        ¦  «        S ©rs  )rP  rV   r›   rŠ   r  s     rŒ   rt  zDMP_Python._shift+  s$   € à�uŠu•Y˜qœv q¨!¬%Ñ0Ô0Ñ1Ô1Ð1rŽ   c                ój   — |                       t          | j        || j        | j        ¦  «        ¦  «        S )rw  )rP  rW   r›   r‹   rŠ   r  s     rŒ   rz  zDMP_Python._shift_list/  s(   € à�uŠu•Y˜qœv q¨!¬%°´Ñ7Ô7Ñ8Ô8Ð8rŽ   c                ót   — |                       t          | j        |j        |j        | j        ¦  «        ¦  «        S ©r~  )rP  rX   r›   rŠ   r„  s      rŒ   r  zDMP_Python._transform3  s*   € à�uŠu•] 1¤6¨1¬6°1´6¸1¼5ÑAÔAÑBÔBÐBrŽ   c           	     óv   — t          t          | j        t          | j        | j        ¦  «        ¦  «        ¦  «        S )r†  )r„   r¢  rP  rv   r›   rŠ   r˜   s    rŒ   r‡  zDMP_Python._sturm7  s*   € å•C˜œ�y¨¬°´Ñ7Ô7Ñ8Ô8Ñ9Ô9Ð9rŽ   c                ó6   — t          | j        | j        ¦  «        S ©r‹  )rw   r›   rŠ   r˜   s    rŒ   rŒ  zDMP_Python._cauchy_upper_bound;  ó   € å% a¤f¨a¬eÑ4Ô4Ð4rŽ   c                ó6   — t          | j        | j        ¦  «        S ©r‘  )rx   r›   rŠ   r˜   s    rŒ   r’  zDMP_Python._cauchy_lower_bound?  rÅ  rŽ   c                ó6   — t          | j        | j        ¦  «        S ©r–  )ry   r›   rŠ   r˜   s    rŒ   r—  z&DMP_Python._mignotte_sep_bound_squaredC  s   € å-¨a¬f°a´eÑ<Ô<Ð<rŽ   c                óP   ‡ — ˆ fd„t          ‰ j        ‰ j        ¦  «        D ¦   «         S )r›  c                óD   •— g | ]\  }}‰                      |¦  «        |f‘ŒS r~   ©rP  ©r¢   ræ   rð   r™   s      €rŒ   r  z(DMP_Python._gff_list.<locals>.<listcomp>I  s+   ø€ ÐHÐHÐH¡4 1 a�!—%’%˜‘(”(˜A�ÐHÐHÐHrŽ   )rd   r›   rŠ   r˜   s   `rŒ   rœ  zDMP_Python._gff_listG  s+   ø€ àHÐHÐHÐH­<¸¼ÀÄÑ+FÔ+FÐHÑHÔHÐHrŽ   c                óŽ   — t          | j        | j        | j        ¦  «        }|                      || j        j        | j        ¦  «        S r   )re   r›   r‹   rŠ   r†   r_  s     rŒ   r¡  zDMP_Python.normK  s5   € å�Q”V˜QœU A¤EÑ*Ô*ˆØ�uŠu�Q˜œœ	 1¤5Ñ)Ô)Ð)rŽ   c                óÂ   — t          | j        | j        | j        ¦  «        \  }}}||                      |¦  «        |                      || j        j        | j        ¦  «        fS r£  )rg   r›   r‹   rŠ   rP  r†   )r™   rÛ  ræ   r§   s       rŒ   r¤  zDMP_Python.sqf_normP  sL   € å˜qœv q¤u¨a¬eÑ4Ô4‰ˆˆ1ˆaØ�!—%’%˜‘(”(˜AŸEšE ! Q¤U¤Y°´Ñ6Ô6Ð6Ð6rŽ   c                óh   — |                       t          | j        | j        | j        ¦  «        ¦  «        S r¦  )rP  rh   r›   r‹   rŠ   r˜   s    rŒ   r§  zDMP_Python.sqf_partU  s&   € à�uŠu•\ !¤&¨!¬%°´Ñ7Ô7Ñ8Ô8Ð8rŽ   c                ól   ‡ — t          ‰ j        ‰ j        ‰ j        |¦  «        \  }}|ˆ fd„|D ¦   «         fS )rª  c                óD   •— g | ]\  }}‰                      |¦  «        |f‘ŒS r~   rÌ  rÍ  s      €rŒ   r  z'DMP_Python.sqf_list.<locals>.<listcomp>\  ó+   ø€ Ð;Ð;Ð;©$¨!¨Q˜Ÿš˜q™œ 1˜Ð;Ð;Ð;rŽ   )ri   r›   r‹   rŠ   ©r™   r¦   rÝ   Úfactorss   `   rŒ   r¬  zDMP_Python.sqf_listY  s@   ø€ å% a¤f¨a¬e°Q´U¸CÑ@Ô@‰ˆˆwØÐ;Ð;Ð;Ð;°'Ð;Ñ;Ô;Ð;Ð;rŽ   c                ób   ‡ — t          ‰ j        ‰ j        ‰ j        |¦  «        }ˆ fd„|D ¦   «         S )rª  c                óD   •— g | ]\  }}‰                      |¦  «        |f‘ŒS r~   rÌ  rÍ  s      €rŒ   r  z/DMP_Python.sqf_list_include.<locals>.<listcomp>a  ó+   ø€ Ð4Ð4Ð4¡4 1 a�!—%’%˜‘(”(˜A�Ð4Ð4Ð4rŽ   )rj   r›   r‹   rŠ   ©r™   r¦   rÕ  s   `  rŒ   r®  zDMP_Python.sqf_list_include^  s6   ø€ å& q¤v¨q¬u°a´e¸SÑAÔAˆØ4Ð4Ð4Ð4¨7Ð4Ñ4Ô4Ð4rŽ   c                ój   ‡ — t          ‰ j        ‰ j        ‰ j        ¦  «        \  }}|ˆ fd„|D ¦   «         fS )r±  c                óD   •— g | ]\  }}‰                      |¦  «        |f‘ŒS r~   rÌ  rÍ  s      €rŒ   r  z*DMP_Python.factor_list.<locals>.<listcomp>f  rÓ  rŽ   )rm   r›   r‹   rŠ   )r™   rÝ   rÕ  s   `  rŒ   r²  zDMP_Python.factor_listc  s>   ø€ å(¨¬°´¸¼Ñ>Ô>‰ˆˆwØÐ;Ð;Ð;Ð;°'Ð;Ñ;Ô;Ð;Ð;rŽ   c                ó`   ‡ — t          ‰ j        ‰ j        ‰ j        ¦  «        }ˆ fd„|D ¦   «         S )r±  c                óD   •— g | ]\  }}‰                      |¦  «        |f‘ŒS r~   rÌ  rÍ  s      €rŒ   r  z2DMP_Python.factor_list_include.<locals>.<listcomp>k  rØ  rŽ   )rn   r›   r‹   rŠ   ©r™   rÕ  s   ` rŒ   r´  zDMP_Python.factor_list_includeh  s4   ø€ å)¨!¬&°!´%¸¼Ñ?Ô?ˆØ4Ð4Ð4Ð4¨7Ð4Ñ4Ô4Ð4rŽ   c                ó@   — t          | j        | j        ||||¬¦  «        S ©Nr¶  )rp   r›   rŠ   rÂ  s        rŒ   r¾  zDMP_Python._isolate_real_rootsm  s"   € Ý% a¤f¨a¬e¸À#È3ÐUYÐZÑZÔZÐZrŽ   c                ó@   — 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                ó@   — t          | j        | j        ||||¬¦  «        S rà  )rr   r›   rŠ   rÂ  s        rŒ   r¼  zDMP_Python._isolate_all_rootss  s"   € Ý$ Q¤V¨Q¬U¸ÀÈ#ÐTXÐYÑYÔYÐYrŽ   c                ó@   — 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           	     óB   — t          | j        ||| j        |||¬¦  «        S )NrÇ  )rs   r›   rŠ   rÊ  s         rŒ   rÉ  zDMP_Python._refine_real_rooty  s$   € Ý# A¤F¨A¨q°!´%¸SÈÐTXÐYÑYÔYÐYrŽ   c                ó<   — t          | j        | j        ||¬¦  «        S ©rÏ  ©r¸  r¹  )rt   r›   rŠ   rÐ  s      rŒ   rÑ  zDMP_Python.count_real_roots|  s   € å# A¤F¨A¬E°sÀÐDÑDÔDÐDrŽ   c                ó<   — t          | j        | j        ||¬¦  «        S ©rÓ  rç  )ru   r›   rŠ   rÐ  s      rŒ   rÔ  zDMP_Python.count_complex_roots€  s   € å& q¤v¨q¬u¸#À3ÐGÑGÔGÐGrŽ   c                ó6   — t          | j        | j        ¦  «        S rÖ  )r"   r›   r‹   r˜   s    rŒ   r&  zDMP_Python.is_zero„  s   € õ ˜!œ& !¤%Ñ(Ô(Ð(rŽ   c                óB   — t          | j        | j        | j        ¦  «        S rÙ  )r#   r›   r‹   rŠ   r˜   s    rŒ   rÚ  zDMP_Python.is_one‰  ó   € õ ˜œ ¤¨¬Ñ.Ô.Ð.rŽ   c                ó8   — t          | j        d| j        ¦  «        S )rÝ  N)r$   r›   r‹   r˜   s    rŒ   rÞ  zDMP_Python.is_groundŽ  s   € õ ˜AœF D¨!¬%Ñ0Ô0Ð0rŽ   c                óB   — t          | j        | j        | j        ¦  «        S rà  )rf   r›   r‹   rŠ   r˜   s    rŒ   rá  zDMP_Python.is_sqf“  rì  rŽ   c                ór   — | j                              t          | j        | j        | j         ¦  «        ¦  «        S rã  )rŠ   rÚ  r   r›   r‹   r˜   s    rŒ   rä  zDMP_Python.is_monic˜  s*   € ð Œu�|Š|�M¨!¬&°!´%¸¼Ñ?Ô?Ñ@Ô@Ð@rŽ   c                ór   — | j                              t          | j        | j        | j         ¦  «        ¦  «        S ræ  )rŠ   rÚ  rQ   r›   r‹   r˜   s    rŒ   rç  zDMP_Python.is_primitive�  s+   € ð Œu�|Š|Õ.¨q¬v°q´u¸a¼eÑDÔDÑEÔEÐErŽ   c                ó”   — t          d„ t          | j        | j        | j        ¦  «                             ¦   «         D ¦   «         ¦  «        S )ré  c              3  ó<   K  — | ]}t          |¦  «        d k    V — ŒdS )r¥   NrŠ  ©r¢   rå  s     rŒ   r¤   z'DMP_Python.is_linear.<locals>.<genexpr>¥  ó,   è è € ÐYÐY u•3�u‘:”: ’?ÐYÐYÐYÐYÐYÐYrŽ   ©r¦   r'   r›   r‹   rŠ   Úkeysr˜   s    rŒ   rê  zDMP_Python.is_linear¢  ó?   € õ ÐYÐYµ¸A¼FÀAÄEÈ1Ì5Ñ0QÔ0Q×0VÒ0VÑ0XÔ0XÐYÑYÔYÑYÔYÐYrŽ   c                ó”   — t          d„ t          | j        | j        | j        ¦  «                             ¦   «         D ¦   «         ¦  «        S )rì  c              3  ó<   K  — | ]}t          |¦  «        d k    V — ŒdS )é   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                óL   — t          |                      ¦   «         ¦  «        dk    S )rð  r¥   )rØ  rë   r˜   s    rŒ   rñ  zDMP_Python.is_monomial¬  s   € õ �1—9’9‘;”;ÑÔ 1Ò$Ð$rŽ   c                ó.   — |                       ¦   «         duS )rô  N)rç  r˜   s    rŒ   rõ  zDMP_Python.is_homogeneous±  s   € ð ×"Ò"Ñ$Ô$¨DÐ0Ð0rŽ   c                óB   — t          | j        | j        | j        ¦  «        S r÷  )rl   r›   r‹   rŠ   r˜   s    rŒ   rø  zDMP_Python.is_irreducible¶  s   € õ ! ¤¨¬°´Ñ6Ô6Ð6rŽ   c                óH   — | j         st          | j        | j        ¦  «        S dS )rû  F)r‹   rk   r›   rŠ   r˜   s    rŒ   rü  zDMP_Python.is_cyclotomic»  s'   € ð Œuð 	Ý# A¤F¨A¬EÑ2Ô2Ð2à�5rŽ   r    r=  r%  r>  r@  )rrÐ   rA  rB  rC  rD  rE  r’   r'  rP  rÞ   rÉ   rä   r»   r—   rÔ   r¹   r  r  r'  r:  r@  rF  rK  rM  rT  r[  re  rk  ro  rs  rw  r^  rb  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  r6  r7  r>  rA  rF  rL  rS  rR  rZ  ra  rd  rg  rj  ro  rt  rz  r  r‡  rŒ  r’  r—  rœ  r¡  r¤  r§  r¬  r®  r²  r´  r¾  r½  r¼  r»  rÉ  rÑ  rÔ  rF  r&  rÚ  rÞ  rá  rä  rç  rê  rí  rñ  rõ  rø  rü  r~   rŽ   rŒ   r“   r“   Ñ  ss  € € € € € Ø3Ð3à&€Iàðð ñ „[ððFð Fð Fð
)ð )ð )ð>ð >ð >ð#ð #ð #ð'ð 'ð 'ð(4ð 4ð 4ðð ð ð+ð +ð +ðJð Jð Jð)ð )ð )ð
)ð )ð )ð
Að Að Að Að+ð +ð +ð
ð ð ð
)ð )ð )ð )ð8ð 8ð 8ð 8ð&ð &ð &ð;ð ;ð ;ðð ð ð
>ð >ð >ð>ð >ð >ð>ð >ð >ð>ð >ð >ð@ð @ð @ð4ð 4ð 4ð4ð 4ð 4ð<ð <ð <ð<ð <ð <ð<ð <ð <ð4ð 4ð 4ð7ð 7ð 7ð"ð "ð "ð
=ð =ð =ð=ð =ð =ð?ð ?ð ?ð"ð "ð "ð
<ð <ð <ð<ð <ð <ð>ð >ð >ð/ð /ð /ð /ð.ð .ð .ð/ð /ð /ð3ð 3ð 3ð3ð 3ð 3ð7ð 7ð 7ð2ð 2ð 2ð1ð 1ð 1ð9ð 9ð 9ðð ð ð
Cð Cð Cð Cð>ð >ð >ð >ðFð Fð Fð,ð ,ð ,ð"ð "ð "ð
,ð ,ð ,ð
ð ð ð
3ð 3ð 3ð#ð #ð #ð
(ð (ð (ðð ð ðð ð ð0ð 0ð 0ð
<ð <ð <ð<ð <ð <ð*ð *ð *ð
"ð "ð "ð
@ð @ð @ð=ð =ð =ð8ð 8ð 8ðð ð ð
@ð @ð @ð>ð >ð >ð2ð 2ð 2ð9ð 9ð 9ðCð Cð Cð:ð :ð :ð5ð 5ð 5ð5ð 5ð 5ð=ð =ð =ðIð Ið Ið*ð *ð *ð
7ð 7ð 7ð
9ð 9ð 9ð<ð <ð <ð <ð
5ð 5ð 5ð 5ð
<ð <ð <ð
5ð 5ð 5ð
[ð [ð [ð_ð _ð _ðZð Zð Zð^ð ^ð ^ðZð Zð ZðEð Eð Eð EðHð Hð Hð Hð ð)ð )ñ „Xð)ð ð/ð /ñ „Xð/ð ð1ð 1ñ „Xð1ð ð/ð /ñ „Xð/ð ðAð Añ „XðAð ðFð Fñ „XðFð ðZð Zñ „XðZð ðZð Zñ „XðZð ð%ð %ñ „Xð%ð ð1ð 1ñ „Xð1ð ð7ð 7ñ „Xð7ð ðð ñ „Xðð ð 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dud„Zd„ Zd„ Zdvd„Zdvd„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/„ Z0d0„ Z1dwd1„Z2d2„ Z3d3„ Z4d4„ Z5d5„ Z6d6„ Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;dxd<„Z<dxd=„Z=d>„ Z>d?„ Z?d@„ Z@dA„ ZAdB„ ZBdC„ ZCdD„ ZDdE„ ZEdF„ ZFdG„ ZGdH„ ZHdI„ ZIdJ„ ZJdK„ ZKdL„ ZLdM„ ZMdN„ ZNdO„ ZOdP„ ZPdQ„ ZQdR„ ZRdS„ ZSdT„ ZTdU„ ZUdV„ ZVdW„ ZWdX„ ZXdY„ ZYdZ„ ZZd[„ Z[d\„ Z\dvd]„Z]dvd^„Z^d_„ Z_d`„ Z`da„ Zadb„ Zbdc„ Zcdd„ Zdde„ Zedf„ Zfdydg„Zgdydh„Zheidi„ ¦   «         Zjeidj„ ¦   «         Zkeidk„ ¦   «         Zleidl„ ¦   «         Zmeidm„ ¦   «         Zneidn„ ¦   «         Zoeido„ ¦   «         Zpeidp„ ¦   «         Zqeidq„ ¦   «         Zreidr„ ¦   «         Zseids„ ¦   «         Zteidt„ ¦   «         ZudS )zr‘   r�   r   )r›   rŠ   Ú_clsc                óR   — | j         |                      ¦   «         | j        | j        ffS r    )rÏ   r—   rŠ   r‹   r×   s    rŒ   Ú
__reduce__zDUP_Flint.__reduce__Ë  s"   € ØŒ~ §¢¡¤°´¸$¼(ÐCÐCÐCrŽ   c                ón   — |                       |d d d…         ||¦  «        }|                      ||¦  «        S ©Néÿÿÿÿ)Ú_flint_polyÚfrom_repr‡   s       rŒ   r’   zDUP_Flint._newÎ  s5   € à�oŠo˜c $ $ B $œi¨¨cÑ2Ô2ˆØ�|Š|˜C Ñ%Ô%Ð%rŽ   c                óF   — | j                              ¦   «         ddd…         S )rþ   Nr  )r›   r¶   r˜   s    rŒ   r—   zDUP_Flint.to_listÓ  s   € àŒv�}Š}‰Œ˜t˜t ˜tÔ$Ð$rŽ   c                óh   — |t           v sJ ‚|dk    sJ ‚|                      |¦  «        } ||¦  «        S r�   )r|   Ú_get_flint_poly_cls)rˆ   r‰   rŠ   r‹   Ú	flint_clss        rŒ   r  zDUP_Flint._flint_poly×  sA   € à•nÐ$Ð$Ð$Ð$Ø�aŠxˆxˆxˆxØ×+Ò+¨CÑ0Ô0ˆ	Øˆy˜‰~Œ~ÐrŽ   c                ór   — |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Þ  s<   € àŒ9ð 	NÝ”?Ð"ØŒYð 	NÝ”?Ð"åÐFÈÑLÑMÔMÐMrŽ   c                óH  — |j         r)t          |t          j        ¦  «        sJ ‚t          j        }nB|j        r)t          |t          j        ¦  «        sJ ‚t          j        }nt          d|z  ¦  «        ‚t                               | ¦  «        }||_	        ||_
        ||_        |S )z,Create a DMP from the given representation. r  )r  rƒ   r}   r  r  r  r¼   rI  r�   rŠ   r›   r   )rˆ   r‰   rŠ   r   rJ  s        rŒ   r  zDUP_Flint.from_repç  s›   € ð Œ9ð 	NÝ˜c¥5¤?Ñ3Ô3Ð3Ð3Ð3Ý”?ˆDˆDØŒYð 	NÝ˜c¥5¤?Ñ3Ô3Ð3Ð3Ð3Ý”?ˆDˆDåÐFÈÑLÑMÔMÐMå�nŠn˜SÑ!Ô!ˆØˆŒØˆŒØˆŒàˆ
rŽ   c                ó†   — t          | ¦  «        t          |¦  «        k    rdS | j        |j        k    o| j        |j        k    S rL  )r…   rŠ   r›   r¾  s     rŒ   r'  zDUP_Flint._strict_eqû  s:   € Ý�‰7Œ7•d˜1‘g”gÒÐØ�5ØŒu˜œŠ~Ð2 !¤&¨A¬FÒ"2Ð2rŽ   c                ó`   — |                       |                      |g¦  «        | j        ¦  «        S rÛ   ©r  r   rŠ   rÜ   s     rŒ   rÞ   zDUP_Flint.ground_new   s$   € à�zŠz˜!Ÿ&š& % ™/œ/¨1¬5Ñ1Ô1Ð1rŽ   c                ó@   — |                       | j        j        ¦  «        S r    )rÞ   rŠ   rÇ   r˜   s    rŒ   rÉ   zDUP_Flint._one  s   € Ø�|Š|˜AœEœIÑ&Ô&Ð&rŽ   c                ó   — t           ‚)z*Unify representations of two polynomials. )r¼   r¾  s     rŒ   rä   zDUP_Flint.unify  s   € åÐrŽ   c                ór   — t                                |                      ¦   «         | 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°1´5Ñ9Ô9Ð9rŽ   c                óD   — t          |                      ¦   «         ¦  «        S rX  )rÚ  r—   r˜   s    rŒ   rÔ   zDUP_Flint.to_tuple  s   € å�Q—Y’Y‘[”[Ñ!Ô!Ð!rŽ   c                ón  — |t           k    r=| j        t          k    r-|                      t	          j        | j        ¦  «        |¦  «        S |t          k    rI| j        t           k    r9|                      ¦   «                              |¦  «         	                    ¦   «         S t          d| j        › d|› �¦  «        ‚)rZ  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ˆ9˜œ¥"š˜Ø—:’:�eœo¨a¬fÑ5Ô5°sÑ;Ô;Ð;Ø•BŠYˆY˜1œ5¥Bš;˜;à—?’?Ñ$Ô$×-Ò-¨cÑ2Ô2×?Ò?ÑAÔAÐAåÐL¸A¼EÐLÐLÀsÐLÐLÑMÔMÐMrŽ   c                ó    — | j                              ¦   «         ||…         }|                      |                      |¦  «        | j        ¦  «        S r  )r›   r¶   r  r   rŠ   )r™   r  r  r¶   s       rŒ   r  zDUP_Flint._slice  s:   € à”—’‘”  1 Ô%ˆØ�zŠz˜!Ÿ&š& ™.œ.¨!¬%Ñ0Ô0Ð0rŽ   c                ó   — t           ‚r  rÀ   r  s       rŒ   r  zDUP_Flint._slice_lev"  r×  rŽ   Nc                óâ   — |�|j         dk    r;d„ t          | j                             ¦   «         ¦  «        D ¦   «         }|ddd…         S |                      ¦   «                              |¬¦  «        S )r$  NÚlexc                ó"   — g | ]\  }}|¯|f|f‘ŒS r~   r~   )r¢   r  r£   s      rŒ   r  z$DUP_Flint._terms.<locals>.<listcomp>*  s'   € ÐMÐMÐM¡D A qÈ!ÐM˜�t˜Q�iÐMÐMÐMrŽ   r  r  )Úaliasr2  r›   r¶   rº   r'  )r™   r  r  s      rŒ   r'  zDUP_Flint._terms'  sk   € àˆ=˜EœK¨5Ò0Ð0ØMÐM­I°a´f·m²m±o´oÑ,FÔ,FÐMÑMÔMˆEØ˜˜˜2˜”;Ðð —?’?Ñ$Ô$×+Ò+°%Ð+Ñ8Ô8Ð8rŽ   c                ó   — t           ‚r9  rÀ   r˜   s    rŒ   r:  zDUP_Flint._lift5  r×  rŽ   c                óŒ   — | j         rd| fS | j                             ¦   «         \  }}|f|                      || j        ¦  «        fS )r?  )r¥   )r&  r›   Ú	deflationr  rŠ   )r™   ræ   r  s      rŒ   r@  zDUP_Flint.deflate:  sK   € ð Œ9ð 	Ø˜�7ˆNØŒv×ÒÑ!Ô!‰ˆˆ1Øˆt�Q—Z’Z  1¤5Ñ)Ô)Ð)Ð)rŽ   Fc                ó   — t           ‚rB  rÀ   rD  s     rŒ   rF  zDUP_Flint.injectG  r×  rŽ   c                ó   — t           ‚rH  rÀ   rJ  s      rŒ   rK  zDUP_Flint.ejectL  r×  rŽ   c                ó   — t           ‚rf  rÀ   r˜   s    rŒ   rM  zDUP_Flint._excludeQ  r×  rŽ   c                ó   — t           ‚ri  rÀ   rU  s     rŒ   rT  zDUP_Flint._permuteV  r×  rŽ   c                ó€   — |                       ¦   «                              ¦   «         \  }}||                     ¦   «         fS rZ  )rº   r[  r»   rN  s      rŒ   r[  zDUP_Flint.terms_gcd[  s8   € ð �ŠÑ Ô ×*Ò*Ñ,Ô,‰ˆˆ1Ø�!—.’.Ñ"Ô"Ð"Ð"rŽ   c                óH   — |                       | j        |z   | j        ¦  «        S rd  ©r  r›   rŠ   rf  s     rŒ   re  zDUP_Flint._add_grounda  ó   € à�zŠz˜!œ& 1™* a¤eÑ,Ô,Ð,rŽ   c                óH   — |                       | j        |z
  | j        ¦  «        S rj  r*  rf  s     rŒ   rk  zDUP_Flint._sub_grounde  r+  rŽ   c                óH   — |                       | j        |z  | j        ¦  «        S rn  r*  rf  s     rŒ   ro  zDUP_Flint._mul_groundi  r+  rŽ   c                óH   — |                       | j        |z  | j        ¦  «        S rr  r*  rf  s     rŒ   rs  zDUP_Flint._quo_groundm  ó   € à�zŠz˜!œ& A™+ q¤uÑ-Ô-Ð-rŽ   c                óŒ   — t          | j        |¦  «        \  }}|rt          | |¦  «        ‚|                      || j        ¦  «        S rv  )Údivmodr›   r   r  rŠ   )r™   r£   r€  r§   s       rŒ   rw  zDUP_Flint._exquo_groundq  sE   € å�a”f˜aÑ Ô ‰ˆˆ1Øð 	,Ý% a¨Ñ+Ô+Ð+Ø�zŠz˜!˜QœUÑ#Ô#Ð#rŽ   c                ór   — |                       ¦   «                              ¦   «                              ¦   «         S r]  )rº   r^  r»   r˜   s    rŒ   r^  zDUP_Flint.absx  s*   € à�ŠÑ Ô ×$Ò$Ñ&Ô&×3Ò3Ñ5Ô5Ð5rŽ   c                óD   — |                       | j         | j        ¦  «        S r`  r*  r˜   s    rŒ   rb  zDUP_Flint.neg|  s   € à�zŠz˜1œ6˜' 1¤5Ñ)Ô)Ð)rŽ   c                óR   — |                       | j        |j        z   | j        ¦  «        S rz  r*  r¾  s     rŒ   r{  zDUP_Flint._add€  ó    € à�zŠz˜!œ& 1¤6™/¨1¬5Ñ1Ô1Ð1rŽ   c                óR   — |                       | j        |j        z
  | j        ¦  «        S r�  r*  r¾  s     rŒ   r‚  zDUP_Flint._sub„  r5  rŽ   c                óR   — |                       | j        |j        z  | j        ¦  «        S r…  r*  r¾  s     rŒ   r†  zDUP_Flint._mulˆ  r5  rŽ   c                óH   — |                       | j        dz  | j        ¦  «        S )rŠ  rú  r*  r˜   s    rŒ   rŒ  zDUP_Flint.sqrŒ  r/  rŽ   c                óH   — |                       | j        |z  | j        ¦  «        S r{  r*  r3  s     rŒ   r‘  zDUP_Flint._pow�  r/  rŽ   c                ó0  — |                       ¦   «         |                      ¦   «         z
  dz   }t          |                     ¦   «         |z  | j        z  |j        ¦  «        \  }}|                      || j        ¦  «        |                      || j        ¦  «        fS )r•  r¥   )r1  r1  rê  r›   r  rŠ   ©r™   ræ   rà  r€  r§   s        rŒ   r–  zDUP_Flint._pdiv”  st   € à�HŠH‰JŒJ˜Ÿš™œÑ# aÑ'ˆÝ�a—d’d‘f”f˜a‘i !¤&Ñ(¨!¬&Ñ1Ô1‰ˆˆ1Ø�zŠz˜!˜QœUÑ#Ô# Q§Z¢Z°°1´5Ñ%9Ô%9Ð9Ð9rŽ   c                óÞ   — |                       ¦   «         |                      ¦   «         z
  dz   }|                     ¦   «         |z  | j        z  |j        z  }|                      || j        ¦  «        S )r›  r¥   ©r1  rê  r›   r  rŠ   )r™   ræ   rà  r€  s       rŒ   rœ  zDUP_Flint._premš  sV   € à�HŠH‰JŒJ˜Ÿš™œÑ# aÑ'ˆØ�TŠT‰VŒV�Q‰Y˜œÑ 1¤6Ñ)ˆØ�zŠz˜!˜QœUÑ#Ô#Ð#rŽ   c                óÞ   — |                       ¦   «         |                      ¦   «         z
  dz   }|                     ¦   «         |z  | j        z  |j        z  }|                      || j        ¦  «        S )r   r¥   r=  )r™   ræ   rà  r§   s       rŒ   r¡  zDUP_Flint._pquo   sV   € à�HŠH‰JŒJ˜Ÿš™œÑ# aÑ'ˆØ�TŠT‰VŒV�Q‰Y˜œÑ A¤FÑ*ˆØ�zŠz˜!˜QœUÑ#Ô#Ð#rŽ   c                ó  — |                       ¦   «         |                      ¦   «         z
  dz   }t          |                     ¦   «         |z  | j        z  |j        ¦  «        \  }}|rt	          | |¦  «        ‚|                      || j        ¦  «        S )r¥  r¥   )r1  r1  rê  r›   r   r  rŠ   r;  s        rŒ   r¦  zDUP_Flint._pexquo¦  sw   € à�HŠH‰JŒJ˜Ÿš™œÑ# aÑ'ˆÝ�a—d’d‘f”f˜a‘i !¤&Ñ(¨!¬&Ñ1Ô1‰ˆˆ1Øð 	,Ý% a¨Ñ+Ô+Ð+Ø�zŠz˜!˜QœUÑ#Ô#Ð#rŽ   c                óˆ  — | j         j        rSt          | j        |j        ¦  «        \  }}|                      || j         ¦  «        |                      || j         ¦  «        fS |                      ¦   «                              |                     ¦   «         ¦  «        \  }}|                     ¦   «         |                     ¦   «         fS r©  )rŠ   r   r1  r›   r  rº   rª  r»   r}  s       rŒ   rª  zDUP_Flint._div®  sœ   € àŒ5Œ>ð 	6Ý˜!œ& !¤&Ñ)Ô)‰DˆAˆqØ—:’:˜a ¤Ñ'Ô'¨¯ª°A°q´uÑ)=Ô)=Ð=Ð=ð —?’?Ñ$Ô$×)Ò)¨!¯/ª/Ñ*;Ô*;Ñ<Ô<‰DˆAˆqØ—>’>Ñ#Ô# Q§^¢^Ñ%5Ô%5Ð5Ð5rŽ   c                óR   — |                       | j        |j        z  | j        ¦  «        S r­  r*  r¾  s     rŒ   r®  zDUP_Flint._rem¸  r5  rŽ   c                óR   — |                       | j        |j        z  | j        ¦  «        S r±  r*  r¾  s     rŒ   r²  zDUP_Flint._quo¼  s!   € à�zŠz˜!œ& A¤FÑ*¨A¬EÑ2Ô2Ð2rŽ   c                óZ   — |                       |¦  «        \  }}|rt          | |¦  «        ‚|S rµ  )rª  r   r}  s       rŒ   r¶  zDUP_Flint._exquoÀ  s2   € à�vŠv�a‰yŒy‰ˆˆ1Øð 	,Ý% a¨Ñ+Ô+Ð+ØˆrŽ   c                óR   — | j                              ¦   «         }|dk    rt          }|S )rÌ  r  )r›   r1  r   )r™   r  rà  s      rŒ   rÍ  zDUP_Flint._degreeÇ  s$   € àŒF�MŠM‰OŒOˆØ�Š7ˆ7ÝˆAØˆrŽ   c                ó,   — |                       ¦   «         fS rÑ  ©rÍ  r˜   s    rŒ   rÒ  zDUP_Flint.degree_listÎ  s   € à—’‘”ÐÐrŽ   c                ó*   — |                       ¦   «         S rÔ  rF  r˜   s    rŒ   rÖ  zDUP_Flint.total_degreeÒ  s   € à�yŠy‰{Œ{ÐrŽ   c                óJ   — | j         | j                              ¦   «                  S ré  ©r›   r1  r˜   s    rŒ   rê  zDUP_Flint.LCÖ  s   € àŒv�a”f—m’m‘o”oÔ&Ð&rŽ   c                ó   — | j         d         S )rí  r   ©r›   r˜   s    rŒ   rî  zDUP_Flint.TCÚ  s   € àŒv�aŒyÐrŽ   c                ó$   — |\  }| j         |         S r�  rK  )r™   rô  r  s      rŒ   rò  zDUP_Flint._nthÞ  s   € à‰ˆØŒv�aŒyÐrŽ   c                óN   — |                       ¦   «                              ¦   «         S rø  )rº   rù  r˜   s    rŒ   rù  zDUP_Flint.max_normã  s   € à�ŠÑ Ô ×)Ò)Ñ+Ô+Ð+rŽ   c                óN   — |                       ¦   «                              ¦   «         S rû  )rº   rü  r˜   s    rŒ   rü  zDUP_Flint.l1_normç  s   € à�ŠÑ Ô ×(Ò(Ñ*Ô*Ð*rŽ   c                óN   — |                       ¦   «                              ¦   «         S rþ  )rº   rÿ  r˜   s    rŒ   rÿ  zDUP_Flint.l2_norm_squaredë  s   € à�ŠÑ Ô ×0Ò0Ñ2Ô2Ð2rŽ   c                óÆ   — | j                              ¦   «         }|                      |                      | j                              ¦   «         ¦  «        | j        ¦  «        }||fS r  )r›   Údenomr  r   ÚnumerrŠ   )r™   rQ  rR  s      rŒ   r  zDUP_Flint.clear_denomsï  sF   € à”—’‘”ˆØ—
’
˜1Ÿ6š6 !¤&§,¢,¡.¤.Ñ1Ô1°1´5Ñ9Ô9ˆØ�eˆ|ÐrŽ   r¥   c                ó0  — |dk    sJ ‚| j         j        rH| j        }t          |¦  «        D ]}|                     ¦   «         }Œ|                      || j         ¦  «        S |                      ¦   «                              ||¬¦  «                             ¦   «         S )r  r   )r  r  )	rŠ   r  r›   ÚrangeÚintegralr  rº   r  r»   ©r™   r  r  r‰   r0  s        rŒ   r  zDUP_Flint._integrateõ  sŒ   € à�AŠvˆvˆvˆvØŒ5Œ;ð 	IØ”&ˆCÝ˜1‘X”Xð %ð %�Ø—l’l‘n”n��Ø—:’:˜c 1¤5Ñ)Ô)Ð)à—?’?Ñ$Ô$×/Ò/°!°qÐ/Ñ9Ô9×FÒFÑHÔHÐHrŽ   c                ó¢   — |dk    sJ ‚| j         }t          |¦  «        D ]}|                     ¦   «         }Œ|                      || j        ¦  «        S )z1Computes the ``m``-th order derivative of ``f``. r   )r›   rT  Ú
derivativer  rŠ   rV  s        rŒ   r  zDUP_Flint._diff   sR   € à�AŠvˆvˆvˆvØŒfˆÝ�q‘”ð 	#ð 	#ˆAØ—.’.Ñ"Ô"ˆCˆCØ�zŠz˜#˜qœuÑ%Ô%Ð%rŽ   c                óP   — |                       ¦   «                              |¦  «        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                óÊ   — |                       ¦   «                              |                      ¦   «         ¦  «        \  }}|                     ¦   «         |                     ¦   «         fS )z#Half extended Euclidean algorithm. )rº   r  r»   r›  s       rŒ   r  zDUP_Flint._half_gcdex  sL   € à�ŠÑ Ô ×,Ò,¨Q¯_ª_Ñ->Ô->Ñ?Ô?‰ˆˆ1Ø�~Š~ÑÔ §¢Ñ!1Ô!1Ð1Ð1rŽ   c                óè   — | 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  sZ   € à”&—+’+˜aœfÑ%Ô%‰ˆˆ1ˆaØ�zŠz˜!˜QœUÑ#Ô# Q§Z¢Z°°1´5Ñ%9Ô%9¸1¿:º:ÀaÈÌÑ;OÔ;OÐOÐOrŽ   c                óV  — | j         j        rS| j                             |j        ¦  «        \  }}}|dk    rt	          d¦  «        ‚|                      || j         ¦  «        S |                      ¦   «                              |                     ¦   «         ¦  «                             ¦   «         S )r%  r¥   úzero divisor)	rŠ   r  r›   r]  r   r  rº   r&  r»   )r™   ræ   rG  ÚF_invr  s        rŒ   r&  zDUP_Flint._invert  s‹   € àŒ5Œ;ð 	OØœFŸKšK¨¬Ñ/Ô/‰MˆC�˜Ø�aŠxˆxÝ# NÑ3Ô3Ð3Ø—:’:˜e Q¤UÑ+Ô+Ð+à—?’?Ñ$Ô$×,Ò,¨Q¯_ª_Ñ->Ô->Ñ?Ô?×LÒLÑNÔNÐNrŽ   c                ót   — |                       ¦   «                              |¦  «                             ¦   «         S r   )rº   r+  r»   r3  s     rŒ   r+  zDUP_Flint._revert#  s,   € à�ŠÑ Ô ×(Ò(¨Ñ+Ô+×8Ò8Ñ:Ô:Ð:rŽ   c                óŒ   — |                       ¦   «                              |                      ¦   «         ¦  «        }d„ |D ¦   «         S )r0  c                ó6   — g | ]}|                      ¦   «         ‘ŒS r~   ©r»   ©r¢   ræ   s     rŒ   r  z,DUP_Flint._subresultants.<locals>.<listcomp>*  s"   € Ð.Ð.Ð. a�—’Ñ!Ô!Ð.Ð.Ð.rŽ   )rº   r1  r£  s      rŒ   r1  zDUP_Flint._subresultants'  s=   € à�OŠOÑÔ×,Ò,¨Q¯_ª_Ñ->Ô->Ñ?Ô?ˆØ.Ð.¨1Ð.Ñ.Ô.Ð.rŽ   c                ó–   — |                       ¦   «                              |                      ¦   «         ¦  «        \  }}|d„ |D ¦   «         fS )r5  c                ó6   — g | ]}|                      ¦   «         ‘ŒS r~   rd  re  s     rŒ   r  z3DUP_Flint._resultant_includePRS.<locals>.<listcomp>/  s"   € Ð3Ð3Ð3¨1�a—n’nÑ&Ô&Ð3Ð3Ð3rŽ   )rº   r6  r¦  s       rŒ   r6  zDUP_Flint._resultant_includePRS,  sG   € à—’Ñ"Ô"×8Ò8¸¿ºÑ9JÔ9JÑKÔK‰ˆˆQØÐ3Ð3°Ð3Ñ3Ô3Ð3Ð3rŽ   c                ót   — |                       ¦   «                              |                      ¦   «         ¦  «        S )z'Computes resultant of ``f`` and ``g``. )rº   r7  r¾  s     rŒ   r7  zDUP_Flint._resultant1  s*   € à�ŠÑ Ô ×+Ò+¨A¯OªOÑ,=Ô,=Ñ>Ô>Ð>rŽ   c                óN   — |                       ¦   «                              ¦   «         S r<  )rº   r>  r˜   s    rŒ   r>  zDUP_Flint.discriminant5  s   € à�ŠÑ Ô ×-Ò-Ñ/Ô/Ð/rŽ   c                ó‚   — |                       |¦  «        }||                      |¦  «        |                     |¦  «        fS r@  )rG  r·  )r™   ræ   rœ  s      rŒ   rA  zDUP_Flint._cofactors9  s2   € à�EŠE�!‰HŒHˆØ�!—'’'˜!‘*”*˜aŸgšg a™jœjÐ(Ð(rŽ   c                ór   — |                       | j                             |j        ¦  «        | j        ¦  «        S rE  )r  r›   rG  rŠ   r¾  s     rŒ   rF  zDUP_Flint._gcd>  s(   € à�zŠz˜!œ&Ÿ*š* Q¤VÑ,Ô,¨a¬eÑ4Ô4Ð4rŽ   c                ó\  — | r|s|                       | j        j        ¦  «        S |                      |¦  «                             |                      |¦  «        ¦  «        }|j        j        r|                     ¦   «         }n,|                     ¦   «         dk     r| 	                    ¦   «         }|S )rK  r   )
rÞ   rŠ   rÅ   r†  r¶  rF  r   ra  rê  rb  )r™   ræ   rá  s      rŒ   rL  zDUP_Flint._lcmB  sŽ   € ð ð 	,�að 	,Ø—<’< ¤¤
Ñ+Ô+Ð+à�FŠF�1‰IŒI×Ò˜QŸVšV A™YœYÑ'Ô'ˆàŒ5Œ>ð 	Ø—’‘	”	ˆAˆAØ�TŠT‰VŒV�aŠZˆZØ—’‘”ˆAàˆrŽ   c                óâ  — | j         |j         cxk    rt          t          fv sn J ‚| j         j        r/|                      ¦   «         \  }}|                     ¦   «         \  }}n| j         j        | }}|j         j        |}}|                     |¦  «        }||z  ||z  }}|                     |¦  «        }|                     |¦  «        |                     |¦  «        }}| 	                    ¦   «         dk     }| 	                    ¦   «         dk     }	|r+|	r)| 
                    ¦   «         | 
                    ¦   «         }}n3|r| | 
                    ¦   «         }}n|	r| | 
                    ¦   «         }}||||fS )rQ  r   )rŠ   r   r   r  r  rÇ   rG  rF  r·  rê  rb  )
r™   ræ   r´  rP  r³  r}  ÚcHÚHÚf_negÚg_negs
             rŒ   rS  zDUP_Flint._cancelQ  s]  € ð Œu˜œÐ)Ð)Ò)Ð)¥"¥b Ð)Ð)Ð)Ð)Ð)Ð)àŒ5Œ;ð 	!Ø—N’NÑ$Ô$‰EˆB�Ø—N’NÑ$Ô$‰EˆB��à”E”I˜q�ˆBØ”E”I˜q�ˆBà�VŠV�B‰ZŒZˆØ�r‘˜2 ™8ˆBˆà�FŠF�1‰IŒIˆØ�wŠw�q‰zŒz˜1Ÿ7š7 1™:œ:ˆ1ˆà—’‘”˜’
ˆØ—’‘”˜’
ˆàð 	!�Uð 	!Ø—5’5‘7”7˜AŸEšE™GœGˆqˆAˆAØð 	!Ø�C˜Ÿš™œ�ˆBˆBØð 	!Ø�C˜Ÿš™œ�ˆBà�2�q˜!ˆ|ÐrŽ   c                óŠ   — |                       |¦  «        \  }}}}|                     |¦  «        |                     |¦  «        fS rP  )rS  ro  r²  s         rŒ   rR  zDUP_Flint._cancel_includep  s<   € à—y’y ‘|”|‰ˆˆB��1Ø�}Š}˜RÑ Ô  !§-¢-°Ñ"3Ô"3Ð3Ð3rŽ   c                ót   — |                       ¦   «                              |¦  «                             ¦   «         S rY  )rº   rZ  r»   r[  s     rŒ   rZ  zDUP_Flint._truncu  s,   € à�ŠÑ Ô ×'Ò'¨Ñ*Ô*×7Ò7Ñ9Ô9Ð9rŽ   c                óP   — |                       |                      ¦   «         ¦  «        S r`  )rw  rê  r˜   s    rŒ   ra  zDUP_Flint.monicy  s   € à�Š˜qŸtšt™vœvÑ&Ô&Ð&rŽ   c                óN   — |                       ¦   «                              ¦   «         S rc  )rº   rd  r˜   s    rŒ   rd  zDUP_Flint.content}  s    € ð �ŠÑ Ô ×(Ò(Ñ*Ô*Ð*rŽ   c                ó\   — |                       ¦   «         }|                      |¦  «        }||fS rf  )rd  rw  )r™   rº  Úprims      rŒ   rg  zDUP_Flint.primitive‚  s*   € à�yŠy‰{Œ{ˆØ�Š˜tÑ$Ô$ˆØ�TˆzÐrŽ   c                óh   — |                       |                      |j        ¦  «        | j        ¦  «        S ri  r*  r¾  s     rŒ   rj  zDUP_Flint._composeˆ  s$   € à�zŠz˜!Ÿ&š& ¤™.œ.¨!¬%Ñ0Ô0Ð0rŽ   c                ób   — d„ |                       ¦   «                              ¦   «         D ¦   «         S )rn  c                ó6   — g | ]}|                      ¦   «         ‘ŒS r~   rd  re  s     rŒ   r  z(DUP_Flint._decompose.<locals>.<listcomp>Ž  s"   € ÐKÐKÐK a�—’Ñ!Ô!ÐKÐKÐKrŽ   )rº   ro  r˜   s    rŒ   ro  zDUP_Flint._decomposeŒ  s,   € àKÐK¨1¯?ª?Ñ+<Ô+<×+GÒ+GÑ+IÔ+IÐKÑKÔKÐKrŽ   c                ó    — |                       || j        j        g¦  «        }|                      |                      |¦  «        | j        ¦  «        S r¾  )r   rŠ   rÇ   r  r›   )r™   r  Úx_plus_as      rŒ   rt  zDUP_Flint._shift�  s=   € à—6’6˜1˜aœeœi˜.Ñ)Ô)ˆØ�zŠz˜!Ÿ&š& Ñ*Ô*¨A¬EÑ2Ô2Ð2rŽ   c                óÊ   — |                       ¦   «         |                      ¦   «         |                      ¦   «         }}}|                     ||¦  «                             ¦   «         S rÁ  )rº   r‚  r»   )r™   r\  r€  rP  rV  r�  s         rŒ   r  zDUP_Flint._transform•  sM   € à—/’/Ñ#Ô# Q§_¢_Ñ%6Ô%6¸¿ºÑ8IÔ8Iˆaˆ1ˆØ�{Š{˜1˜aÑ Ô ×-Ò-Ñ/Ô/Ð/rŽ   c                ób   — d„ |                       ¦   «                              ¦   «         D ¦   «         S )r†  c                ó6   — g | ]}|                      ¦   «         ‘ŒS r~   rd  re  s     rŒ   r  z$DUP_Flint._sturm.<locals>.<listcomp>œ  s"   € ÐGÐGÐG a�—’Ñ!Ô!ÐGÐGÐGrŽ   )rº   r‡  r˜   s    rŒ   r‡  zDUP_Flint._sturmš  s,   € àGÐG¨1¯?ª?Ñ+<Ô+<×+CÒ+CÑ+EÔ+EÐGÑGÔGÐGrŽ   c                óN   — |                       ¦   «                              ¦   «         S rÄ  )rº   rŒ  r˜   s    rŒ   rŒ  zDUP_Flint._cauchy_upper_boundž  ó   € à�ŠÑ Ô ×4Ò4Ñ6Ô6Ð6rŽ   c                óN   — |                       ¦   «                              ¦   «         S rÇ  )rº   r’  r˜   s    rŒ   r’  zDUP_Flint._cauchy_lower_bound¢  r�  rŽ   c                óN   — |                       ¦   «                              ¦   «         S rÉ  )rº   r—  r˜   s    rŒ   r—  z%DUP_Flint._mignotte_sep_bound_squared¦  s   € à�ŠÑ Ô ×<Ò<Ñ>Ô>Ð>rŽ   c                óf   — |                       ¦   «         }d„ |                     ¦   «         D ¦   «         S )r›  c                ó@   — g | ]\  }}|                      ¦   «         |f‘ŒS r~   rd  ©r¢   ræ   rð   s      rŒ   r  z'DUP_Flint._gff_list.<locals>.<listcomp>­  s+   € ÐAÐAÐA©4¨1¨a�!—.’.Ñ"Ô" AÐ&ÐAÐAÐArŽ   )rº   r�  )r™   rP  s     rŒ   rœ  zDUP_Flint._gff_listª  s-   € à�OŠOÑÔˆØAÐA°1·:²:±<´<ÐAÑAÔAÐArŽ   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                óv   — |                       |                      |                      ¦   «         ¦  «        ¦  «        S r¦  )r¶  rF  r  r˜   s    rŒ   r§  zDUP_Flint.sqf_part¹  s(   € à�xŠx˜Ÿš˜qŸwšw™yœyÑ)Ô)Ñ*Ô*Ð*rŽ   c                ót   — |                       ¦   «                              |¬¦  «        \  }}|d„ |D ¦   «         fS )rª  ©r¦   c                ó@   — g | ]\  }}|                      ¦   «         |f‘ŒS r~   rd  r†  s      rŒ   r  z&DUP_Flint.sqf_list.<locals>.<listcomp>À  s+   € ÐCÐCÐC±$°!°Q˜ŸšÑ)Ô)¨1Ð-ÐCÐCÐCrŽ   )rº   r¬  rÔ  s       rŒ   r¬  zDUP_Flint.sqf_list½  s@   € àŸšÑ*Ô*×3Ò3¸Ð3Ñ<Ô<‰ˆˆwØÐCÐC¸'ÐCÑCÔCÐCÐCrŽ   c                ój   — |                       ¦   «                              |¬¦  «        }d„ |D ¦   «         S )rª  r‹  c                ó@   — g | ]\  }}|                      ¦   «         |f‘ŒS r~   rd  r†  s      rŒ   r  z.DUP_Flint.sqf_list_include.<locals>.<listcomp>Å  ó+   € Ð<Ð<Ð<©4¨1¨a�!—.’.Ñ"Ô" AÐ&Ð<Ð<Ð<rŽ   )rº   r®  rÙ  s      rŒ   r®  zDUP_Flint.sqf_list_includeÂ  s6   € à—/’/Ñ#Ô#×4Ò4¸Ð4Ñ=Ô=ˆØ<Ð<°7Ð<Ñ<Ô<Ð<rŽ   c                óÀ  ‡ — ‰ j         j        r+‰ j                             ¦   «         \  }}ˆ fd„|D ¦   «         }nŽ‰ j         j        rk‰ j                             ¦   «         \  }}ˆ fd„|D ¦   «         }g }|D ];\  }}|                     ¦   «         \  }}|||z  z  }|                     ||f¦  «         Œ<nt          d‰ j         z  ¦  «        ‚‰                      |¦  «        }||fS )r±  c                óP   •— g | ]"\  }}‰                      |‰j        ¦  «        |f‘Œ#S r~   ©r  rŠ   rÍ  s      €rŒ   r  z)DUP_Flint.factor_list.<locals>.<listcomp>Í  s2   ø€ ÐGÐGÐG±d°a¸˜Ÿš A q¤uÑ-Ô-¨qÐ1ÐGÐGÐGrŽ   c                óP   •— g | ]"\  }}‰                      |‰j        ¦  «        |f‘Œ#S r~   r’  rÍ  s      €rŒ   r  z)DUP_Flint.factor_list.<locals>.<listcomp>Ó  s2   ø€ ÐMÐMÐM¹D¸A¸q˜qŸzšz¨!¨Q¬UÑ3Ô3°QÐ7ÐMÐMÐMrŽ   r  )	rŠ   r  r›   Úfactorr  r  rö   r¼   r	   )r™   rÝ   rÕ  Úfactors_monicræ   rð   rà  s   `      rŒ   r²  zDUP_Flint.factor_listÇ  s  ø€ ð Œ5Œ;ð 	PàœVŸ]š]™_œ_‰NˆE�7ØGÐGÐGÐG¸gÐGÑGÔGˆGˆGàŒUŒ[ð 	Pð œVŸ]š]™_œ_‰NˆE�7ØMÐMÐMÐMÀGÐMÑMÔMˆMð ˆGØ%ð 'ð '‘��1Ø—~’~Ñ'Ô'‘��1Ø˜˜A™‘�Ø—’  1˜vÑ&Ô&Ð&Ð&ð'õ ÐFÈÌÑNÑOÔOÐOð —/’/ 'Ñ*Ô*ˆà�gˆ~ÐrŽ   c                óf   — |                       ¦   «                              ¦   «         }d„ |D ¦   «         S )r±  c                ó@   — g | ]\  }}|                      ¦   «         |f‘ŒS r~   rd  r†  s      rŒ   r  z1DUP_Flint.factor_list_include.<locals>.<listcomp>î  r�  rŽ   )rº   r´  rÞ  s     rŒ   r´  zDUP_Flint.factor_list_includeå  s3   € ð —/’/Ñ#Ô#×7Ò7Ñ9Ô9ˆØ<Ð<°7Ð<Ñ<Ô<Ð<rŽ   c                óf   ‡ ‡— d„ |D ¦   «         }t          |d¬¦  «        }ˆ fd„Šˆfd„|D ¦   «         S )z+Sort a list of factors to canonical order. c                ó@   — g | ]\  }}|                      ¦   «         |f‘ŒS r~   rú   r†  s      rŒ   r  z+DUP_Flint._sort_factors.<locals>.<listcomp>ó  s)   € Ð:Ð:Ð:©¨¨A�Q—Y’Y‘[”[ !Ð$Ð:Ð:Ð:rŽ   T)Úmultiplec                ór   •— ‰                      ‰                     | 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°T°r°T´7©O¬O¸Q¼UÑ!CÔ!C€ rŽ   c                ó0   •— g | ]\  }} ‰|¦  «        |f‘ŒS r~   r~   )r¢   ræ   rð   Úto_dup_flints      €rŒ   r  z+DUP_Flint._sort_factors.<locals>.<listcomp>ö  s*   ø€ Ð;Ð;Ð;©$¨!¨Q�,�,˜q‘/”/ 1Ð%Ð;Ð;Ð;rŽ   )r	   )r™   rÕ  rž  s   ` @rŒ   r	   zDUP_Flint._sort_factorsð  sS   øø€ ð ;Ð:°Ð:Ñ:Ô:ˆÝ °$Ð7Ñ7Ô7ˆØCÐCÐCÐCˆØ;Ð;Ð;Ð;°'Ð;Ñ;Ô;Ð;rŽ   c                óV   — |                       ¦   «                              ||||¦  «        S r    )rº   r¾  rÂ  s        rŒ   r¾  zDUP_Flint._isolate_real_rootsø  s&   € Ø�ŠÑ Ô ×4Ò4°S¸#¸sÀDÑIÔIÐIrŽ   c                óV   — |                       ¦   «                              ||||¦  «        S r    )rº   r½  rÂ  s        rŒ   r½  z!DUP_Flint._isolate_real_roots_sqfû  s&   € Ø�ŠÑ Ô ×8Ò8¸¸cÀ3ÈÑMÔMÐMrŽ   c                óV   — |                       ¦   «                              ||||¦  «        S r    )rº   r¼  rÂ  s        rŒ   r¼  zDUP_Flint._isolate_all_rootsþ  s&   € Ø�ŠÑ Ô ×3Ò3°C¸¸cÀ4ÑHÔHÐHrŽ   c                óV   — |                       ¦   «                              ||||¦  «        S r    )rº   r»  rÂ  s        rŒ   r»  z DUP_Flint._isolate_all_roots_sqf	  s&   € Ø�ŠÑ Ô ×7Ò7¸¸SÀ#ÀtÑLÔLÐLrŽ   c                óX   — |                       ¦   «                              |||||¦  «        S r    )rº   rÉ  rÊ  s         rŒ   rÉ  zDUP_Flint._refine_real_root	  s(   € Ø�ŠÑ Ô ×2Ò2°1°a¸¸eÀTÑJÔJÐJrŽ   c                óT   — |                       ¦   «                              ||¬¦  «        S ræ  )rº   rÑ  rÐ  s      rŒ   rÑ  zDUP_Flint.count_real_roots	  s%   € à�ŠÑ Ô ×1Ò1°c¸sÐ1ÑCÔCÐCrŽ   c                óT   — |                       ¦   «                              ||¬¦  «        S ré  )rº   rÔ  rÐ  s      rŒ   rÔ  zDUP_Flint.count_complex_roots	  s%   € à�ŠÑ Ô ×4Ò4¸À#Ð4ÑFÔFÐFrŽ   c                ó   — | j          S rÖ  rK  r˜   s    rŒ   r&  zDUP_Flint.is_zero	  s   € ð ”6ˆzÐrŽ   c                ó,   — | j         | j        j        k    S rÙ  )r›   rŠ   rÇ   r˜   s    rŒ   rÚ  zDUP_Flint.is_one	  s   € ð Œv˜œœÒ"Ð"rŽ   c                ó<   — | j                              ¦   «         dk    S )rÝ  r   rI  r˜   s    rŒ   rÞ  zDUP_Flint.is_ground	  ó   € ð Œv�}Š}‰Œ !Ò#Ð#rŽ   c                ó<   — | j                              ¦   «         dk    S )ré  r¥   rI  r˜   s    rŒ   rê  zDUP_Flint.is_linear	  r©  rŽ   c                ó<   — | j                              ¦   «         dk    S )rì  rú  rI  r˜   s    rŒ   rí  zDUP_Flint.is_quadratic#	  r©  rŽ   c                ó4   — |                       ¦   «         j        S rï  )rº   rñ  r˜   s    rŒ   rñ  zDUP_Flint.is_monomial(	  s   € ð �ŠÑ Ô Ô,Ð,rŽ   c                óF   — |                       ¦   «         | j        j        k    S rã  )rê  rŠ   rÇ   r˜   s    rŒ   rä  zDUP_Flint.is_monic-	  s   € ð �tŠt‰vŒv˜œœÒ"Ð"rŽ   c                ó4   — |                       ¦   «         j        S ræ  )rº   rç  r˜   s    rŒ   rç  zDUP_Flint.is_primitive2	  s   € ð �ŠÑ Ô Ô-Ð-rŽ   c                ó4   — |                       ¦   «         j        S ró  )rº   rõ  r˜   s    rŒ   rõ  zDUP_Flint.is_homogeneous7	  ó   € ð �ŠÑ Ô Ô/Ð/rŽ   c                ó4   — |                       ¦   «         j        S rà  )rº   rá  r˜   s    rŒ   rá  zDUP_Flint.is_sqf<	  s   € ð �ŠÑ Ô Ô'Ð'rŽ   c                ó4   — |                       ¦   «         j        S r÷  )rº   rø  r˜   s    rŒ   rø  zDUP_Flint.is_irreducibleA	  r°  rŽ   c                ó˜   — | j         j        r&t          | j                             ¦   «         ¦  «        S |                      ¦   «         j        S rú  )rŠ   r  Úboolr›   rü  rº   r˜   s    rŒ   rü  zDUP_Flint.is_cyclotomicF	  s?   € ð Œ5Œ;ð 	3Ý˜œ×,Ò,Ñ.Ô.Ñ/Ô/Ð/à—?’?Ñ$Ô$Ô2Ð2rŽ   r    r=  r%  r>  r@  )vrÐ   rA  rB  rC  r‹   rD  r  rE  r’   r—   r  r
  r  r'  rÞ   rÉ   rä   rº   rÔ   r¹   r  r  r'  r:  r@  rF  rK  rM  rT  r[  re  rk  ro  rs  rw  r^  rb  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  r6  r7  r>  rA  rF  rL  rS  rR  rZ  ra  rd  rg  rj  ro  rt  r  r‡  rŒ  r’  r—  rœ  r¡  r¤  r§  r¬  r®  r²  r´  r	   r¾  r½  r¼  r»  rÉ  rÑ  rÔ  rF  r&  rÚ  rÞ  rê  rí  rñ  rä  rç  rõ  rá  rø  rü  r~   rŽ   rŒ   r‘   r‘   Ä  s¿  € € € € € Ø3Ð3à
€Cà'€IðDð Dð Dð ð&ð &ñ „[ð&ð%ð %ð %ð ðð ñ „[ðð ðNð Nñ „[ðNð ðð ñ „[ðð&3ð 3ð 3ð
2ð 2ð 2ð'ð 'ð 'ðð ð ð:ð :ð :ð"ð "ð "ðNð Nð Nð1ð 1ð 1ð
"ð "ð "ð
9ð 9ð 9ð 9ð"ð "ð "ð
*ð *ð *ð"ð "ð "ð "ð
"ð "ð "ð "ð
"ð "ð "ð
"ð "ð "ð
#ð #ð #ð-ð -ð -ð-ð -ð -ð-ð -ð -ð.ð .ð .ð$ð $ð $ð6ð 6ð 6ð*ð *ð *ð2ð 2ð 2ð2ð 2ð 2ð2ð 2ð 2ð.ð .ð .ð.ð .ð .ð:ð :ð :ð$ð $ð $ð$ð $ð $ð$ð $ð $ð6ð 6ð 6ð2ð 2ð 2ð3ð 3ð 3ðð ð ðð ð ð ð ð  ð  ðð ð ð'ð 'ð 'ðð ð ðð ð ð
,ð ,ð ,ð+ð +ð +ð3ð 3ð 3ðð ð ð	Ið 	Ið 	Ið 	Ið&ð &ð &ð &ð*ð *ð *ð"ð "ð "ð2ð 2ð 2ð
Pð Pð Pð
Oð Oð Oð;ð ;ð ;ð/ð /ð /ð
4ð 4ð 4ð
?ð ?ð ?ð0ð 0ð 0ð)ð )ð )ð
5ð 5ð 5ðð ð ðð ð ð>4ð 4ð 4ð
:ð :ð :ð'ð 'ð 'ð+ð +ð +ð
ð ð ð1ð 1ð 1ðLð Lð Lð3ð 3ð 3ð
0ð 0ð 0ð
Hð Hð Hð7ð 7ð 7ð7ð 7ð 7ð?ð ?ð ?ðBð Bð Bð
"ð "ð "ð
"ð "ð "ð
+ð +ð +ðDð Dð Dð Dð
=ð =ð =ð =ð
ð ð ð<	=ð 	=ð 	=ð<ð <ð <ðJð Jð JðNð Nð NðIð Ið IðMð Mð MðKð Kð KðDð Dð Dð DðGð Gð Gð Gð ðð ñ „Xðð ð#ð #ñ „Xð#ð ð$ð $ñ „Xð$ð ð$ð $ñ „Xð$ð ð$ð $ñ „Xð$ð ð-ð -ñ „Xð-ð ð#ð #ñ „Xð#ð ð.ð .ñ „Xð.ð ð0ð 0ñ „Xð0ð ð(ð (ñ „Xð(ð ð0ð 0ñ „Xð0ð ð3ð 3ñ „Xð3ð 3ð 3rŽ   r‘   c                ób   — t          t          | ||¦  «        t          |||¦  «        ||¦  «        S r    )ÚDMFr   ©ÚnumÚdenr‹   rŠ   s       rŒ   Úinit_normal_DMFrº  O	  s5   € Ý�z˜#˜s CÑ(Ô(Ý˜#˜s CÑ(Ô(¨#¨sñ4ô 4ð 4rŽ   c                  ó‚  — e Zd ZdZdZd0d„Zed0d„¦   «         Zd„ Zed0d„¦   «         Z	d„ Z
d	„ Zd
„ Zd„ Zd1d„Zd2d„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d3d„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/„ Z1dS )4r¶  z'Dense Multivariate Fractions over `K`. r·  Nc                óž   — |                       |||¦  «        \  }}}t          ||||¦  «        \  }}|| _        || _        || _        || _        d S r    )Ú_parserc   r¸  r¹  r‹   rŠ   )rØ   r‰   rŠ   r‹   r¸  r¹  s         rŒ   Ú__init__zDMF.__init__Y	  sT   € ØŸš C¨¨cÑ2Ô2‰ˆˆS�#Ý˜c 3¨¨SÑ1Ô1‰ˆˆSàˆŒØˆŒØˆŒØˆŒˆˆrŽ   c                ó¨   — |                       |||¦  «        \  }}}t                               | ¦  «        }||_        ||_        ||_        ||_        |S r    )r½  rI  r�   r¸  r¹  r‹   rŠ   )rˆ   r‰   rŠ   r‹   r¸  r¹  rJ  s          rŒ   r†   zDMF.newb	  sO   € àŸ
š
 3¨¨SÑ1Ô1‰ˆˆS�#å�nŠn˜SÑ!Ô!ˆàˆŒØˆŒØˆŒØˆŒàˆ
rŽ   c                óD   — |                       || j        | j        ¦  «        S r    )r†   rŠ   r‹   )rØ   r‰   s     rŒ   rÞ   zDMF.ground_newo	  s   € Ø�xŠx˜˜TœX t¤xÑ0Ô0Ð0rŽ   c                óL  — t          |t          ¦  «        �r|\  }}|�Mt          |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          |||¦  «        }n†|}|�`t          |t          ¦  «        rt          |||¦  «        }nKt          |t          ¦  «        s#t          |                     |¦  «        |¦  «        }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Ñ(Ô(ð 7Ý'¨¨S°#Ñ6Ô6�Cå˜c¥4Ñ(Ô(ð 7Ý'¨¨S°#Ñ6Ô6�Cøå+¨CÑ0Ô0‘��WÝ+¨CÑ0Ô0‘��Wà˜gÒ%Ð%Ø!�C�Cå$Ð%DÑEÔEÐEå˜#˜sÑ#Ô#ð @Ý'Ð(>Ñ?Ô?Ð?å˜#˜sÑ#Ô#ð 1Ý˜c 3Ñ'Ô'��å! # s¨CÑ0Ô0ð 1Ý! # s¨CÑ0Ô0�CÝ! # s¨CÑ0Ô0�CøàˆCàˆÝ˜c¥4Ñ(Ô(ð <Ý'¨¨S°#Ñ6Ô6�C�CÝ# C­Ñ.Ô.ð <Ý$ S§[¢[°Ñ%5Ô%5°sÑ;Ô;�Cøå'¨Ñ,Ô,‘��Så˜#˜sÑ#Ô#ˆCà�C˜ˆ}ÐrŽ   c                óP   — | 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Ð%9¸1¼5¸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__¡	  sI   € Ý�Q”[Ô)­<¸¼¸q¼uÑ+EÔ+EÝ˜œ ¤Ñ&Ô&¨¬¨q¬uð6ñ 7ô 7ð 	7rŽ   c                ó   ‡ ‡— t          |t          ¦  «        r‰ j        |j        k    rt          d‰ ›d|›�¦  «        ‚‰ j        |j        k    r'‰ j        ‰ j        ‰ j        ‰ j        ‰ j        f|j        fS ‰ 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                             | |f‰|¦  «        S r™  ©rc   rÏ   r†   ©r¸  r¹  rU  Úkillr‹   rŠ   r™   s        €€rŒ   rP  zDMF.poly_unify.<locals>.per´	  ó`   ø€ Øð &Øð &Ø" 3™w˜à! A™g˜àð >Ý)¨#¨s°C¸Ñ=Ô=‘H�C˜à”{—’¨¨S z°3¸Ñ<Ô<Ð<rŽ   )rƒ   r€   r‹   rz   rŠ   rP  r¸  r¹  r›   rä   r   ©r™   ræ   r‹   rP  r}  rP  rŠ   s   `     @rŒ   Ú
poly_unifyzDMF.poly_unify¥	  s  øø€ å˜!�SÑ!Ô!ð 	H Q¤U¨a¬e¢^ ^Ý#Ð#ÀÀÀÀAÀAÐ$FÑGÔGÐGàŒ5�A”EŠ>ˆ>Ø”E˜1œ5 !¤%¨!¬%°´¨¸¼Ð@Ð@à”u˜aœeŸkšk¨!¬%Ñ0Ô0ˆHˆC�å˜QœU C¨¬°Ñ4Ô4Ý˜QœU C¨¬°Ñ4Ô4ð6ˆAõ ˜AœF C¨¬°Ñ4Ô4ˆAà%)°¸3ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð ˜˜S ! QÐ&Ð&rŽ   c                óF  ‡ ‡— t          |t          ¦  «        r‰ j        |j        k    rt          d‰ ›d|›�¦  «        ‚‰ j        |j        k    r.‰ j        ‰ j        ‰ j        ‰ j        ‰ j        f|j        |j        ffS ‰ 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                             | |f‰|¦  «        S r™  rÉ  rÊ  s        €€rŒ   rP  zDMF.frac_unify.<locals>.perÓ	  rÌ  rŽ   )
rƒ   r¶  r‹   rz   rŠ   rP  r¸  r¹  rä   r   rÍ  s   `     @rŒ   Ú
frac_unifyzDMF.frac_unifyÂ	  s:  øø€ å˜!�SÑ!Ô!ð 	H Q¤U¨a¬e¢^ ^Ý#Ð#ÀÀÀÀAÀAÐ$FÑGÔGÐGàŒ5�A”EŠ>ˆ>Ø”E˜1œ5 !¤%¨!¬%°´¨Ø*+¬%°´¨ð9ð 9ð ”u˜aœeŸkšk¨!¬%Ñ0Ô0ˆHˆC�å˜QœU C¨¬°Ñ4Ô4Ý˜QœU C¨¬°Ñ4Ô4ð6ˆAõ ˜QœU C¨¬°Ñ4Ô4Ý˜QœU C¨¬°Ñ4Ô4ð6ˆAð &*°¸3ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð ˜˜S ! QÐ&Ð&rŽ   TFc                ó¤   — | j         | j        }}|r|s||z  S |dz  }|rt          ||||¦  «        \  }}| j                             ||f||¦  «        S )z.Create a DMF out of the given representation. r¥   )r‹   rŠ   rc   rÏ   r†   )r™   r¸  r¹  rU  rË  r‹   rŠ   s          rŒ   rP  zDMF.perá	  sl   € à”5˜!œ%ˆSˆàð 	Øð Ø˜3‘w�à�q‘�àð 	6Ý! # s¨C°Ñ5Ô5‰HˆC�àŒ{�Š  S˜z¨3°Ñ4Ô4Ð4rŽ   c                óR   — | j         }|r	|s|S |dz  }t          || j        |¦  «        S )rN  r¥   )r‹   r€   rŠ   )r™   r‰   rË  r‹   s       rŒ   Úhalf_perzDMF.half_perð	  s;   € àŒeˆàð 	Øð Ø�
à�q‘�å�3˜œ˜sÑ#Ô#Ð#rŽ   c                ó0   — |                       d||¦  «        S r�   ©r†   rÄ   s      rŒ   rÅ   zDMF.zeroü	  ó   € à�wŠw�q˜#˜sÑ#Ô#Ð#rŽ   c                ó0   — |                       d||¦  «        S r™  rÖ  rÄ   s      rŒ   rÇ   zDMF.one 
  r×  rŽ   c                ó6   — |                       | j        ¦  «        S )z Returns the numerator of ``f``. )rÔ  r¸  r˜   s    rŒ   rR  z	DMF.numer
  ó   € à�zŠz˜!œ%Ñ Ô Ð rŽ   c                ó6   — |                       | j        ¦  «        S )z"Returns the denominator of ``f``. )rÔ  r¹  r˜   s    rŒ   rQ  z	DMF.denom
  rÚ  rŽ   c                óB   — |                       | j        | j        ¦  «        S )z4Remove common factors from ``f.num`` and ``f.den``. )rP  r¸  r¹  r˜   s    rŒ   rU  z
DMF.cancel
  s   € à�uŠu�Q”U˜AœEÑ"Ô"Ð"rŽ   c                óx   — |                       t          | j        | j        | j        ¦  «        | j        d¬¦  «        S )ra  F©rU  )rP  r8   r¸  r‹   rŠ   r¹  r˜   s    rŒ   rb  zDMF.neg
  s.   € à�uŠu•W˜QœU A¤E¨1¬5Ñ1Ô1°1´5ÀˆuÑGÔGÐGrŽ   c                ó2   — | |                       |¦  «        z   S rd  )rÞ   rf  s     rŒ   rg  zDMF.add_ground
  s   € à�1—<’< ‘?”?Ñ"Ð"rŽ   c           	     ó€  — t          |t          ¦  «        r4|                      |¦  «        \  }}}\  }}}t          |||||¦  «        |}	}nj|                      |¦  «        \  }}}}
}|
|c\  }}\  }}t          t          ||||¦  «        t          ||||¦  «        ||¦  «        }t          ||||¦  «        }	 |||	¦  «        S )z0Add two multivariate fractions ``f`` and ``g``. )rƒ   r€   rÎ  rF   rÑ  r9   r;   ©r™   ræ   r‹   rŠ   rP  ÚF_numÚF_denr}  r¸  r¹  rP  ÚG_numÚG_dens                rŒ   r~  zDMF.add
  óÔ   € å�a�ÑÔð 		2Ø/0¯|ª|¸A©¬Ñ,ˆC��c™>˜E 5¨1Ý" 5¨%°°C¸Ñ=Ô=¸u�ˆCˆCà"#§,¢,¨q¡/¤/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eå�' %¨°°SÑ9Ô9Ý! %¨°°SÑ9Ô9¸3ÀñEô EˆCå˜% ¨¨SÑ1Ô1ˆCàˆs�3˜‰}Œ}ÐrŽ   c           	     ó€  — t          |t          ¦  «        r4|                      |¦  «        \  }}}\  }}}t          |||||¦  «        |}	}nj|                      |¦  «        \  }}}}
}|
|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          ¦  «        r3|                      |¦  «        \  }}}\  }}}t          ||||¦  «        |}	}nJ|                      |¦  «        \  }}}}
}|
|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�ÑÔð 	2Ø/0¯|ª|¸A©¬Ñ,ˆC��c™>˜E 5¨1Ý˜u a¨¨cÑ2Ô2°E�ˆCˆCà"#§,¢,¨q¡/¤/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eå˜% ¨¨SÑ1Ô1ˆCÝ˜% ¨¨SÑ1Ô1ˆCàˆs�3˜‰}Œ}ÐrŽ   c           	     ó8  — t          |t          ¦  «        rg| j        | j        }}|dk     r||| }}}|                      t          ||| j        | j        ¦  «        t          ||| j        | j        ¦  «        d¬¦  «        S t          dt          |¦  «        z  ¦  «        ‚)rŽ  r   FrÞ  r�  )
rƒ   r©   r¸  r¹  rP  r=   r‹   rŠ   r�  r…   )r™   r  r¸  r¹  s       rŒ   r’  zDMF.powD
  sŸ   € å�a�ÑÔð 	BØ”u˜aœe�ˆCØ�1ŠuˆuØ! 3¨¨˜!�S�Ø—5’5�  a¨¬°´Ñ6Ô6Ý   a¨¬°´Ñ6Ô6¸uð ñ Fô Fð Fõ Ð6½¸a¹¼Ñ@ÑAÔAÐArŽ   c                ó>  — t          |t          ¦  «        r3|                      |¦  «        \  }}}\  }}}|t          ||||¦  «        }	}nJ|                      |¦  «        \  }}}}
}|
|c\  }}\  }}t          ||||¦  «        }t          ||||¦  «        }	 |||	¦  «        S )z0Computes quotient of fractions ``f`` and ``g``. ré  rá  s                rŒ   r³  zDMF.quoO
  s¯   € å�a�ÑÔð 	2Ø/0¯|ª|¸A©¬Ñ,ˆC��c™>˜E 5¨1Ø�g e¨Q°°SÑ9Ô9�ˆCˆCà"#§,¢,¨q¡/¤/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eå˜% ¨¨SÑ1Ô1ˆCÝ˜% ¨¨SÑ1Ô1ˆCàˆs�3˜‰}Œ}ÐrŽ   c                óF   — |                       | j        | j        d¬¦  «        S )z&Computes inverse of a fraction ``f``. FrÞ  )rP  r¹  r¸  )r™   Úchecks     rŒ   r'  z
DMF.invert_
  s   € à�uŠu�Q”U˜AœE¨%ˆuÑ0Ô0Ð0rŽ   c                ó6   — 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        ¦  «        o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
  s8   € õ ˜œ ¤ q¤uÑ-Ô-ð +Ý�a”e˜QœU A¤EÑ*Ô*ð	+rŽ   c                ó*   — |                       ¦   «         S r    r  r˜   s    rŒ   r  zDMF.__neg__n
  rÿ  rŽ   c                ój  — t          |t          t          f¦  «        r|                      |¦  «        S || j        v r-|                      | j                             |¦  «        ¦  «        S 	 |                      |                      |¦  «        ¦  «        S # t          t          t          f$ r
 t          cY S w xY wr    )rƒ   r€   r¶  r~  rŠ   rg  r¾   rÔ  r�  r   rÁ   r  r¾  s     rŒ   r  zDMF.__add__q
  s¢   € Ý�a�#�s˜Ñ$Ô$ð 	2Ø—5’5˜‘8”8ˆOØ�!”%ˆZˆZØ—<’< ¤§¢¨aÑ 0Ô 0Ñ1Ô1Ð1ð	"Ø—5’5˜Ÿš A™œÑ'Ô'Ð'øÝ�>Õ+>Ð?ð 	"ð 	"ð 	"Ý!Ð!Ð!Ð!ð	"øøøs   Á)'B ÂB2Â1B2c                ó,   — |                       |¦  «        S r    r	  r¾  s     rŒ   r
  zDMF.__radd__|
  r  rŽ   c                óþ   — t          |t          t          f¦  «        r|                      |¦  «        S 	 |                      |                      |¦  «        ¦  «        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__
  ów   € Ý�a�#�s˜Ñ$Ô$ð 	Ø—5’5˜‘8”8ˆOð	"Ø—5’5˜Ÿš A™œÑ'Ô'Ð'øÝ�>Õ+>Ð?ð 	"ð 	"ð 	"Ý!Ð!Ð!Ð!ð	"øøøó   ³'A ÁA<Á;A<c                ó.   — |                        |¦  «        S r    r	  r¾  s     rŒ   r  zDMF.__rsub__ˆ
  r  rŽ   c                óþ   — t          |t          t          f¦  «        r|                      |¦  «        S 	 |                      |                      |¦  «        ¦  «        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                ó,   — |                       |¦  «        S r    r  r¾  s     rŒ   r  zDMF.__rmul__”
  r  rŽ   c                ó,   — |                       |¦  «        S r    r  r3  s     rŒ   r  zDMF.__pow__—
  r  rŽ   c                óþ   — t          |t          t          f¦  «        r|                      |¦  «        S 	 |                      |                      |¦  «        ¦  «        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                ó4   — |                       d¬¦  «        |z  S )NF)rí  )r'  )rØ   ræ   s     rŒ   r  zDMF.__rtruediv__£
  s   € Ø�{Š{ ˆ{Ñ'Ô'¨Ñ)Ð)rŽ   c                óV  — 	 t          |t          ¦  «        rP|                      |¦  «        \  }}}\  }}}| j        |j        k    r!t	          || j        | j        ¦  «        o||k    S n1|                      |¦  «        \  }}}}}| j        |j        k    r||k    S n# t          $ r Y nw xY wdS rL  ©rƒ   r€   rÎ  r‹   r#   rŠ   rÑ  rz   ©r™   ræ   r  râ  rã  r}  rP  s          rŒ   r(  z
DMF.__eq__¦
  sÁ   € ð	Ý˜!�SÑ!Ô!ð 	"Ø-.¯\ª\¸!©_¬_Ñ*��1�a™˜% ¨à”5˜AœE’>�>Ý$ U¨A¬E°1´5Ñ9Ô9ÐH¸eÀqºjÐHð "ð !"§¢¨Q¡¤‘��1�a˜˜Aà”5˜AœE’>�>Ø š6�MøøÝ ð 	ð 	ð 	ØˆDð	øøøð ˆus   ‚A#B Á&1B Â
B&Â%B&c                óX  — 	 t          |t          ¦  «        rQ|                      |¦  «        \  }}}\  }}}| j        |j        k    r"t	          || j        | j        ¦  «        o||k     S n1|                      |¦  «        \  }}}}}| j        |j        k    r||k    S n# t          $ r Y nw xY wdS )NTrþ  rÿ  s          rŒ   Ú__ne__z
DMF.__ne__·
  sÄ   € ð	Ý˜!�SÑ!Ô!ð 	"Ø-.¯\ª\¸!©_¬_Ñ*��1�a™˜% ¨à”5˜AœE’>�>Ý )¨%°´¸¼Ñ >Ô >Ð MÀ5ÈAÂ:ÐNÐNð "ð !"§¢¨Q¡¤‘��1�a˜˜Aà”5˜AœE’>�>Ø š6�MøøÝ ð 	ð 	ð 	ØˆDð	øøøð ˆts   ‚A$B Á'1B Â
B'Â&B'c                óD   — |                       |¦  «        \  }}}}}||k     S r    ©rÑ  ©r™   ræ   r  rP  r}  s        rŒ   r2  z
DMF.__lt__È
  ó$   € ØŸš Q™œ‰ˆˆ1ˆa��AØ�1ŠuˆrŽ   c                óD   — |                       |¦  «        \  }}}}}||k    S r    r  r  s        rŒ   r5  z
DMF.__le__Ì
  ó$   € ØŸš Q™œ‰ˆˆ1ˆa��AØ�AŠvˆrŽ   c                óD   — |                       |¦  «        \  }}}}}||k    S r    r  r  s        rŒ   r8  z
DMF.__gt__Ð
  r  rŽ   c                óD   — |                       |¦  «        \  }}}}}||k    S r    r  r  s        rŒ   r:  z
DMF.__ge__Ô
  r  rŽ   c                ó8   — t          | j        | j        ¦  «         S r    rï  r˜   s    rŒ   r<  zDMF.__bool__Ø
  s   € Ý˜aœe Q¤UÑ+Ô+Ð+Ð+rŽ   r    )TFr=  r?  )2rÐ   rA  rB  rC  rD  r¾  rE  r†   rÞ   r½  rÑ   rÕ   rÎ  rÑ  rP  rÔ  rÅ   rÇ   rR  rQ  rU  rb  rg  r~  rƒ  r‡  r’  r³  r·  r'  rF  r&  rÚ  r  r  r
  r  r  r  r  r  r  r  r(  r  r2  r5  r8  r:  r<  r~   rŽ   rŒ   r¶  r¶  T	  s  € € € € € Ø1Ð1à,€Iðð ð ð ð ð
ð 
ð 
ñ „[ð
ð1ð 1ð 1ð ð)ð )ð )ñ „[ð)ðVPð Pð Pð7ð 7ð 7ð'ð 'ð 'ð:'ð 'ð 'ð>5ð 5ð 5ð 5ð
$ð 
$ð 
$ð 
$ð ð$ð $ñ „[ð$ð ð$ð $ñ „[ð$ð!ð !ð !ð!ð !ð !ð#ð #ð #ðHð Hð Hð#ð #ð #ðð ð ðð ð ðð ð ð	Bð 	Bð 	Bðð ð ð €Eð1ð 1ð 1ð 1ð ð(ð (ñ „Xð(ð ð+ð +ñ „Xð+ð
ð ð ð	"ð 	"ð 	"ðð ð ð"ð "ð "ðð ð ð"ð "ð "ðð ð ðð ð ð"ð "ð "ð*ð *ð *ðð ð ð"ð ð ð"ð ð ðð ð ðð ð ðð ð ð,ð ,ð ,ð ,ð ,rŽ   r¶  c                ó\   — 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                óL  ‡— t          |t          ¦  «        rnŽt          |¦  «        t          u r t          t	          |‰¦  «        ‰d¦  «        }nXt          |t
          ¦  «        rˆfd„|D ¦   «         }n‰                     |¦  «        g}t          t          |¦  «        ‰d¦  «        }t          |t          ¦  «        rnSt          |t          ¦  «        r t          t	          |‰¦  «        ‰d¦  «        }nt          t          |¦  «        ‰d¦  «        }|                      ||‰¦  «        S )Nr   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r~   )r¾   )r¢   r  rŠ   s     €rŒ   r  zANP.__new__.<locals>.<listcomp>í
  s#   ø€ Ð3Ð3Ð3¨!�s—{’{ 1‘~”~Ð3Ð3Ð3rŽ   )	rƒ   r€   r…   r³   r%   r„   r¾   r   r†   ©rˆ   r‰   r  rŠ   s      `rŒ   r�   zANP.__new__æ
  s  ø€ Ý�c�3ÑÔð 		.ØÝ�#‰YŒY�$ÐÐÝ•m C¨Ñ-Ô-¨s°AÑ6Ô6ˆCˆCå˜#�tÑ$Ô$ð )Ø3Ð3Ð3Ð3¨sÐ3Ñ3Ô3��à—{’{ 3Ñ'Ô'Ð(�Ý•i ‘n”n c¨1Ñ-Ô-ˆCå�c�3ÑÔð 	.ØÝ˜�TÑ"Ô"ð 	.Ý•m C¨Ñ-Ô-¨s°AÑ6Ô6ˆCˆCå•i ‘n”n c¨1Ñ-Ô-ˆCà�wŠw�s˜C Ñ%Ô%Ð%rŽ   c                óÄ   •— |j         |j         cxk    r|k    sn t          d¦  «        ‚t          ¦   «                              | ¦  «        }||_        ||_        ||_         |S )NzInconsistent domain)rŠ   r¼   Úsuperr�   r›   r  )rˆ   r‰   r  rŠ   rJ  rÏ   s        €rŒ   r†   zANP.newû
  sd   ø€ à”˜3œ7Ð)Ð)Ò)Ð) cÒ)Ð)Ð)Ð)ÝÐ4Ñ5Ô5Ð5Ý‰gŒg�oŠo˜cÑ"Ô"ˆØˆŒØˆŒØˆŒØˆ
rŽ   c                ó8   — t           | j        | j        | j        ffS r    )r  r‰   r  rŠ   r×   s    rŒ   r  zANP.__reduce__  s   € Ý�T”X˜tœx¨¬Ð2Ð2Ð2rŽ   c                ó4   — | j                              ¦   «         S r    ©r›   r—   r×   s    rŒ   r‰   zANP.rep  s   € àŒy× Ò Ñ"Ô"Ð"rŽ   c                ó*   — |                       ¦   «         S r    )Úmod_to_listr×   s    rŒ   r  zANP.mod  s   € à×ÒÑ!Ô!Ð!rŽ   c                ó   — | j         S r    rK  r×   s    rŒ   Úto_DMPz
ANP.to_DMP  ó
   € ØŒyÐrŽ   c                ó   — | j         S r    )r  r×   s    rŒ   Ú
mod_to_DMPzANP.mod_to_DMP  r  rŽ   c                óD   — |                       || j        | j        ¦  «        S r    )r†   r  rŠ   rO  s     rŒ   rP  zANP.per  s   € Ø�uŠu�S˜!œ& !¤%Ñ(Ô(Ð(rŽ   c                ó˜   — | j         j        ›d| j                             ¦   «         ›d| j                             ¦   «         ›d| j        ›d�S rË   )rÏ   rÐ   r›   r—   r  rŠ   r˜   s    rŒ   rÑ   zANP.__repr__  sJ   € Ø#$¤;Ô#7Ð#7Ð#7¸¼¿ºÑ9IÔ9IÐ9IÐ9IÈ1Ì6Ï>Ê>ÑK[ÔK[ÐK[ÐK[Ð]^Ô]bÐ]bÐ]bÐcÐcrŽ   c                ó˜   — t          | j        j        |                      ¦   «         | j                             ¦   «         | j        f¦  «        S r    )rÓ   rÏ   rÐ   rÔ   r  rŠ   r˜   s    rŒ   rÕ   zANP.__hash__  s4   € Ý�Q”[Ô)¨1¯:ª:©<¬<¸¼¿ºÑ9JÔ9JÈAÌEÐRÑSÔSÐSrŽ   c                óª   — | j         |k    r| S |                      | 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"  sD   € àŒ5�CŠ<ˆ<ØˆHà—5’5˜œŸš¨Ñ,Ô,¨a¬f¯nªn¸SÑ.AÔ.AÀ3ÑGÔGÐGrŽ   c                ó6  ‡‡— t          |t          ¦  «        r| j        |j        k    rt          d| ›d|›�¦  «        ‚| j        |j        k    r | j        | j        | j        |j        | j        fS | j                             |j        ¦  «        Št          | j        | j        ‰¦  «        }t          |j        |j        ‰¦  «        }‰| j        k    r'‰|j        k    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Ô0€ rŽ   )	rƒ   r  r  rz   rŠ   rP  r‰   rä   r   )r™   ræ   rP  r}  rP  rŠ   r  s        @@rŒ   rä   z	ANP.unify)  s  øø€ õ ˜!�SÑ!Ô!ð 	H Q¤U¨a¬e¢^ ^Ý#Ð#ÀÀÀÀAÀAÐ$FÑGÔGÐGàŒ5�A”EŠ>ˆ>Ø”5˜!œ% ¤¨¬¨q¬uÐ4Ð4à”%—+’+˜aœeÑ$Ô$ˆCå˜AœE 1¤5¨#Ñ.Ô.ˆAÝ˜AœE 1¤5¨#Ñ.Ô.ˆAà�a”eŠ|ˆ|  q¤u¢ Ý! !¤%¨¬°Ñ4Ô4��à˜!œ%’<�<Øœ%�C�Càœ%�Cà0Ð0Ð0Ð0Ð0ˆCà�C˜˜A˜sÐ"Ð"rŽ   c                ó\  — t          |t          ¦  «        r| j        |j        k    rt          d| ›d|›�¦  «        ‚| j        |j        k    rI| 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Ñ!Ô!ð 	H Q¤V¨q¬vÒ%5Ð%5Ý#Ð#ÀÀÀÀAÀAÐ$FÑGÔGÐGð Œ5�A”EŠ>ˆ>Ø”%—+’+˜aœeÑ$Ô$ˆCØ—	’	˜#‘”ˆAØ—	’	˜#‘”ˆAàŒv�q”v˜qœv q¤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                ó4   — | j                              ¦   «         S )ré   )r›   rë   r˜   s    rŒ   rë   zANP.to_dict[  ó   € àŒv�~Š~ÑÔÐrŽ   c                óª   — t          | j        d| j        ¦  «        }|                     ¦   «         D ]"\  }}| j                             |¦  «        ||<   Œ#|S )rí   r   )r'   r‰   rŠ   rî   rï   )r™   r‰   rð   rñ   s       rŒ   rò   zANP.to_sympy_dict_  sP   € å˜!œ%  A¤EÑ*Ô*ˆà—I’I‘K”Kð 	'ð 	'‰DˆAˆqØ”U—^’^ AÑ&Ô&ˆC�‰FˆFàˆ
rŽ   c                ó4   — | j                              ¦   «         S rý   r  r˜   s    rŒ   r—   zANP.to_listh  r.  rŽ   c                ó4   — | 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                óD   ‡ — ˆ fd„‰                       ¦   «         D ¦   «         S )rô   c                óD   •— g | ]}‰j                              |¦  «        ‘ŒS r~   )rŠ   rï   )r¢   r£   r™   s     €rŒ   r  z%ANP.to_sympy_list.<locals>.<listcomp>r  s'   ø€ Ð9Ð9Ð9 q�”—’ Ñ"Ô"Ð9Ð9Ð9rŽ   rú   r˜   s   `rŒ   rû   zANP.to_sympy_listp  s%   ø€ à9Ð9Ð9Ð9¨A¯IªI©K¬KÐ9Ñ9Ô9Ð9rŽ   c                ó4   — | j                              ¦   «         S r   )r›   rÔ   r˜   s    rŒ   rÔ   zANP.to_tuplet  s   € ð Œv�ŠÑ Ô Ð rŽ   c           
     ó~   — t          t          t          t          |j        |¦  «        ¦  «        ¦  «        ||¦  «        S r    )r  r   r„   r¢  r¾   r  s       rŒ   r¯   zANP.from_list|  s0   € å•9�T¥# c¤k°3Ñ"7Ô"7Ñ8Ô8Ñ9Ô9¸3ÀÑDÔDÐDrŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S rd  )rP  r›   rg  rf  s     rŒ   rg  zANP.add_ground€  ó$   € à�uŠu�Q”V×&Ò& qÑ)Ô)Ñ*Ô*Ð*rŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S rj  )rP  r›   rl  rf  s     rŒ   rl  zANP.sub_ground„  r7  rŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S )z3Multiply ``f`` by an element of the ground domain. )rP  r›   rp  rf  s     rŒ   rp  zANP.mul_groundˆ  r7  rŽ   c                ó\   — |                       | j                             |¦  «        ¦  «        S )z6Quotient of ``f`` by an element of the ground domain. )rP  r›   rt  rf  s     rŒ   rt  zANP.quo_groundŒ  r7  rŽ   c                óZ   — |                       | j                             ¦   «         ¦  «        S r    )rP  r›   rb  r˜   s    rŒ   rb  zANP.neg�  s   € Ø�uŠu�Q”V—Z’Z‘\”\Ñ"Ô"Ð"rŽ   c                óŠ   — |                       |¦  «        \  }}}}|                      |                     |¦  «        ||¦  «        S r    )r(  r†   r~  ©r™   ræ   rP  r}  r  rŠ   s         rŒ   r~  zANP.add“  ó9   € ØŸš Q™œ‰ˆˆ1ˆc�3Ø�uŠu�Q—U’U˜1‘X”X˜s CÑ(Ô(Ð(rŽ   c                óŠ   — |                       |¦  «        \  }}}}|                      |                     |¦  «        ||¦  «        S r    )r(  r†   rƒ  r=  s         rŒ   rƒ  zANP.sub—  r>  rŽ   c                ó°   — |                       |¦  «        \  }}}}|                      |                     |¦  «                             |¦  «        ||¦  «        S r    )r(  r†   r‡  r¯  r=  s         rŒ   r‡  zANP.mul›  sE   € ØŸš Q™œ‰ˆˆ1ˆc�3Ø�uŠu�Q—U’U˜1‘X”X—\’\ #Ñ&Ô&¨¨SÑ1Ô1Ð1rŽ   c                óP  — t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚| j        }| j        }|dk     r|                     |¦  «        | }}|                      |                     |¦  «         	                    | j        ¦  «        || j
        ¦  «        S )rŽ  r�  r   )rƒ   r©   r�  r…   r  r›   r'  r†   r’  r¯  rŠ   )r™   r  r  rP  s       rŒ   r’  zANP.powŸ  s�   € å˜!�SÑ!Ô!ð 	BÝÐ6½¸a¹¼Ñ@ÑAÔAÐAàŒfˆØŒFˆàˆqŠ5ˆ5Ø—8’8˜C‘=”= 1 "ˆqˆAð �uŠu�Q—U’U˜1‘X”X—\’\ !¤&Ñ)Ô)¨3°´Ñ6Ô6Ð6rŽ   c                óÖ   — |                       |¦  «        \  }}}}|                      |                     |                     |¦  «        ¦  «                             |¦  «        ||¦  «        S r    )r(  r†   r‡  r'  r¯  r=  s         rŒ   r·  z	ANP.exquo­  sS   € ØŸš Q™œ‰ˆˆ1ˆc�3Ø�uŠu�Q—U’U˜1Ÿ8š8 C™=œ=Ñ)Ô)×-Ò-¨cÑ2Ô2°C¸Ñ=Ô=Ð=rŽ   c                ól   — |                       |¦  «        |                      | j        | j        ¦  «        fS r    )r·  rÅ   r  rŠ   r¾  s     rŒ   r«  zANP.div±  s)   € Ø�wŠw�q‰zŒz˜1Ÿ6š6 !¤&¨!¬%Ñ0Ô0Ð0Ð0rŽ   c                ó,   — |                       |¦  «        S r    )r·  r¾  s     rŒ   r³  zANP.quo´  s   € Ø�wŠw�q‰zŒzÐrŽ   c                ó¾   — |                       |¦  «        \  }}}}|                     |¦  «        \  }}|j        r|                      ||¦  «        S t	          d¦  «        ‚)Nr_  )r(  r  rÚ  rÅ   r   )r™   ræ   rP  r}  r  rŠ   rÛ  rœ  s           rŒ   r¯  zANP.rem·  sX   € ØŸš Q™œ‰ˆˆ1ˆc�3Ø�|Š|˜A‰Œ‰ˆˆ1àŒ8ð 	0Ø—6’6˜#˜sÑ#Ô#Ð#å Ñ/Ô/Ð/rŽ   c                ó4   — | j                              ¦   «         S ré  )r›   rê  r˜   s    rŒ   rê  zANP.LCÀ  ó   € àŒv�yŠy‰{Œ{ÐrŽ   c                ó4   — | j                              ¦   «         S rì  )r›   rî  r˜   s    rŒ   rî  zANP.TCÄ  rG  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Œ~Ð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Œ}ÐrŽ   c                ó   — | j         j        S rÜ  )r›   rÞ  r˜   s    rŒ   rÞ  zANP.is_groundÒ  s   € ð ŒvÔÐrŽ   c                ó   — | S r    r~   r˜   s    rŒ   Ú__pos__zANP.__pos__×  s   € ØˆrŽ   c                ó*   — |                       ¦   «         S r    r  r˜   s    rŒ   r  zANP.__neg__Ú  rÿ  rŽ   c                óä   — t          |t          ¦  «        r|                      |¦  «        S 	 | j                             |¦  «        }|                      |¦  «        S # t          $ r
 t          cY S w xY wr    )rƒ   r  r~  rŠ   r¾   rg  r   r  r¾  s     rŒ   r  zANP.__add__Ý  óv   € Ý�a�ÑÔð 	Ø—5’5˜‘8”8ˆOð	#Ø”—’˜aÑ Ô ˆAð —<’< ‘?”?Ð"øõ ð 	"ð 	"ð 	"Ý!Ð!Ð!Ð!ð	"øøøó   ¬A ÁA/Á.A/c                ó,   — |                       |¦  «        S r    r	  r¾  s     rŒ   r
  zANP.__radd__ç  r  rŽ   c                óä   — t          |t          ¦  «        r|                      |¦  «        S 	 | j                             |¦  «        }|                      |¦  «        S # t          $ r
 t          cY S w xY wr    )rƒ   r  rƒ  rŠ   r¾   rl  r   r  r¾  s     rŒ   r  zANP.__sub__ê  rP  rQ  c                ó.   — |                        |¦  «        S r    r	  r¾  s     rŒ   r  zANP.__rsub__ô  r  rŽ   c                óä   — t          |t          ¦  «        r|                      |¦  «        S 	 | j                             |¦  «        }|                      |¦  «        S # t          $ r
 t          cY S w xY wr    )rƒ   r  r‡  rŠ   r¾   rp  r   r  r¾  s     rŒ   r  zANP.__mul__÷  rP  rQ  c                ó,   — |                       |¦  «        S r    r  r¾  s     rŒ   r  zANP.__rmul__  r  rŽ   c                ó,   — |                       |¦  «        S r    r  r3  s     rŒ   r  zANP.__pow__  r  rŽ   c                ó,   — |                       |¦  «        S r    r  r¾  s     rŒ   r   zANP.__divmod__  r  rŽ   c                ó,   — |                       |¦  «        S r    r"  r¾  s     rŒ   r#  zANP.__mod__
  r  rŽ   c                óä   — t          |t          ¦  «        r|                      |¦  «        S 	 | j                             |¦  «        }|                      |¦  «        S # t          $ r
 t          cY S w xY wr    )rƒ   r  r³  rŠ   r¾   rt  r   r  r¾  s     rŒ   r  zANP.__truediv__  rP  rQ  c                ót   — 	 |                       |¦  «        \  }}}}n# t          $ r
 t          cY S w xY w||k    S r    ©r(  rz   r  ©r™   ræ   rP  r}  r  s        rŒ   r(  z
ANP.__eq__  óP   € ð	"ØŸš Q™œ‰JˆAˆq�!�Q�QøÝ ð 	"ð 	"ð 	"Ý!Ð!Ð!Ð!ð	"øøøà�AŠvˆó   ‚ �1°1c                ót   — 	 |                       |¦  «        \  }}}}n# t          $ r
 t          cY S w xY w||k    S r    r\  r]  s        rŒ   r  z
ANP.__ne__  r^  r_  c                óB   — |                       |¦  «        \  }}}}||k     S r    ©r(  r]  s        rŒ   r2  z
ANP.__lt__%  ó"   € Ø—[’[ ‘^”^‰
ˆˆ1ˆa�Ø�1ŠuˆrŽ   c                óB   — |                       |¦  «        \  }}}}||k    S r    rb  r]  s        rŒ   r5  z
ANP.__le__)  ó"   € Ø—[’[ ‘^”^‰
ˆˆ1ˆa�Ø�AŠvˆrŽ   c                óB   — |                       |¦  «        \  }}}}||k    S r    rb  r]  s        rŒ   r8  z
ANP.__gt__-  rc  rŽ   c                óB   — |                       |¦  «        \  }}}}||k    S r    rb  r]  s        rŒ   r:  z
ANP.__ge__1  re  rŽ   c                ó*   — t          | j        ¦  «        S r    )r´  r›   r˜   s    rŒ   r<  zANP.__bool__5  s   € Ý�A”F‰|Œ|ÐrŽ   )CrÐ   rA  rB  rC  rD  r�   rE  r†   r  rF  r‰   r  r  r  rP  rÑ   rÕ   r¾   rä   r(  rÅ   rÇ   rë   rò   r—   r  rû   rÔ   r¯   rg  rl  rp  rt  rb  r~  rƒ  r‡  r’  r·  r«  r³  r¯  rê  rî  r&  rÚ  rÞ  rM  r  r  r
  r  r  r  r  r  r   r#  r  r(  r  r2  r5  r8  r:  r<  Ú__classcell__)rÏ   s   @rŒ   r  r  á
  s!  ø€ € € € € Ø;Ð;à'€Ið&ð &ð &ð* ðð ð ð ñ „[ðð3ð 3ð 3ð ð#ð #ñ „Xð#ð ð"ð "ñ „Xð"ðð ð ðð ð ð)ð )ð )ðdð dð dðTð Tð TðHð Hð Hð#ð #ð #ð:-ð -ð -ð ð ð  ñ „[ð ð ð ð  ñ „[ð ð ð  ð  ðð ð ð ð  ð  ð ð  ð  ð:ð :ð :ð!ð !ð !ð ðEð Eñ „[ðEð+ð +ð +ð+ð +ð +ð+ð +ð +ð+ð +ð +ð#ð #ð #ð)ð )ð )ð)ð )ð )ð2ð 2ð 2ð7ð 7ð 7ð>ð >ð >ð1ð 1ð 1ðð ð ð0ð 0ð 0ðð ð ðð ð ð ðð ñ „Xðð ðð ñ „Xðð ð ð  ñ „Xð ðð ð ðð ð ð#ð #ð #ðð ð ð#ð #ð #ðð ð ð#ð #ð #ðð ð ðð ð ðð ð ðð ð ð#ð #ð #ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð ð ð rŽ   r  )“rC  Ú
__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>rz     s
  ðØ 7Ð 7Ð 7à "Ð "Ð "Ð "Ð "Ð "à ,Ð ,Ð ,Ð ,Ð ,Ð ,à @Ð @Ð @Ð @Ð @Ð @à !Ð !Ð !Ð !Ð !Ð !Ø *Ð *Ð *Ð *Ð *Ð *Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð0ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð4ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð"ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð(ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð.ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð$ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ðð ð ð ð ð ð ð ð
 #Ð "Ð "Ñ "à�7ÒÐØ€L€L€LØ˜"�X€N€Nà€EØ€NðDð Dð Dð Dð Dˆ+ñ Dô Dð DðN"pð pð pð pð p�ñ pô pð pðfH
3ð H
3ð H
3ð H
3ð H
3�ñ H
3ô H
3ð H
3ðV4ð 4ð 4ð
E,ð E,ð E,ð E,ð E,Ð
˜kñ E,ô E,ð E,ðP*ð *ð *ð
Uð Uð Uð Uð Uˆ+ñ Uô Uð Uð Uð UrŽ   