Ë
    7^(hy ã                  ó  — 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ˆ edk(  rddl‰Z‰d„ ZŠndZ‰d„ ZŠ G d„ de
«      Z‹ G d„ de‹«      ZŒ G d„ de‹«      Z�d„ ZŽ G d„ dee
«      Z�d„ Z� G d „ d!e
«      Z‘y)"z1OO layer for several polynomial representations. é    )Úannotations)ÚGROUND_TYPES)Úsympy_deprecation_warning)Úoo)ÚCantSympify)ÚPicklableWithSlotsÚ_sort_factors)ÚDomainÚZZÚQQ)ÚCoercionFailedÚExactQuotientFailedÚDomainErrorÚNotInvertible)!ÚninfÚdmp_validateÚ
dup_normalÚ
dmp_normalÚdup_convertÚdmp_convertÚdmp_from_sympyÚ	dup_stripÚdmp_degree_inÚdmp_degree_listÚdmp_negative_pÚdmp_ground_LCÚdmp_ground_TCÚdmp_ground_nthÚdmp_oneÚ
dmp_groundÚdmp_zeroÚ
dmp_zero_pÚ	dmp_one_pÚdmp_ground_pÚdup_from_dictÚdmp_from_dictÚdmp_to_dictÚdmp_deflateÚ
dmp_injectÚ	dmp_ejectÚdmp_terms_gcdÚdmp_list_termsÚdmp_excludeÚ	dup_sliceÚdmp_slice_inÚdmp_permuteÚdmp_to_tuple)Údmp_add_groundÚdmp_sub_groundÚdmp_mul_groundÚdmp_quo_groundÚdmp_exquo_groundÚdmp_absÚdmp_negÚdmp_addÚdmp_subÚdmp_mulÚdmp_sqrÚdmp_powÚdmp_pdivÚdmp_premÚdmp_pquoÚ
dmp_pexquoÚdmp_divÚdmp_remÚdmp_quoÚ	dmp_exquoÚdmp_add_mulÚdmp_sub_mulÚdmp_max_normÚdmp_l1_normÚdmp_l2_norm_squared)Údmp_clear_denomsÚdmp_integrate_inÚdmp_diff_inÚdmp_eval_inÚ
dup_revertÚdmp_ground_truncÚdmp_ground_contentÚdmp_ground_primitiveÚdmp_ground_monicÚdmp_composeÚdup_decomposeÚ	dup_shiftÚ	dmp_shiftÚdup_transformÚdmp_lift)
Údup_half_gcdexÚ	dup_gcdexÚ
dup_invertÚdmp_subresultantsÚdmp_resultantÚdmp_discriminantÚdmp_inner_gcdÚdmp_gcdÚdmp_lcmÚ
dmp_cancel)Údup_gff_listÚdmp_normÚ	dmp_sqf_pÚdmp_sqf_normÚdmp_sqf_partÚdmp_sqf_listÚdmp_sqf_list_include)Údup_cyclotomic_pÚdmp_irreducible_pÚdmp_factor_listÚdmp_factor_list_include)Údup_isolate_real_roots_sqfÚdup_isolate_real_rootsÚdup_isolate_all_roots_sqfÚdup_isolate_all_rootsÚdup_refine_real_rootÚdup_count_real_rootsÚdup_count_complex_rootsÚ	dup_sturmÚdup_cauchy_upper_boundÚdup_cauchy_lower_boundÚdup_mignotte_sep_bound_squared)ÚUnificationFailedÚPolynomialErrorÚflintNc                ón   — | j                   xs( | j                  xs | j                  xr | j                  S ©N)Úis_ZZÚis_QQÚis_FFÚ	_is_flint©ÚDs    úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/polyclasses.pyÚ_supported_flint_domainr†   ‚   s'   € Ø�w‰wÒ<˜!Ÿ'™'Ò< Q§W¡WÒ%<°·±Ð<ó    c                 ó   — y©NF© rƒ   s    r…   r†   r†   †   s   € Ør‡   c                  óð  — e Zd ZU dZdZded<   ded<   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Ôd0„Z0dÔd1„Z1d2„ Z2d3„ Z3d4„ Z4d5„ Z5d6„ Z6d7„ Z7d8„ Z8d9„ Z9d:„ Z:d;„ Z;d<„ Z<d=„ 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\dÕd]„Z]d^„ Z^d_„ Z_d`„ Z`da„ Zadb„ Zbdc„ Zcdd„ Zdde„ Zedf„ Zfdg„ Zgdh„ Zhdi„ Zidj„ ZjdÖdk„Zkdl„ ZldÖdm„Zmdn„ ZndÕdo„Zodp„ Zpdq„ Zqdr„ Zrds„ Zsdt„ Ztdu„ Zudv„ Zvdw„ Zwdx„ Zxdy„ Zydz„ Zzd{„ Z{dÔ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Òy)ÛÚDMPú)Dense Multivariate Polynomials over `K`. rŠ   ÚintÚlevr
   ÚdomNc                ó˜   — |€t        |«      \  }}n't        |t        «      st        dt	        |«      z  «      ‚| j                  |||«      S )Nzexpected list, got %s)r   Ú
isinstanceÚlistr   ÚtypeÚnew©ÚclsÚrepr�   r�   s       r…   Ú__new__zDMP.__new__’   sG   € àˆ;Ü# CÓ(‰HˆC‘Ü˜C¤Ô&Ü Ð!8¼4À»9Ñ!DÓEÐEà�w‰w�s˜C Ó%Ð%r‡   c                óŠ   — t         �'|dk(  r"t        |«      rt        j                  |||«      S t        j                  |||«      S ©Nr   )r|   r†   Ú	DUP_FlintÚ_newÚ
DMP_Pythonr–   s       r…   r•   zDMP.new›   s?   € ô ÐØ�aŠxÔ3°CÔ8Ü —~‘~ c¨3°Ó4Ð4ä�‰˜s C¨Ó-Ð-r‡   c                ó>   — t        ddd¬«       | j                  «       S )z!Get the representation of ``f``. ay  
        Accessing the ``DMP.rep`` attribute is deprecated. The internal
        representation of ``DMP`` instances can now be ``DUP_Flint`` when the
        ground types are ``flint``. In this case the ``DMP`` instance does not
        have a ``rep`` attribute. Use ``DMP.to_list()`` instead. Using
        ``DMP.to_list()`` also works in previous versions of SymPy.
        z1.13zdmp-rep)Údeprecated_since_versionÚactive_deprecations_target)r   Úto_list©Úfs    r…   r˜   zDMP.rep§   s'   € ô 	"ð #ð &,Ø'0õ		
ð �y‰y‹{Ðr‡   c                óä   — t         �it        | t        «      rY| j                  dk(  rJt	        | j
                  «      r5t        j                  | j                  | j
                  | j                  «      S | S )zÇConvert to DUP_Flint if possible.

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

        This is needed for hashing.
        rÉ   r£   s    r…   rÝ   zDMP.to_tuple>  s
   € ô "Ð!r‡   c                óT   — | j                  | j                  j                  «       «      S )zMake the ground domain a ring. )rÇ   r�   Úget_ringr£   s    r…   Úto_ringzDMP.to_ringF  s   € à�y‰y˜Ÿ™Ÿ™Ó)Ó*Ð*r‡   c                óT   — | j                  | j                  j                  «       «      S )z Make the ground domain a field. )rÇ   r�   Ú	get_fieldr£   s    r…   Úto_fieldzDMP.to_fieldJ  ó   € à�y‰y˜Ÿ™Ÿ™Ó*Ó+Ð+r‡   c                óT   — | j                  | j                  j                  «       «      S )zMake the ground domain exact. )rÇ   r�   Ú	get_exactr£   s    r…   Úto_exactzDMP.to_exactN  r  r‡   c                óh   — | j                   s|s| j                  ||«      S | j                  |||«      S ©z1Take a continuous subsequence of terms of ``f``. )r�   Ú_sliceÚ
_slice_lev©r¤   ÚmÚnÚjs       r…   Úslicez	DMP.sliceR  s.   € à�uŠu™QØ—8‘8˜A˜q“>Ð!à—<‘<  1 aÓ(Ð(r‡   c                ó   — t         ‚r~   rÉ   )r¤   r  r  s      r…   r  z
DMP._sliceY  rË   r‡   c                ó   — t         ‚r~   rÉ   r  s       r…   r  zDMP._slice_lev\  rË   r‡   c                óX   — | j                  |¬«      D ��cg c]  \  }}|‘Œ	 c}}S c c}}w )z;Returns all non-zero coefficients from ``f`` in lex order. ©Úorder©Úterms)r¤   r   Ú_r­   s       r…   r¿   z
DMP.coeffs_  ó%   € à Ÿw™w¨U˜wÓ3×5‘t�q˜!’Ó5Ð5ùÓ5ó   –&c                óX   — | j                  |¬«      D ��cg c]  \  }}|‘Œ	 c}}S c c}}w )z8Returns all non-zero monomials from ``f`` in lex order. r  r!  )r¤   r   r  r#  s       r…   r¾   z
DMP.monomsc  r$  r%  c                ó”   — | j                   r+d| j                  dz   z  }|| j                  j                  fgS | j	                  |¬«      S )ú4Returns all non-zero terms from ``f`` in lex order. ©r   r¯   r  )Úis_zeror�   r�   rÎ   Ú_terms)r¤   r   Ú
zero_monoms      r…   r"  z	DMP.termsg  sB   € à�9Š9Ø˜qŸu™u q™yÑ)ˆJØ §¡§¡Ð,Ð-Ð-à—8‘8 %�8Ó(Ð(r‡   c                ó   — t         ‚r~   rÉ   ©r¤   r   s     r…   r+  z
DMP._termso  rË   r‡   c                ó”   — | j                   rt        d«      ‚| s| j                  j                  gS t	        | j                  «       «      S )z%Returns all coefficients from ``f``. ú&multivariate polynomials not supported)r�   r{   r�   rÎ   r“   r¢   r£   s    r…   Ú
all_coeffszDMP.all_coeffsr  s9   € à�5Š5Ü!Ð"JÓKÐKáØ—E‘E—J‘J�<Ðä˜Ÿ	™	›Ó$Ð$r‡   c                óÌ   — | j                   rt        d«      ‚| j                  «       }|dk  rdgS t        | j	                  «       «      D ��cg c]  \  }}||z
  f‘Œ c}}S c c}}w )z"Returns all monomials from ``f``. r0  r   r)  )r�   r{   ÚdegreeÚ	enumerater¢   ©r¤   r  Úir­   s       r…   Ú
all_monomszDMP.all_monoms|  sW   € à�5Š5Ü!Ð"JÓKÐKà�H‰H‹JˆàˆqŠ5Ø�6ˆMä*3°A·I±I³KÓ*@×B¡$ ! Q�a˜!‘e’XÓBÐBùÓBs   ÁA c                óü   — | j                   rt        d«      ‚| j                  «       }|dk  rd| j                  j                  fgS t        | j                  «       «      D ��cg c]  \  }}||z
  f|f‘Œ c}}S c c}}w )z Returns all terms from a ``f``. r0  r   r)  )r�   r{   r3  r�   rÎ   r4  r¢   r5  s       r…   Ú	all_termszDMP.all_termsˆ  sj   € à�5Š5Ü!Ð"JÓKÐKà�H‰H‹JˆàˆqŠ5Ø˜1Ÿ5™5Ÿ:™:Ð&Ð'Ð'ä/8¸¿¹»Ó/E×G¡t q¨!�q˜1‘u�h ’]ÓGÐGùÓGs   Á"A8c                ó>   — | j                  «       j                  «       S ©z-Convert algebraic coefficients to rationals. )Ú_liftr§   r£   s    r…   ÚliftzDMP.lift”  s   € à�w‰w‹y× Ñ Ó"Ð"r‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   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�   rG  s      r…   Úejectz	DMP.eject£  rè   r‡   c                óL   — | j                  «       \  }}||j                  «       fS )ap  
        Remove useless generators from ``f``.

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

        Examples
        ========

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

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

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

        Examples
        ========

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

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

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

        )Ú_permute©r¤   ÚPs     r…   ÚpermutezDMP.permute½  s   € ð" �z‰z˜!‹}Ðr‡   c                ó   — t         ‚r~   rÉ   rW  s     r…   rV  zDMP._permuteÐ  rË   r‡   c                ó   — t         ‚©z/Remove GCD of terms from the polynomial ``f``. rÉ   r£   s    r…   Ú	terms_gcdzDMP.terms_gcdÓ  rè   r‡   c                ó   — t         ‚©z)Make all coefficients in ``f`` positive. rÉ   r£   s    r…   ÚabszDMP.abs×  rè   r‡   c                ó   — t         ‚©ú"Negate all coefficients in ``f``. rÉ   r£   s    r…   ÚnegzDMP.negÛ  rè   r‡   c                óV   — | j                  | j                  j                  |«      «      S ©z.Add an element of the ground domain to ``f``. )Ú_add_groundr�   rÇ   ©r¤   r­   s     r…   Ú
add_groundzDMP.add_groundß  ó   € à�}‰}˜QŸU™UŸ]™]¨1Ó-Ó.Ð.r‡   c                óV   — | j                  | j                  j                  |«      «      S ©z5Subtract an element of the ground domain from ``f``. )Ú_sub_groundr�   rÇ   rh  s     r…   Ú
sub_groundzDMP.sub_groundã  rj  r‡   c                óV   — | j                  | j                  j                  |«      «      S ©z5Multiply ``f`` by a an element of the ground domain. )Ú_mul_groundr�   rÇ   rh  s     r…   Ú
mul_groundzDMP.mul_groundç  rj  r‡   c                óV   — | j                  | j                  j                  |«      «      S ©z8Quotient of ``f`` by a an element of the ground domain. )Ú_quo_groundr�   rÇ   rh  s     r…   Ú
quo_groundzDMP.quo_groundë  rj  r‡   c                óV   — | j                  | j                  j                  |«      «      S ©z>Exact quotient of ``f`` by a an element of the ground domain. )Ú_exquo_groundr�   rÇ   rh  s     r…   Úexquo_groundzDMP.exquo_groundï  s   € à�‰˜qŸu™uŸ}™}¨QÓ/Ó0Ð0r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z2Add two multivariate polynomials ``f`` and ``g``. )rð   Ú_add©r¤   rï   rR  ÚGs       r…   ÚaddzDMP.addó  ó!   € à�{‰{˜1‹~‰ˆˆ1Ø�v‰v�a‹yÐr‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Subtract two multivariate polynomials ``f`` and ``g``. )rð   Ú_subr~  s       r…   ÚsubzDMP.subø  r�  r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Multiply two multivariate polynomials ``f`` and ``g``. )rð   Ú_mulr~  s       r…   ÚmulzDMP.mulý  r�  r‡   c                ó"   — | j                  «       S ©ú(Square a multivariate polynomial ``f``. )Ú_sqrr£   s    r…   ÚsqrzDMP.sqr  s   € à�v‰v‹xˆr‡   c                ór   — t        |t        «      st        dt        |«      z  «      ‚| j	                  |«      S )ú+Raise ``f`` to a non-negative power ``n``. ú``int`` expected, got %s)r’   rŽ   Ú	TypeErrorr”   Ú_pow©r¤   r  s     r…   ÚpowzDMP.pow  s/   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAØ�v‰v�a‹yÐr‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú/Polynomial pseudo-division of ``f`` and ``g``. )rð   Ú_pdivr~  s       r…   ÚpdivzDMP.pdiv  ó!   € à�{‰{˜1‹~‰ˆˆ1Ø�w‰w�q‹zÐr‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú0Polynomial pseudo-remainder of ``f`` and ``g``. )rð   Ú_premr~  s       r…   ÚpremzDMP.prem  r›  r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú/Polynomial pseudo-quotient of ``f`` and ``g``. )rð   Ú_pquor~  s       r…   ÚpquozDMP.pquo  r›  r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú5Polynomial exact pseudo-quotient of ``f`` and ``g``. )rð   Ú_pexquor~  s       r…   Úpexquoz
DMP.pexquo  s!   € à�{‰{˜1‹~‰ˆˆ1Ø�y‰y˜‹|Ðr‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Polynomial division with remainder of ``f`` and ``g``. )rð   Ú_divr~  s       r…   ÚdivzDMP.div   r�  r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z2Computes polynomial remainder of ``f`` and ``g``. )rð   Ú_remr~  s       r…   ÚremzDMP.rem%  r�  r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z1Computes polynomial quotient of ``f`` and ``g``. )rð   Ú_quor~  s       r…   ÚquozDMP.quo*  r�  r‡   c                óL   — | j                  |«      \  }}|j                  |«      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É   rh  s     r…   rg  zDMP._add_ground4  rË   r‡   c                ó   — t         ‚r~   rÉ   rh  s     r…   rm  zDMP._sub_ground7  rË   r‡   c                ó   — t         ‚r~   rÉ   rh  s     r…   rq  zDMP._mul_ground:  rË   r‡   c                ó   — t         ‚r~   rÉ   rh  s     r…   ru  zDMP._quo_ground=  rË   r‡   c                ó   — t         ‚r~   rÉ   rh  s     r…   ry  zDMP._exquo_ground@  rË   r‡   c                ó   — t         ‚r~   rÉ   ©r¤   rï   s     r…   r}  zDMP._addC  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r„  zDMP._subF  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rˆ  zDMP._mulI  rË   r‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   r�  zDMP._sqrL  rË   r‡   c                ó   — t         ‚r~   rÉ   r”  s     r…   r“  zDMP._powO  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r™  z	DMP._pdivR  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rŸ  z	DMP._premU  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r¤  z	DMP._pquoX  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r©  zDMP._pexquo[  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._rema  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rµ  zDMP._quod  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r¹  z
DMP._exquog  rË   r‡   c                ór   — t        |t        «      st        dt        |«      z  «      ‚| j	                  |«      S )ú0Returns the leading degree of ``f`` in ``x_j``. r‘  )r’   rŽ   r’  r”   Ú_degree©r¤   r  s     r…   r3  z
DMP.degreej  s/   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�y‰y˜‹|Ðr‡   c                ó   — t         ‚r~   rÉ   rÑ  s     r…   rÐ  zDMP._degreeq  rË   r‡   c                ó   — t         ‚©z$Returns a list of degrees of ``f``. rÉ   r£   s    r…   Údegree_listzDMP.degree_listt  rè   r‡   c                ó   — t         ‚©ú#Returns the total degree of ``f``. rÉ   r£   s    r…   Útotal_degreezDMP.total_degreex  rè   r‡   c                ó´  — | j                  «       }i }|t        | j                  «       d   d   «      k(  }| j                  «       D ][  }t        |d   «      }||k  r||z
  }nd}|r|d   ||d   |fz   <   Œ0t	        |d   «      }||xx   |z  cc<   |d   |t        |«      <   Œ] t        j                  || j                  t        |«      z   | j                  «      S )z&Return homogeneous polynomial of ``f``r   r¯   )rÙ  Úlenr"  Úsumr“   ÚtuplerŒ   r¶   r�   rŽ   r�   )	r¤   ÚsÚtdÚresultÚ
new_symbolÚtermÚdr6  Úls	            r…   Ú
homogenizezDMP.homogenize|  sÔ   € à�^‰^ÓˆØˆØœ3˜qŸw™w›y¨™|¨A™Ó/Ñ/ˆ
Ø—G‘G“Iò 	+ˆDÜ�D˜‘G“ˆAØ�2ŠvØ˜‘F‘à�ÙØ)-¨a©��t˜A‘w ! ‘~Ò&ä˜˜a™“M�Ø�!“˜‘	“Ø#'¨¡7�”u˜Q“xÒ ð	+ô �}‰}˜V Q§U¡U¬S°«_Ñ%<¸a¿e¹eÓDÐDr‡   c                óš   — | j                   rt         S | j                  «       }t        |d   «      }|D ]  }t        |«      }||k7  sŒ y |S )z(Returns the homogeneous order of ``f``. r   N)r*  r   r¾   rÜ  )r¤   r¾   ÚtdegÚmonomÚ_tdegs        r…   Úhomogeneous_orderzDMP.homogeneous_order�  sQ   € à�9Š9Ü�3ˆJà—‘“ˆÜ�6˜!‘9‹~ˆàò 	ˆEÜ˜“JˆEà˜‹}Ùð		ð ˆr‡   c                ó   — t         ‚©z*Returns the leading coefficient of ``f``. rÉ   r£   s    r…   ÚLCzDMP.LCŸ  rè   r‡   c                ó   — t         ‚©ú+Returns the trailing coefficient of ``f``. rÉ   r£   s    r…   ÚTCzDMP.TC£  rè   r‡   c                ó^   — t        d„ |D «       «      r| j                  |«      S t        d«      ‚)ú+Returns the ``n``-th coefficient of ``f``. c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr~   )r’   rŽ   )r¬   r  s     r…   r®   zDMP.nth.<locals>.<genexpr>©  s   è ø€ Ò- aŒz˜!œS×!Ñ-ùs   ‚za sequence of integers expected)r°   Ú_nthr’  ©r¤   ÚNs     r…   ÚnthzDMP.nth§  s*   € äÑ-¨1Ô-Ô-Ø—6‘6˜!“9ÐäÐ=Ó>Ð>r‡   c                ó   — t         ‚r~   rÉ   rö  s     r…   rõ  zDMP._nth®  rË   r‡   c                ó   — t         ‚©zReturns maximum norm of ``f``. rÉ   r£   s    r…   Úmax_normzDMP.max_norm±  rè   r‡   c                ó   — t         ‚©zReturns l1 norm of ``f``. rÉ   r£   s    r…   Úl1_normzDMP.l1_normµ  rè   r‡   c                ó   — t         ‚©z!Return squared l2 norm of ``f``. rÉ   r£   s    r…   Úl2_norm_squaredzDMP.l2_norm_squared¹  rè   r‡   c                ó   — t         ‚©z0Clear denominators, but keep the ground domain. rÉ   r£   s    r…   Úclear_denomszDMP.clear_denoms½  rè   r‡   c                óÂ   — t        |t        «      st        dt        |«      z  «      ‚t        |t        «      st        dt        |«      z  «      ‚| j	                  ||«      S )úEComputes the ``m``-th order indefinite integral of ``f`` in ``x_j``. r‘  )r’   rŽ   r’  r”   Ú
_integrate©r¤   r  r  s      r…   Ú	integratezDMP.integrateÁ  sQ   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�|‰|˜A˜qÓ!Ð!r‡   c                ó   — t         ‚r~   rÉ   r	  s      r…   r  zDMP._integrateË  rË   r‡   c                óÂ   — t        |t        «      st        dt        |«      z  «      ‚t        |t        «      st        dt        |«      z  «      ‚| j	                  ||«      S )ú<Computes the ``m``-th order derivative of ``f`` in ``x_j``. r‘  )r’   rŽ   r’  r”   Ú_diffr	  s      r…   ÚdiffzDMP.diffÎ  sP   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�w‰w�q˜!‹}Ðr‡   c                ó   — t         ‚r~   rÉ   r	  s      r…   r  z	DMP._diffØ  rË   r‡   c                óø   — t        |t        «      st        dt        |«      z  «      ‚d|cxk  r| j                  k  sn t        d|z  «      ‚| j                  r| j                  ||«      S | j                  |«      S )z5Evaluates ``f`` at the given point ``a`` in ``x_j``. r‘  r   zinvalid variable index %s)r’   rŽ   r’  r”   r�   Ú
ValueErrorÚ	_eval_levÚ_eval©r¤   Úar  s      r…   ÚevalzDMP.evalÛ  sg   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAØ�q”/˜AŸE™E”/ÜÐ8¸1Ñ<Ó=Ð=à�5Š5Ø—;‘;˜q !Ó$Ð$à—7‘7˜1“:Ðr‡   c                ó   — t         ‚r~   rÉ   ©r¤   r  s     r…   r  z	DMP._evalç  rË   r‡   c                ó   — t         ‚r~   rÉ   r  s      r…   r  zDMP._eval_levê  rË   r‡   c                óz   — | j                  |«      \  }}|j                  rt        d«      ‚|j                  |«      S )ú2Half extended Euclidean algorithm, if univariate. úunivariate polynomial expected)rð   r�   r  Ú_half_gcdexr~  s       r…   Ú
half_gcdexzDMP.half_gcdexí  s5   € à�{‰{˜1‹~‰ˆˆ1à�5Š5ÜÐ=Ó>Ð>à�}‰}˜QÓÐr‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r  zDMP._half_gcdexö  rË   r‡   c                ó¼   — | j                  |«      \  }}|j                  rt        d«      ‚|j                  j                  st        d«      ‚|j                  |«      S )ú-Extended Euclidean algorithm, if univariate. r  zground domain must be a field)rð   r�   r  r�   Úis_Fieldr   Ú_gcdexr~  s       r…   Úgcdexz	DMP.gcdexù  sK   € à�{‰{˜1‹~‰ˆˆ1à�5Š5ÜÐ=Ó>Ð>à�u‰u�~Š~ÜÐ=Ó>Ð>à�x‰x˜‹{Ðr‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r$  z
DMP._gcdex  rË   r‡   c                óz   — | j                  |«      \  }}|j                  rt        d«      ‚|j                  |«      S )ú(Invert ``f`` modulo ``g``, if possible. r  )rð   r�   r  Ú_invertr~  s       r…   Úinvertz
DMP.invert  s4   € à�{‰{˜1‹~‰ˆˆ1à�5Š5ÜÐ=Ó>Ð>à�y‰y˜‹|Ðr‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r)  zDMP._invert  rË   r‡   c                óR   — | j                   rt        d«      ‚| j                  |«      S )ú"Compute ``f**(-1)`` mod ``x**n``. r  )r�   r  Ú_revertr”  s     r…   Úrevertz
DMP.revert  s#   € à�5Š5ÜÐ=Ó>Ð>à�y‰y˜‹|Ðr‡   c                ó   — t         ‚r~   rÉ   r”  s     r…   r.  zDMP._revert  rË   r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z7Computes subresultant PRS sequence of ``f`` and ``g``. )rð   Ú_subresultantsr~  s       r…   ÚsubresultantszDMP.subresultants  s$   € à�{‰{˜1‹~‰ˆˆ1Ø×Ñ Ó"Ð"r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   r3  zDMP._subresultants#  rË   r‡   c                ór   — | j                  |«      \  }}|r|j                  |«      S |j                  |«      S ©ú/Computes resultant of ``f`` and ``g`` via PRS. )rð   Ú_resultant_includePRSÚ
_resultant)r¤   rï   Ú
includePRSrR  r  s        r…   Ú	resultantzDMP.resultant&  s5   € à�{‰{˜1‹~‰ˆˆ1ÙØ×*Ñ*¨1Ó-Ð-à—<‘< “?Ð"r‡   c                ó   — t         ‚r~   rÉ   )r¤   rï   r;  s      r…   r:  zDMP._resultant.  rË   r‡   c                ó   — t         ‚©ú Computes discriminant of ``f``. rÉ   r£   s    r…   ÚdiscriminantzDMP.discriminant1  rè   r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z4Returns GCD of ``f`` and ``g`` and their cofactors. )rð   Ú
_cofactorsr~  s       r…   Ú	cofactorszDMP.cofactors5  s!   € à�{‰{˜1‹~‰ˆˆ1Ø�|‰|˜A‹Ðr‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rD  zDMP._cofactors:  rË   r‡   c                óL   — | j                  |«      \  }}|j                  |«      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…   rI  zDMP._gcdB  rË   r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©ú+Returns polynomial LCM of ``f`` and ``g``. )rð   Ú_lcmr~  s       r…   ÚlcmzDMP.lcmE  r�  r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rO  zDMP._lcmJ  rË   r‡   c                ór   — | j                  |«      \  }}|r|j                  |«      S |j                  |«      S ©ú6Cancel common factors in a rational function ``f/g``. )rð   Ú_cancel_includeÚ_cancel)r¤   rï   ÚincluderR  r  s        r…   Úcancelz
DMP.cancelM  s5   € à�{‰{˜1‹~‰ˆˆ1áØ×$Ñ$ QÓ'Ð'à—9‘9˜Q“<Ðr‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rV  zDMP._cancelV  rË   r‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rU  zDMP._cancel_includeY  rË   r‡   c                óV   — | j                  | j                  j                  |«      «      S ©z&Reduce ``f`` modulo a constant ``p``. )Ú_truncr�   rÇ   ©r¤   Úps     r…   Útruncz	DMP.trunc\  s   € à�x‰x˜Ÿ™Ÿ™ aÓ(Ó)Ð)r‡   c                ó   — t         ‚r~   rÉ   r^  s     r…   r]  z
DMP._trunc`  rË   r‡   c                ó   — t         ‚©z'Divides all coefficients by ``LC(f)``. rÉ   r£   s    r…   Úmonicz	DMP.monicc  rè   r‡   c                ó   — t         ‚©z(Returns GCD of polynomial coefficients. rÉ   r£   s    r…   ÚcontentzDMP.contentg  rè   r‡   c                ó   — t         ‚©z/Returns content and a primitive form of ``f``. rÉ   r£   s    r…   Ú	primitivezDMP.primitivek  rè   r‡   c                óL   — | j                  |«      \  }}|j                  |«      S ©z4Computes functional composition of ``f`` and ``g``. )rð   Ú_composer~  s       r…   ÚcomposezDMP.composeo  s!   € à�{‰{˜1‹~‰ˆˆ1Ø�z‰z˜!‹}Ðr‡   c                ó   — t         ‚r~   rÉ   rÁ  s     r…   rm  zDMP._composet  rË   r‡   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú,Computes functional decomposition of ``f``. r  )r�   r  Ú
_decomposer£   s    r…   Ú	decomposezDMP.decomposew  s!   € à�5Š5ÜÐ=Ó>Ð>à�|‰|‹~Ðr‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   rr  zDMP._decompose~  rË   r‡   c                ó„   — | j                   rt        d«      ‚| j                  | j                  j	                  |«      «      S )ú/Efficiently compute Taylor shift ``f(x + a)``. r  )r�   r  Ú_shiftr�   rÇ   r  s     r…   Úshiftz	DMP.shift�  s1   € à�5Š5ÜÐ=Ó>Ð>à�x‰x˜Ÿ™Ÿ™ aÓ(Ó)Ð)r‡   c                ó~   — |D �cg c]  }| j                   j                  |«      ‘Œ }}| j                  |«      S c c}w ©z/Efficiently compute Taylor shift ``f(X + A)``. )r�   rÇ   Ú_shift_list)r¤   r  Úais      r…   Ú
shift_listzDMP.shift_listˆ  s6   € à)*Ö+ 2ˆQ�U‰U�]‰]˜2ÕÐ+ˆÐ+Ø�}‰}˜QÓÐùò ,s   …":c                ó   — t         ‚r~   rÉ   r  s     r…   rw  z
DMP._shift�  rË   r‡   c                óÌ   — | j                   rt        d«      ‚|j                  |«      \  }}| j                  |«      \  }}|j                  |«      \  }}|j                  ||«      S )ú5Evaluate functional transformation ``q**n * f(p/q)``.r  )r�   r  rð   Ú
_transform)r¤   r_  ÚqrX  ÚQrR  s         r…   Ú	transformzDMP.transform�  sY   € à�5Š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                óP   — | j                   rt        d«      ‚| j                  «       S )ú&Computes the Sturm sequence of ``f``. r  )r�   r  Ú_sturmr£   s    r…   Ústurmz	DMP.sturmž  s!   € à�5Š5ÜÐ=Ó>Ð>à�x‰x‹zÐr‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   r‰  z
DMP._sturm¥  rË   r‡   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú7Computes the Cauchy upper bound on the roots of ``f``. r  )r�   r  Ú_cauchy_upper_boundr£   s    r…   Úcauchy_upper_boundzDMP.cauchy_upper_bound¨  ó$   € à�5Š5ÜÐ=Ó>Ð>à×$Ñ$Ó&Ð&r‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   rŽ  zDMP._cauchy_upper_bound¯  rË   r‡   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú?Computes the Cauchy lower bound on the nonzero roots of ``f``. r  )r�   r  Ú_cauchy_lower_boundr£   s    r…   Úcauchy_lower_boundzDMP.cauchy_lower_bound²  r�  r‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   r”  zDMP._cauchy_lower_bound¹  rË   r‡   c                óP   — | j                   rt        d«      ‚| j                  «       S )úBComputes the squared Mignotte bound on root separations of ``f``. r  )r�   r  Ú_mignotte_sep_bound_squaredr£   s    r…   Úmignotte_sep_bound_squaredzDMP.mignotte_sep_bound_squared¼  s$   € à�5Š5ÜÐ=Ó>Ð>à×,Ñ,Ó.Ð.r‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   r™  zDMP._mignotte_sep_bound_squaredÃ  rË   r‡   c                óP   — | j                   rt        d«      ‚| j                  «       S )ú4Computes greatest factorial factorization of ``f``. r  )r�   r  Ú	_gff_listr£   s    r…   Úgff_listzDMP.gff_listÆ  s!   € à�5Š5ÜÐ=Ó>Ð>à�{‰{‹}Ðr‡   c                ó   — t         ‚r~   rÉ   r£   s    r…   rž  zDMP._gff_listÍ  rË   r‡   c                ó   — t         ‚©zComputes ``Norm(f)``.rÉ   r£   s    r…   ÚnormzDMP.normÐ  rè   r‡   c                ó   — t         ‚©z$Computes square-free norm of ``f``. rÉ   r£   s    r…   Úsqf_normzDMP.sqf_normÔ  rè   r‡   c                ó   — t         ‚©z$Computes square-free part of ``f``. rÉ   r£   s    r…   Úsqf_partzDMP.sqf_partØ  rè   r‡   c                ó   — t         ‚©ú0Returns a list of square-free factors of ``f``. rÉ   ©r¤   r°   s     r…   Úsqf_listzDMP.sqf_listÜ  rè   r‡   c                ó   — t         ‚r«  rÉ   r­  s     r…   Úsqf_list_includezDMP.sqf_list_includeà  rè   r‡   c                ó   — t         ‚©ú0Returns a list of irreducible factors of ``f``. rÉ   r£   s    r…   Úfactor_listzDMP.factor_listä  rè   r‡   c                ó   — t         ‚r²  rÉ   r£   s    r…   Úfactor_list_includezDMP.factor_list_includeè  rè   r‡   c                óð   — | j                   rt        d«      ‚|r|r| j                  ||||¬«      S |r|s| j                  ||||¬«      S |s|r| j	                  ||||¬«      S | j                  ||||¬«      S )z0Compute isolating intervals for roots of ``f``. z1Cannot isolate roots of a multivariate polynomial©ÚepsÚinfÚsupÚfast)r�   r{   Ú_isolate_all_roots_sqfÚ_isolate_all_rootsÚ_isolate_real_roots_sqfÚ_isolate_real_roots)r¤   r°   r¹  rº  r»  r¼  Úsqfs          r…   Ú	intervalszDMP.intervalsì  sŒ   € à�5Š5Ü!Ð"UÓVÐVá‘3Ø×+Ñ+°¸À#ÈDÐ+ÓQÐQÙ™Ø×'Ñ'¨C°S¸cÈÐ'ÓMÐMÙ™Ø×,Ñ,°¸#À3ÈTÐ,ÓRÐRà×(Ñ(¨S°c¸sÈÐ(ÓNÐNr‡   c                ó   — t         ‚r~   rÉ   ©r¤   r¹  rº  r»  r¼  s        r…   r¾  zDMP._isolate_all_rootsú  rË   r‡   c                ó   — t         ‚r~   rÉ   rÄ  s        r…   r½  zDMP._isolate_all_roots_sqfý  rË   r‡   c                ó   — t         ‚r~   rÉ   rÄ  s        r…   rÀ  zDMP._isolate_real_roots   rË   r‡   c                ó   — t         ‚r~   rÉ   rÄ  s        r…   r¿  zDMP._isolate_real_roots_sqf  rË   r‡   c                ó\   — | j                   rt        d«      ‚| j                  |||||¬«      S )zu
        Refine an isolating interval to the given precision.

        ``eps`` should be a rational number.

        z1Cannot refine a root of a multivariate polynomial©r¹  Ústepsr¼  )r�   r{   Ú_refine_real_root©r¤   rÞ  Útr¹  rÊ  r¼  s         r…   Úrefine_rootzDMP.refine_root  s;   € ð �5Š5Ü!ØCóEð Eð ×"Ñ" 1 a¨S¸ÀDÐ"ÓIÐIr‡   c                ó   — t         ‚r~   rÉ   rÌ  s         r…   rË  zDMP._refine_real_root  rË   r‡   c                ó   — t         ‚)ú<Return the number of real roots of ``f`` in ``[inf, sup]``. rÉ   ©r¤   rº  r»  s      r…   Úcount_real_rootszDMP.count_real_roots  rè   r‡   c                ó   — t         ‚)ú?Return the number of complex roots of ``f`` in ``[inf, sup]``. rÉ   rÒ  s      r…   Úcount_complex_rootszDMP.count_complex_roots  rè   r‡   c                ó   — t         ‚©z0Returns ``True`` if ``f`` is a zero polynomial. rÉ   r£   s    r…   r*  zDMP.is_zero  ó
   € ô "Ð!r‡   c                ó   — t         ‚©z0Returns ``True`` if ``f`` is a unit polynomial. rÉ   r£   s    r…   Úis_onez
DMP.is_one#  rÙ  r‡   c                ó   — t         ‚©ú>Returns ``True`` if ``f`` is an element of the ground domain. rÉ   r£   s    r…   Ú	is_groundzDMP.is_ground(  rÙ  r‡   c                ó   — t         ‚©ú7Returns ``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_monic2  rÙ  r‡   c                ó   — t         ‚©zAReturns ``True`` if the GCD of the coefficients of ``f`` is one. rÉ   r£   s    r…   Úis_primitivezDMP.is_primitive7  rÙ  r‡   c                ó   — t         ‚)ú:Returns ``True`` if ``f`` is linear in all its variables. rÉ   r£   s    r…   Ú	is_linearzDMP.is_linear<  rÙ  r‡   c                ó   — t         ‚)ú=Returns ``True`` if ``f`` is quadratic in all its variables. rÉ   r£   s    r…   Úis_quadraticzDMP.is_quadraticA  rÙ  r‡   c                ó   — t         ‚)ú8Returns ``True`` if ``f`` is zero or has only one term. rÉ   r£   s    r…   Úis_monomialzDMP.is_monomialF  rÙ  r‡   c                ó   — t         ‚©ú7Returns ``True`` if ``f`` is a homogeneous polynomial. rÉ   r£   s    r…   Úis_homogeneouszDMP.is_homogeneousK  rÙ  r‡   c                ó   — t         ‚©ú:Returns ``True`` if ``f`` has no factors over its domain. rÉ   r£   s    r…   Úis_irreduciblezDMP.is_irreducibleP  rÙ  r‡   c                ó   — t         ‚)ú6Returns ``True`` if ``f`` is a cyclotomic polynomial. rÉ   r£   s    r…   Úis_cyclotomiczDMP.is_cyclotomicU  rÙ  r‡   c                ó"   — | j                  «       S r~   )r`  r£   s    r…   Ú__abs__zDMP.__abs__Z  ó   € Ø�u‰u‹wˆr‡   c                ó"   — | j                  «       S r~   ©rd  r£   s    r…   Ú__neg__zDMP.__neg__]  r  r‡   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr~   )r’   rŒ   r€  ri  r   ÚNotImplementedrÁ  s     r…   Ú__add__zDMP.__add__`  óA   € Ü�aœÔØ—5‘5˜“8ˆOð&Ø—|‘| A“Ð&øÜ!ò &Ü%Ò%ð&úó   £4 ´AÁAc                ó$   — | j                  |«      S r~   ©r  rÁ  s     r…   Ú__radd__zDMP.__radd__i  ó   € Ø�y‰y˜‹|Ðr‡   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr~   )r’   rŒ   r…  rn  r   r  rÁ  s     r…   Ú__sub__zDMP.__sub__l  r  r	  c                ó&   — |  j                  |«      S r~   r  rÁ  s     r…   Ú__rsub__zDMP.__rsub__u  ó   € Ø��|‰|˜A‹Ðr‡   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr~   )r’   rŒ   r‰  rr  r   r  rÁ  s     r…   Ú__mul__zDMP.__mul__x  r  r	  c                ó$   — | j                  |«      S r~   ©r  rÁ  s     r…   Ú__rmul__zDMP.__rmul__�  r  r‡   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr~   )r’   rŒ   rº  rr  r   r  rÁ  s     r…   Ú__truediv__zDMP.__truediv__„  sB   € Ü�aœÔØ—7‘7˜1“:Ðð&Ø—|‘| A“Ð&øÜ!ò &Ü%Ò%ð&úr	  c                óÌ   — t        |t        «      r|j                  | «      S 	 | j                  «       j	                  |«      j                  | «      S # t
        $ r	 t        cY S w xY wr~   )r’   rŒ   rº  rÒ   rr  r   r  rÁ  s     r…   Ú__rtruediv__zDMP.__rtruediv__�  sV   € Ü�aœÔØ—7‘7˜1“:Ðð&Ø—v‘v“x×*Ñ*¨1Ó-×3Ñ3°AÓ6Ð6øÜ!ò &Ü%Ò%ð&ús   £-A ÁA#Á"A#c                ó$   — | j                  |«      S r~   ©r•  r”  s     r…   Ú__pow__zDMP.__pow__–  ó   € Ø�u‰u�Q‹xˆr‡   c                ó$   — | j                  |«      S r~   ©r®  rÁ  s     r…   Ú
__divmod__zDMP.__divmod__™  r  r‡   c                ó$   — | j                  |«      S r~   ©r²  rÁ  s     r…   Ú__mod__zDMP.__mod__œ  r  r‡   c                ó’   — t        |t        «      r| j                  |«      S 	 | j                  |«      S # t        $ r	 t
        cY S w xY wr~   )r’   rŒ   r¶  rv  r’  r  rÁ  s     r…   Ú__floordiv__zDMP.__floordiv__Ÿ  sA   € Ü�aœÔØ—5‘5˜“8ˆOð&Ø—|‘| A“Ð&øÜò &Ü%Ò%ð&úr	  c                ó¢   — | |u ryt        |t        «      st        S 	 | j                  |«      \  }}|j	                  |«      S # t
        $ r Y yw xY w)NTF)r’   rŒ   r  rð   Ú
_strict_eqrz   r~  s       r…   Ú__eq__z
DMP.__eq__¨  sV   € Ø�‰6ØÜ˜!œSÔ!Ü!Ð!ð	#Ø—;‘;˜q“>‰DˆAˆqð —<‘< “?Ð"øô !ò 	Ùð	ús   �A Á	AÁAc                ó   — t         ‚r~   rÉ   rÁ  s     r…   r)  zDMP._strict_eq´  rË   r‡   c                ó2   — |s| |k(  S | j                  |«      S r~   )r)  ©r¤   rï   Ústricts      r…   ÚeqzDMP.eq·  s   € ÙØ˜‘6ˆMà—<‘< “?Ð"r‡   c                ó*   — | j                  ||¬«       S )N)r.  )r/  r-  s      r…   ÚnezDMP.ne½  s   € Ø—4‘4˜ &�4Ó)Ð)Ð)r‡   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       k  S r~   ©rð   r¢   r~  s       r…   Ú__lt__z
DMP.__lt__À  ó*   € Ø�{‰{˜1‹~‰ˆˆ1Ø�y‰y‹{˜QŸY™Y›[Ñ(Ð(r‡   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       k  S r~   r3  r~  s       r…   Ú__le__z
DMP.__le__Ä  ó*   € Ø�{‰{˜1‹~‰ˆˆ1Ø�y‰y‹{˜aŸi™i›kÑ)Ð)r‡   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       kD  S r~   r3  r~  s       r…   Ú__gt__z
DMP.__gt__È  r5  r‡   c                ól   — | j                  |«      \  }}|j                  «       |j                  «       k\  S r~   r3  r~  s       r…   Ú__ge__z
DMP.__ge__Ì  r8  r‡   c                ó   — | j                    S r~   )r*  r£   s    r…   Ú__bool__zDMP.__bool__Ð  s   € Ø—9‘9ˆ}Ðr‡   r~   ©Fr)  ©r¯   r   ©T)FNNNFF)NNF©NN)ÓrÙ   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__annotations__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+  r1  r7  r9  r=  r<  rB  rH  rM  rS  rO  rY  rV  r]  r`  rd  ri  rn  rr  rv  rz  r€  r…  r‰  rŽ  r•  rš  r   r¥  rª  r®  r²  r¶  rº  rg  rm  rq  ru  ry  r}  r„  rˆ  r�  r“  r™  rŸ  r¤  r©  r­  r±  rµ  r¹  r3  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  r3  r<  r:  rA  rE  rD  rJ  rI  rP  rO  rX  rV  rU  r`  r]  rd  rg  rj  rn  rm  rs  rr  rx  r}  rw  r„  r�  rŠ  r‰  r�  rŽ  r•  r”  rš  r™  rŸ  rž  r£  r¦  r©  r®  r°  r´  r¶  rÂ  r¾  r½  rÀ  r¿  rÎ  rË  rÓ  rÖ  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  r4  r7  r:  r<  r>  rŠ   r‡   r…   rŒ   rŒ   Š   sR  … Ù3à€Ià	ƒHØ	ƒKó&ð ñ	.ó ð	.ð ñó ðò 
ð ñó ðð ñ&ó ð&ð ñCó ðCð ñ@ó ð@ð ñ>ó ð>ò3ò&"ð ñ,ó ð,ð ñ0ó ð0ò"òIòHò2ò"ò
óAóò0ò"ò"ò+ò,ò,ó)ò"ò"ó6ó6ó)ó"ò%ò
Cò
Hò#ò"ò"ó"ó"òò&"òò&"ò"ò"ò"ò/ò/ò/ò/ò1òò
ò
ò
òòò
ò
ò
ò
ò
ò
ò
ò
"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"óò"ò"ò"òEò&ò "ò"ò?ò"ò"ò"ò"ò"ó"ò"óò"ó
ò"ò"ò ò"ò
ò"òò"òò"ò#ò
"ó#ó"ò"òò
"òò
"òò
"ó ò"ò"ò*ò"ò"ò"ò"òò
"òò"ò*ò ò
"ò	"ò"òò"ò'ò"ò'ò"ò/ò"òò"ò"ò"ò"ó"ó"ò"ò"óOò"ò"ò"ò"óJò"ó"ó"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"òòò&òò&òò&òò&ò&òòòò&ò
#ò"ó#ó*ò)ò*ò)ò*ór‡   rŒ   c                  ó,  — e Zd ZdZdZed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zdod„Zd„ Zd„ Zdpd„Zdpd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-dqd,„Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7drd6„Z8drd7„Z9d8„ Z:d9„ Z;d:„ Z<d;„ Z=d<„ Z>d=„ Z?d>„ Z@d?„ ZAd@„ ZBdA„ ZCdB„ ZDdC„ ZEdD„ ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJdI„ ZKdJ„ ZLdK„ ZMdL„ ZNdM„ ZOdN„ ZPdO„ ZQdP„ ZRdQ„ ZSdR„ ZTdS„ ZUdT„ ZVdU„ ZWdV„ ZXdW„ ZYdpdX„ZZdpdY„Z[dZ„ Z\d[„ Z]d\„ Z^d]„ Z_d^„ Z`d_„ Zad`„ Zbdsda„Zcdsdb„Zdeedc„ «       Zfeedd„ «       Zgeede„ «       Zheedf„ «       Zieedg„ «       Zjeedh„ «       Zkeedi„ «       Zleedj„ «       Zmeedk„ «       Zneedl„ «       Zoeedm„ «       Zpeedn„ «       Zqy)trž   r�   )r¦   r�   r�   c                óZ   — t         j                  | «      }||_        ||_        ||_        |S r~   )Úobjectr™   r¦   r�   r�   )r—   r˜   r�   r�   Úobjs        r…   r�   zDMP_Python._newÙ  s*   € ä�n‰n˜SÓ!ˆØˆŒØˆŒØˆŒØˆ
r‡   c                óÐ   — t        | «      t        |«      k7  ry| j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r‰   )r”   r�   r�   r¦   rÁ  s     r…   r)  zDMP_Python._strict_eqá  sJ   € Ü�‹7”d˜1“gÒØØ�u‰u˜Ÿ™‰~ÒE !§%¡%¨1¯5©5¡.ÒE°Q·V±V¸q¿v¹vÑ5EÐEr‡   c                óP   — | j                  || j                  | j                  «      S )ú.Create a DMP out of the given representation. )r�   r�   r�   ©r¤   r˜   s     r…   ÚperzDMP_Python.peræ  s   € à�v‰v�c˜1Ÿ5™5 !§%¡%Ó(Ð(r‡   c                óx   — | j                  t        || j                  «      | j                  | j                  «      S rä   )r�   r    r�   r�   rå   s     r…   rç   zDMP_Python.ground_newê  s(   € à�v‰v”j ¨¯©Ó.°·±°q·u±uÓ=Ð=r‡   c                óN   — | j                  | j                  | j                  «      S r~   )rÐ   r�   r�   r£   s    r…   rÒ   zDMP_Python._oneî  s   € Ø�u‰u�Q—U‘U˜AŸE™EÓ"Ð"r‡   c                ó(  ‡ ‡‡— t        |t        «      r‰ j                  |j                  k7  rt        d‰ ›d|›�«      ‚‰ j                  |j                  k(  r9‰ j                  ‰ j                  ‰ j
                  ‰ j                  |j                  fS ‰ j                  ‰ j                  j                  |j                  «      cŠŠt        ‰ j                  ‰‰ j                  ‰«      }t        |j                  ‰|j                  ‰«      }ˆˆ ˆfd„}‰‰|||fS )z7Unify representations of two multivariate polynomials. rë   rì   c                ó*   •— ‰j                  | ‰‰«      S r~   )r�   )r˜   r�   r¤   r�   s    €€€r…   rR  zDMP_Python.unify.<locals>.per   s   ø€ Ø—v‘v˜c 3¨Ó,Ð,r‡   )	r’   rŒ   r�   rz   r�   rR  r¦   rí   r   )r¤   rï   rR  r  rR  r�   r�   s   `    @@r…   rí   zDMP_Python.unifyñ  sÉ   ú€ ô ˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—5‘5˜!Ÿ%™% §¡¨¯©°·±Ð6Ð6à—u‘u˜aŸe™eŸk™k¨!¯%©%Ó0ˆHˆC�ä˜AŸF™F C¨¯©°Ó4ˆAÜ˜AŸF™F C¨¯©°Ó4ˆAö-ð ˜˜S ! QÐ&Ð&r‡   c                ól   — t         j                  | j                  | j                  | j                  «      S )z)Convert ``f`` to a Flint representation. )rœ   r�   r¦   r�   r�   r£   s    r…   rÄ   zDMP_Python.to_DUP_Flint  s!   € ä�~‰~˜aŸf™f a§e¡e¨Q¯U©UÓ3Ð3r‡   c                ó,   — t        | j                  «      S r  )r“   r¦   r£   s    r…   r¢   zDMP_Python.to_list	  s   € ä�A—F‘F‹|Ðr‡   c                óB   — t        | j                  | j                  «      S ©zBConvert ``f`` to a tuple representation with native coefficients. )r1   r¦   r�   r£   s    r…   rÝ   zDMP_Python.to_tuple  s   € ä˜AŸF™F A§E¡EÓ*Ð*r‡   c                ó�   — | j                  t        | j                  | j                  | j                  |«      || j                  «      S )ú$Convert the ground domain of ``f``. )r�   r   r¦   r�   r�   rÆ   s     r…   rÂ   zDMP_Python._convert  s0   € à�v‰v”k !§&¡&¨!¯%©%°·±¸Ó<¸cÀ1Ç5Á5ÓIÐIr‡   c                ó”   — t        | j                  ||| j                  «      }| j                  || j                  | j                  «      S r  )r.   r¦   r�   r�   r�   )r¤   r  r  r˜   s       r…   r  zDMP_Python._slice  s5   € ä˜Ÿ™  1 a§e¡eÓ,ˆØ�v‰v�c˜1Ÿ5™5 !§%¡%Ó(Ð(r‡   c                ó¬   — t        | j                  |||| j                  | j                  «      }| j	                  || j                  | j                  «      S r  )r/   r¦   r�   r�   r�   )r¤   r  r  r  r˜   s        r…   r  zDMP_Python._slice_lev  s=   € ä˜1Ÿ6™6 1 a¨¨A¯E©E°1·5±5Ó9ˆØ�v‰v�c˜1Ÿ5™5 !§%¡%Ó(Ð(r‡   Nc                ó\   — t        | j                  | j                  | j                  |¬«      S )r(  r  )r,   r¦   r�   r�   r.  s     r…   r+  zDMP_Python._terms  s   € ä˜aŸf™f a§e¡e¨Q¯U©U¸%Ô@Ð@r‡   c                óº   — t        | j                  | j                  | j                  «      }| j	                  || j                  j                  | j                  «      S r;  )rY   r¦   r�   r�   r�   ©r¤   r±   s     r…   r<  zDMP_Python._lift#  s;   € ä�Q—V‘V˜QŸU™U A§E¡EÓ*ˆØ�v‰v�a˜Ÿ™Ÿ™ A§E¡EÓ*Ð*r‡   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS r@  )r(   r¦   r�   r�   rR  rP  s      r…   rB  zDMP_Python.deflate(  s2   € ä˜1Ÿ6™6 1§5¡5¨!¯%©%Ó0‰ˆˆ1Ø�!—%‘%˜“(ˆ{Ðr‡   c                ó°   — t        | j                  | j                  | j                  |¬«      \  }}| j	                  || j                  j                  |«      S )rE  ©rG  )r)   r¦   r�   r�   r�   )r¤   rG  rR  r�   s       r…   rH  zDMP_Python.inject-  s=   € ä˜AŸF™F A§E¡E¨1¯5©5¸Ô>‰ˆˆ3à�v‰v�a˜Ÿ™Ÿ™ CÓ(Ð(r‡   c                ó®   — t        | j                  | j                  ||¬«      }| j                  ||| j                  t	        |j
                  «      z
  «      S )rK  rd  )r*   r¦   r�   r�   rÛ  Úsymbols)r¤   r�   rG  rR  s       r…   rM  zDMP_Python.eject3  s?   € ä�a—f‘f˜aŸe™e S°Ô6ˆà�v‰v�a˜˜aŸe™e¤c¨#¯+©+Ó&6Ñ6Ó7Ð7r‡   c                óž   — t        | j                  | j                  | j                  «      \  }}}|| j	                  || j                  |«      fS ©z&Remove useless generators from ``f``. )r-   r¦   r�   r�   r�   )r¤   rQ  rR  Úus       r…   rO  zDMP_Python._exclude9  s>   € ä˜aŸf™f a§e¡e¨Q¯U©UÓ3‰ˆˆ1ˆaà�!—&‘&˜˜AŸE™E 1Ó%Ð%Ð%r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S ©z6Returns a polynomial in `K[x_{P(1)}, ..., x_{P(n)}]`. )rR  r0   r¦   r�   r�   rW  s     r…   rV  zDMP_Python._permute?  s(   € à�u‰u”[ §¡¨¨A¯E©E°1·5±5Ó9Ó:Ð:r‡   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS r\  )r+   r¦   r�   r�   rR  rP  s      r…   r]  zDMP_Python.terms_gcdC  s2   € ä˜QŸV™V Q§U¡U¨A¯E©EÓ2‰ˆˆ1Ø�!—%‘%˜“(ˆ{Ðr‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rf  )rR  r2   r¦   r�   r�   rh  s     r…   rg  zDMP_Python._add_groundH  ó(   € à�u‰u”^ A§F¡F¨A¨q¯u©u°a·e±eÓ<Ó=Ð=r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rl  )rR  r3   r¦   r�   r�   rh  s     r…   rm  zDMP_Python._sub_groundL  rn  r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rp  )rR  r4   r¦   r�   r�   rh  s     r…   rq  zDMP_Python._mul_groundP  rn  r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rt  )rR  r5   r¦   r�   r�   rh  s     r…   ru  zDMP_Python._quo_groundT  rn  r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rx  )rR  r6   r¦   r�   r�   rh  s     r…   ry  zDMP_Python._exquo_groundX  ó)   € à�u‰uÔ% a§f¡f¨a°·±¸¿¹Ó>Ó?Ð?r‡   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S r_  )rR  r7   r¦   r�   r�   r£   s    r…   r`  zDMP_Python.abs\  ó&   € à�u‰u”W˜QŸV™V Q§U¡U¨A¯E©EÓ2Ó3Ð3r‡   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S rb  )rR  r8   r¦   r�   r�   r£   s    r…   rd  zDMP_Python.neg`  ru  r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r|  )rR  r9   r¦   r�   r�   rÁ  s     r…   r}  zDMP_Python._addd  ó,   € à�u‰u”W˜QŸV™V Q§V¡V¨Q¯U©U°A·E±EÓ:Ó;Ð;r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rƒ  )rR  r:   r¦   r�   r�   rÁ  s     r…   r„  zDMP_Python._subh  rx  r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r‡  )rR  r;   r¦   r�   r�   rÁ  s     r…   rˆ  zDMP_Python._mull  rx  r‡   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S r‹  )rR  r<   r¦   r�   r�   r£   s    r…   rŽ  zDMP_Python.sqrp  ru  r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S ©r�  )rR  r=   r¦   r�   r�   r”  s     r…   r“  zDMP_Python._powt  s(   € à�u‰u”W˜QŸV™V Q¨¯©¨q¯u©uÓ5Ó6Ð6r‡   c                ó¸   — t        | j                  |j                  | j                  | j                  «      \  }}| j	                  |«      | j	                  |«      fS r—  )r>   r¦   r�   r�   rR  ©r¤   rï   r‚  r±   s       r…   r™  zDMP_Python._pdivx  sA   € ä˜Ÿ™ §¡¨¯©¨q¯u©uÓ5‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r�  )rR  r?   r¦   r�   r�   rÁ  s     r…   rŸ  zDMP_Python._prem}  ó,   € à�u‰u”X˜aŸf™f a§f¡f¨a¯e©e°Q·U±UÓ;Ó<Ð<r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r¢  )rR  r@   r¦   r�   r�   rÁ  s     r…   r¤  zDMP_Python._pquo�  r�  r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r§  )rR  rA   r¦   r�   r�   rÁ  s     r…   r©  zDMP_Python._pexquo…  s,   € à�u‰u”Z §¡¨¯©°·±°q·u±uÓ=Ó>Ð>r‡   c                ó¸   — t        | j                  |j                  | j                  | j                  «      \  }}| j	                  |«      | j	                  |«      fS r¬  )rB   r¦   r�   r�   rR  r  s       r…   r­  zDMP_Python._div‰  sA   € ä�q—v‘v˜qŸv™v q§u¡u¨a¯e©eÓ4‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r°  )rR  rC   r¦   r�   r�   rÁ  s     r…   r±  zDMP_Python._remŽ  rx  r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r´  )rR  rD   r¦   r�   r�   rÁ  s     r…   rµ  zDMP_Python._quo’  rx  r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S r¸  )rR  rE   r¦   r�   r�   rÁ  s     r…   r¹  zDMP_Python._exquo–  s,   € à�u‰u”Y˜qŸv™v q§v¡v¨q¯u©u°a·e±eÓ<Ó=Ð=r‡   c                óD   — t        | j                  || j                  «      S )rÏ  )r   r¦   r�   rÑ  s     r…   rÐ  zDMP_Python._degreeš  s   € ä˜QŸV™V Q¨¯©Ó.Ð.r‡   c                óB   — t        | j                  | j                  «      S rÔ  )r   r¦   r�   r£   s    r…   rÕ  zDMP_Python.degree_listž  s   € ä˜qŸv™v q§u¡uÓ-Ð-r‡   c                óB   — t        d„ | j                  «       D «       «      S )rØ  c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr~   ©rÜ  )r¬   r  s     r…   r®   z*DMP_Python.total_degree.<locals>.<genexpr>¤  s   è ø€ Ò.˜a”3�q—6Ñ.ùs   ‚)Úmaxr¾   r£   s    r…   rÙ  zDMP_Python.total_degree¢  s   € äÑ. 1§8¡8£:Ô.Ó.Ð.r‡   c                óX   — t        | j                  | j                  | j                  «      S rì  )r   r¦   r�   r�   r£   s    r…   rí  zDMP_Python.LC¦  ó   € ä˜QŸV™V Q§U¡U¨A¯E©EÓ2Ð2r‡   c                óX   — t        | j                  | j                  | j                  «      S rï  )r   r¦   r�   r�   r£   s    r…   rñ  zDMP_Python.TCª  r�  r‡   c                óZ   — t        | j                  || j                  | j                  «      S ©ró  )r   r¦   r�   r�   rö  s     r…   rõ  zDMP_Python._nth®  s   € ä˜aŸf™f a¨¯©°·±Ó6Ð6r‡   c                óX   — t        | j                  | j                  | j                  «      S rû  )rH   r¦   r�   r�   r£   s    r…   rü  zDMP_Python.max_norm²  s   € ä˜AŸF™F A§E¡E¨1¯5©5Ó1Ð1r‡   c                óX   — t        | j                  | j                  | j                  «      S rþ  )rI   r¦   r�   r�   r£   s    r…   rÿ  zDMP_Python.l1_norm¶  s   € ä˜1Ÿ6™6 1§5¡5¨!¯%©%Ó0Ð0r‡   c                óX   — t        | j                  | j                  | j                  «      S r  )rJ   r¦   r�   r�   r£   s    r…   r  zDMP_Python.l2_norm_squaredº  s   € ä" 1§6¡6¨1¯5©5°!·%±%Ó8Ð8r‡   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS r  )rK   r¦   r�   r�   rR  )r¤   ræ   rR  s      r…   r  zDMP_Python.clear_denoms¾  s2   € ä# A§F¡F¨A¯E©E°1·5±5Ó9‰ˆˆqØ�a—e‘e˜A“hˆÐr‡   c           	     óz   — | j                  t        | j                  ||| j                  | j                  «      «      S )r  )rR  rL   r¦   r�   r�   r	  s      r…   r  zDMP_Python._integrateÃ  s+   € à�u‰uÔ% a§f¡f¨a°°A·E±E¸1¿5¹5ÓAÓBÐBr‡   c           	     óz   — | j                  t        | j                  ||| j                  | j                  «      «      S )r  )rR  rM   r¦   r�   r�   r	  s      r…   r  zDMP_Python._diffÇ  s*   € à�u‰u”[ §¡¨¨A¨q¯u©u°a·e±eÓ<Ó=Ð=r‡   c                óŽ   — t        | j                  | j                  j                  |«      d| j                  | j                  «      S r›   )rN   r¦   r�   rÇ   r�   r  s     r…   r  zDMP_Python._evalË  s.   € Ü˜1Ÿ6™6 1§5¡5§=¡=°Ó#3°Q¸¿¹¸q¿u¹uÓEÐEr‡   c                óâ   — t        | j                  | j                  j                  |«      || j                  | j                  «      }| j                  || j                  | j                  dz
  «      S ©Nr¯   )rN   r¦   r�   rÇ   r�   r•   )r¤   r  r  r˜   s       r…   r  zDMP_Python._eval_levÎ  sL   € Ü˜!Ÿ&™& !§%¡%§-¡-°Ó"2°A°q·u±u¸a¿e¹eÓDˆØ�u‰u�S˜!Ÿ%™% §¡¨¡Ó+Ð+r‡   c                ó¢   — t        | j                  |j                  | j                  «      \  }}| j                  |«      | j                  |«      fS )r  )rZ   r¦   r�   rR  ©r¤   rï   rÞ  Úhs       r…   r  zDMP_Python._half_gcdexÒ  s;   € ä˜aŸf™f a§f¡f¨a¯e©eÓ4‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!r‡   c                óÄ   — t        | j                  |j                  | j                  «      \  }}}| j                  |«      | j                  |«      | j                  |«      fS )r"  )r[   r¦   r�   rR  )r¤   rï   rÞ  rÍ  rž  s        r…   r$  zDMP_Python._gcdex×  sG   € ä˜AŸF™F A§F¡F¨A¯E©EÓ2‰ˆˆ1ˆaØ�u‰u�Q‹x˜Ÿ™˜q› 1§5¡5¨£8Ð+Ð+r‡   c                óz   — t        | j                  |j                  | j                  «      }| j                  |«      S )r(  )r\   r¦   r�   rR  )r¤   rï   rÞ  s      r…   r)  zDMP_Python._invertÜ  s)   € ä�q—v‘v˜qŸv™v q§u¡uÓ-ˆØ�u‰u�Q‹xˆr‡   c                ób   — | j                  t        | j                  || j                  «      «      S ©r-  )rR  rO   r¦   r�   r”  s     r…   r.  zDMP_Python._revertá  s"   € à�u‰u”Z §¡¨¨1¯5©5Ó1Ó2Ð2r‡   c                ó¬   — t        | j                  |j                  | j                  | j                  «      }t	        t        | j                  |«      «      S r2  )r]   r¦   r�   r�   r“   ÚmaprR  ©r¤   rï   ÚRs      r…   r3  zDMP_Python._subresultantså  s7   € ä˜aŸf™f a§f¡f¨a¯e©e°Q·U±UÓ;ˆÜ”C˜Ÿ™˜q“MÓ"Ð"r‡   c                ó&  — t        | j                  |j                  | j                  | j                  d¬«      \  }}| j                  r*| j	                  || j                  | j                  dz
  «      }|t        t        | j                  |«      «      fS )r8  T)r;  r¯   )r^   r¦   r�   r�   r•   r“   r¤  rR  ©r¤   rï   Úresr¦  s       r…   r9  z DMP_Python._resultant_includePRSê  sg   € ä˜qŸv™v q§v¡v¨q¯u©u°a·e±eÈÔM‰ˆˆQØ�5Š5Ø—%‘%˜˜QŸU™U A§E¡E¨A¡IÓ.ˆCØ”Dœ˜QŸU™U A›Ó'Ð'Ð'r‡   c                óÞ   — t        | j                  |j                  | j                  | j                  «      }| j                  r*| j	                  || j                  | j                  dz
  «      }|S r›  )r^   r¦   r�   r�   r•   )r¤   rï   r©  s      r…   r:  zDMP_Python._resultantñ  sL   € Ü˜AŸF™F A§F¡F¨A¯E©E°1·5±5Ó9ˆØ�5Š5Ø—%‘%˜˜QŸU™U A§E¡E¨A¡IÓ.ˆCØˆ
r‡   c                óÈ   — t        | j                  | j                  | j                  «      }| j                  r*| j	                  || j                  | j                  dz
  «      }|S )r@  r¯   )r_   r¦   r�   r�   r•   )r¤   r©  s     r…   rA  zDMP_Python.discriminant÷  sF   € ä˜qŸv™v q§u¡u¨a¯e©eÓ4ˆØ�5Š5Ø—%‘%˜˜QŸU™U A§E¡E¨A¡IÓ.ˆCØˆ
r‡   c                óÚ   — t        | j                  |j                  | j                  | j                  «      \  }}}| j	                  |«      | j	                  |«      | j	                  |«      fS rC  )r`   r¦   r�   r�   rR  )r¤   rï   rž  ÚcffÚcfgs        r…   rD  zDMP_Python._cofactorsþ  sM   € ä# A§F¡F¨A¯F©F°A·E±E¸1¿5¹5ÓA‰ˆˆ3�Ø�u‰u�Q‹x˜Ÿ™˜s› Q§U¡U¨3£ZÐ/Ð/r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rH  )rR  ra   r¦   r�   r�   rÁ  s     r…   rI  zDMP_Python._gcd  rx  r‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rM  )rR  rb   r¦   r�   r�   rÁ  s     r…   rO  zDMP_Python._lcm  rx  r‡   c                óÄ   — t        | j                  |j                  | j                  | j                  d¬«      \  }}}}||| j	                  |«      | j	                  |«      fS )rT  F©rW  ©rc   r¦   r�   r�   rR  ©r¤   rï   ÚcFÚcGrR  r  s         r…   rV  zDMP_Python._cancel  sK   € ä! !§&¡&¨!¯&©&°!·%±%¸¿¹ÈÔN‰ˆˆB��1Ø�2�q—u‘u˜Q“x §¡ q£Ð)Ð)r‡   c                ó¼   — t        | j                  |j                  | j                  | j                  d¬«      \  }}| j	                  |«      | j	                  |«      fS )rT  Tr²  r³  r~  s       r…   rU  zDMP_Python._cancel_include  sC   € ä˜!Ÿ&™& !§&¡&¨!¯%©%°·±ÀÔE‰ˆˆ1Ø�u‰u�Q‹x˜Ÿ™˜q›Ð!Ð!r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S r\  )rR  rP   r¦   r�   r�   r^  s     r…   r]  zDMP_Python._trunc  rs  r‡   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S rc  )rR  rS   r¦   r�   r�   r£   s    r…   rd  zDMP_Python.monic  s'   € à�u‰uÔ% a§f¡f¨a¯e©e°Q·U±UÓ;Ó<Ð<r‡   c                óX   — t        | j                  | j                  | j                  «      S rf  )rQ   r¦   r�   r�   r£   s    r…   rg  zDMP_Python.content  s   € ä! !§&¡&¨!¯%©%°·±Ó7Ð7r‡   c                ó„   — t        | j                  | j                  | j                  «      \  }}|| j	                  |«      fS ri  )rR   r¦   r�   r�   rR  )r¤   ÚcontrR  s      r…   rj  zDMP_Python.primitive!  s2   € ä& q§v¡v¨q¯u©u°a·e±eÓ<‰ˆˆaØ�Q—U‘U˜1“Xˆ~Ðr‡   c                óŒ   — | j                  t        | j                  |j                  | j                  | j                  «      «      S rl  )rR  rT   r¦   r�   r�   rÁ  s     r…   rm  zDMP_Python._compose&  s,   € à�u‰u”[ §¡¨¯©°·±¸¿¹Ó>Ó?Ð?r‡   c           	     ó|   — t        t        | j                  t        | j                  | j
                  «      «      «      S ©rq  )r“   r¤  rR  rU   r¦   r�   r£   s    r…   rr  zDMP_Python._decompose*  s'   € ä”C˜Ÿ™œ}¨Q¯V©V°Q·U±UÓ;Ó<Ó=Ð=r‡   c                ób   — | j                  t        | j                  || j                  «      «      S ©rv  )rR  rV   r¦   r�   r  s     r…   rw  zDMP_Python._shift.  s"   € à�u‰u”Y˜qŸv™v q¨!¯%©%Ó0Ó1Ð1r‡   c                óx   — | j                  t        | j                  || j                  | j                  «      «      S rz  )rR  rW   r¦   r�   r�   r  s     r…   r{  zDMP_Python._shift_list2  s(   € à�u‰u”Y˜qŸv™v q¨!¯%©%°·±Ó7Ó8Ð8r‡   c                óŒ   — | j                  t        | j                  |j                  |j                  | j                  «      «      S ©r€  )rR  rX   r¦   r�   r†  s      r…   r�  zDMP_Python._transform6  s,   € à�u‰u”] 1§6¡6¨1¯6©6°1·6±6¸1¿5¹5ÓAÓBÐBr‡   c           	     ó|   — t        t        | j                  t        | j                  | j
                  «      «      «      S ©rˆ  )r“   r¤  rR  rv   r¦   r�   r£   s    r…   r‰  zDMP_Python._sturm:  s'   € ä”C˜Ÿ™œy¨¯©°·±Ó7Ó8Ó9Ð9r‡   c                óB   — t        | j                  | j                  «      S ©r�  )rw   r¦   r�   r£   s    r…   rŽ  zDMP_Python._cauchy_upper_bound>  ó   € ä% a§f¡f¨a¯e©eÓ4Ð4r‡   c                óB   — t        | j                  | j                  «      S ©r“  )rx   r¦   r�   r£   s    r…   r”  zDMP_Python._cauchy_lower_boundB  rÉ  r‡   c                óB   — t        | j                  | j                  «      S ©r˜  )ry   r¦   r�   r£   s    r…   r™  z&DMP_Python._mignotte_sep_bound_squaredF  s   € ä-¨a¯f©f°a·e±eÓ<Ð<r‡   c                ó–   — t        | j                  | j                  «      D ��cg c]  \  }}| j                  |«      |f‘Œ c}}S c c}}w ©r�  )rd   r¦   r�   rR  )r¤   rï   rù   s      r…   rž  zDMP_Python._gff_listJ  s5   € ä+7¸¿¹ÀÇÁÓ+F×H¡4 1 a�!—%‘%˜“(˜A’ÓHÐHùÓHs   ¤Ac                óº   — t        | j                  | j                  | j                  «      }| j	                  || j                  j                  | j                  «      S r¢  )re   r¦   r�   r�   r•   ra  s     r…   r£  zDMP_Python.normN  s;   € ä�Q—V‘V˜QŸU™U A§E¡EÓ*ˆØ�u‰u�Q˜Ÿ™Ÿ	™	 1§5¡5Ó)Ð)r‡   c                óæ   — t        | j                  | j                  | j                  «      \  }}}|| j	                  |«      | j                  || j                  j                  | j                  «      fS r¥  )rg   r¦   r�   r�   rR  r•   )r¤   rÞ  rï   r±   s       r…   r¦  zDMP_Python.sqf_normS  sP   € ä˜qŸv™v q§u¡u¨a¯e©eÓ4‰ˆˆ1ˆaØ�!—%‘%˜“(˜AŸE™E ! Q§U¡U§Y¡Y°·±Ó6Ð6Ð6r‡   c                óv   — | j                  t        | j                  | j                  | j                  «      «      S r¨  )rR  rh   r¦   r�   r�   r£   s    r…   r©  zDMP_Python.sqf_partX  s&   € à�u‰u”\ !§&¡&¨!¯%©%°·±Ó7Ó8Ð8r‡   c                ó¼   — t        | j                  | j                  | j                  |«      \  }}||D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}fS c c}}w r«  )ri   r¦   r�   r�   rR  ©r¤   r°   ræ   Úfactorsrï   rù   s         r…   r®  zDMP_Python.sqf_list\  sK   € ä% a§f¡f¨a¯e©e°Q·U±U¸CÓ@‰ˆˆwØ°'×;©$¨!¨Q˜Ÿ™˜q› 1šÓ;Ð;Ð;ùÓ;s   ¶Ac                ó²   — t        | j                  | j                  | j                  |«      }|D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}S c c}}w r«  )rj   r¦   r�   r�   rR  ©r¤   r°   rÕ  rï   rù   s        r…   r°  zDMP_Python.sqf_list_includea  sB   € ä& q§v¡v¨q¯u©u°a·e±e¸SÓAˆØ+2×4¡4 1 a�!—%‘%˜“(˜A’Ó4Ð4ùÓ4s   ²Ac                óº   — t        | j                  | j                  | j                  «      \  }}||D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}fS c c}}w r²  )rm   r¦   r�   r�   rR  )r¤   ræ   rÕ  rï   rù   s        r…   r´  zDMP_Python.factor_listf  sI   € ä(¨¯©°·±¸¿¹Ó>‰ˆˆwØ°'×;©$¨!¨Q˜Ÿ™˜q› 1šÓ;Ð;Ð;ùÓ;s   µAc                ó°   — t        | j                  | j                  | j                  «      }|D ��cg c]  \  }}| j	                  |«      |f‘Œ c}}S c c}}w r²  )rn   r¦   r�   r�   rR  ©r¤   rÕ  rï   rù   s       r…   r¶  zDMP_Python.factor_list_includek  s@   € ä)¨!¯&©&°!·%±%¸¿¹Ó?ˆØ+2×4¡4 1 a�!—%‘%˜“(˜A’Ó4Ð4ùÓ4s   ±Ac                óL   — t        | j                  | j                  ||||¬«      S ©Nr¸  )rp   r¦   r�   rÄ  s        r…   rÀ  zDMP_Python._isolate_real_rootsp  s    € Ü% a§f¡f¨a¯e©e¸À#È3ÐUYÔZÐZr‡   c                óL   — t        | j                  | j                  ||||¬«      S rÜ  )ro   r¦   r�   rÄ  s        r…   r¿  z"DMP_Python._isolate_real_roots_sqfs  s    € Ü)¨!¯&©&°!·%±%¸SÀcÈsÐY]Ô^Ð^r‡   c                óL   — t        | j                  | j                  ||||¬«      S rÜ  )rr   r¦   r�   rÄ  s        r…   r¾  zDMP_Python._isolate_all_rootsv  s    € Ü$ Q§V¡V¨Q¯U©U¸ÀÈ#ÐTXÔYÐYr‡   c                óL   — t        | j                  | j                  ||||¬«      S rÜ  )rq   r¦   r�   rÄ  s        r…   r½  z!DMP_Python._isolate_all_roots_sqfy  s    € Ü(¨¯©°·±¸CÀSÈcÐX\Ô]Ð]r‡   c           	     óN   — t        | j                  ||| j                  |||¬«      S )NrÉ  )rs   r¦   r�   rÌ  s         r…   rË  zDMP_Python._refine_real_root|  s"   € Ü# A§F¡F¨A¨q°!·%±%¸SÈÐTXÔYÐYr‡   c                óH   — t        | j                  | j                  ||¬«      S ©rÑ  ©rº  r»  )rt   r¦   r�   rÒ  s      r…   rÓ  zDMP_Python.count_real_roots  s   € ä# A§F¡F¨A¯E©E°sÀÔDÐDr‡   c                óH   — t        | j                  | j                  ||¬«      S ©rÕ  rã  )ru   r¦   r�   rÒ  s      r…   rÖ  zDMP_Python.count_complex_rootsƒ  s   € ä& q§v¡v¨q¯u©u¸#À3ÔGÐGr‡   c                óB   — t        | j                  | j                  «      S rØ  )r"   r¦   r�   r£   s    r…   r*  zDMP_Python.is_zero‡  s   € ô ˜!Ÿ&™& !§%¡%Ó(Ð(r‡   c                óX   — t        | j                  | j                  | j                  «      S rÛ  )r#   r¦   r�   r�   r£   s    r…   rÜ  zDMP_Python.is_oneŒ  ó   € ô ˜Ÿ™ §¡¨¯©Ó.Ð.r‡   c                óD   — t        | j                  d| j                  «      S )rß  N)r$   r¦   r�   r£   s    r…   rà  zDMP_Python.is_ground‘  s   € ô ˜AŸF™F D¨!¯%©%Ó0Ð0r‡   c                óX   — t        | j                  | j                  | j                  «      S râ  )rf   r¦   r�   r�   r£   s    r…   rä  zDMP_Python.is_sqf–  rè  r‡   c                óŠ   — | j                   j                  t        | j                  | j                  | j                   «      «      S ræ  )r�   rÜ  r   r¦   r�   r£   s    r…   rç  zDMP_Python.is_monic›  s,   € ð �u‰u�|‰|œM¨!¯&©&°!·%±%¸¿¹Ó?Ó@Ð@r‡   c                óŠ   — | j                   j                  t        | j                  | j                  | j                   «      «      S ré  )r�   rÜ  rQ   r¦   r�   r£   s    r…   rê  zDMP_Python.is_primitive   s-   € ð �u‰u�|‰|Ô.¨q¯v©v°q·u±u¸a¿e¹eÓDÓEÐEr‡   c                ó”   — t        d„ t        | j                  | j                  | j                  «      j                  «       D «       «      S )rì  c              3  ó8   K  — | ]  }t        |«      d k  –— Œ y­w)r¯   NrŒ  ©r¬   rè  s     r…   r®   z'DMP_Python.is_linear.<locals>.<genexpr>¨  ó   è ø€ ÒY u”3�u“: •?ÑYùó   ‚©r°   r'   r¦   r�   r�   Úkeysr£   s    r…   rí  zDMP_Python.is_linear¥  ó3   € ô ÑY´¸A¿F¹FÀAÇEÁEÈ1Ï5É5Ó0Q×0VÑ0VÓ0XÔYÓYÐYr‡   c                ó”   — t        d„ t        | j                  | j                  | j                  «      j                  «       D «       «      S )rï  c              3  ó8   K  — | ]  }t        |«      d k  –— Œ y­w)é   NrŒ  rï  s     r…   r®   z*DMP_Python.is_quadratic.<locals>.<genexpr>­  rð  rñ  rò  r£   s    r…   rð  zDMP_Python.is_quadraticª  rô  r‡   c                ó:   — t        | j                  «       «      dk  S )rò  r¯   )rÛ  rô   r£   s    r…   ró  zDMP_Python.is_monomial¯  s   € ô �1—9‘9“;Ó 1Ñ$Ð$r‡   c                ó&   — | j                  «       duS )rö  N)rê  r£   s    r…   r÷  zDMP_Python.is_homogeneous´  s   € ð ×"Ñ"Ó$¨DÐ0Ð0r‡   c                óX   — t        | j                  | j                  | j                  «      S rù  )rl   r¦   r�   r�   r£   s    r…   rû  zDMP_Python.is_irreducible¹  s   € ô ! §¡¨¯©°·±Ó6Ð6r‡   c                ó\   — | j                   s t        | j                  | j                  «      S y©rý  F)r�   rk   r¦   r�   r£   s    r…   rþ  zDMP_Python.is_cyclotomic¾  s#   € ð �uŠuÜ# A§F¡F¨A¯E©EÓ2Ð2àr‡   r~   r?  r)  r@  rB  )rrÙ   rC  rD  rE  rF  rH  r�   r)  rR  rç   rÒ   rí   rÄ   r¢   rÝ   rÂ   r  r  r+  r<  rB  rH  rM  rO  rV  r]  rg  rm  rq  ru  ry  r`  rd  r}  r„  rˆ  rŽ  r“  r™  rŸ  r¤  r©  r­  r±  rµ  r¹  rÐ  rÕ  rÙ  rí  rñ  rõ  rü  rÿ  r  r  r  r  r  r  r  r$  r)  r.  r3  r9  r:  rA  rD  rI  rO  rV  rU  r]  rd  rg  rj  rm  rr  rw  r{  r�  r‰  rŽ  r”  r™  rž  r£  r¦  r©  r®  r°  r´  r¶  rÀ  r¿  r¾  r½  rË  rÓ  rÖ  rI  r*  rÜ  rà  rä  rç  rê  rí  rð  ró  r÷  rû  rþ  rŠ   r‡   r…   rž   rž   Ô  sû  „ Ù3à&€Iàñó ðòFò
)ò>ò#ò'ò(4òò+òJò)ò
)ó
Aò+ò
ó
)ó8ò&ò;òò
>ò>ò>ò>ò@ò4ò4ò<ò<ò<ò4ò7ò"ò
=ò=ò?ò"ò
<ò<ò>ó/ò.ò/ò3ò3ò7ò2ò1ò9òó
Có>òFò,ò"ò
,ò
ò
3ò#ò
(òòò0ò
<ò<ò*ò
"ò
@ò=ò8òò
@ò>ò2ò9òCò:ò5ò5ò=òIò*ò
7ò
9ó<ó
5ò
<ò
5ò
[ò_òZò^òZóEóHð ñ)ó ð)ð ñ/ó ð/ð ñ1ó ð1ð ñ/ó ð/ð ñAó ðAð ñFó ðFð ñZó ðZð ñZó ðZð ñ%ó ð%ð ñ1ó ð1ð ñ7ó ð7ð ñó ñr‡   rž   c                  ó`  — e Zd ZdZdZdZd„ Zed„ «       Zd„ Z	ed„ «       Z
ed„ «       Zed	„ «       Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdsd„Zd„ Zd„ Zdtd„Zdtd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1dud0„Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7d6„ Z8d7„ Z9d8„ Z:d9„ Z;dvd:„Z<dvd;„Z=d<„ Z>d=„ Z?d>„ Z@d?„ ZAd@„ ZBdA„ ZCdB„ ZDdC„ ZEdD„ ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJdI„ ZKdJ„ ZLdK„ ZMdL„ ZNdM„ ZOdN„ ZPdO„ ZQdP„ ZRdQ„ ZSdR„ ZTdS„ ZUdT„ ZVdU„ ZWdV„ ZXdW„ ZYdX„ ZZdY„ Z[dZ„ Z\dtd[„Z]dtd\„Z^d]„ Z_d^„ Z`d_„ Zad`„ Zbda„ Zcdb„ Zddc„ Zedd„ Zfdwde„Zgdwdf„Zheidg„ «       Zjeidh„ «       Zkeidi„ «       Zleidj„ «       Zmeidk„ «       Zneidl„ «       Zoeidm„ «       Zpeidn„ «       Zqeido„ «       Zreidp„ «       Zseidq„ «       Zteidr„ «       Zuy)xrœ   r�   r   )r¦   r�   Ú_clsc                óh   — | j                   | j                  «       | j                  | j                  ffS r~   )rØ   r¢   r�   r�   rà   s    r…   Ú
__reduce__zDUP_Flint.__reduce__Î  s&   € Ø�~‰~ §¡£°·±¸$¿(¹(ÐCÐCÐCr‡   c                óX   — | j                  |d d d…   ||«      }| j                  ||«      S ©Néÿÿÿÿ)Ú_flint_polyÚfrom_repr–   s       r…   r�   zDUP_Flint._newÑ  s-   € à�o‰o˜c¡$ B $™i¨¨cÓ2ˆØ�|‰|˜C Ó%Ð%r‡   c                óB   — | j                   j                  «       ddd…   S )r  Nr  )r¦   r¿   r£   s    r…   r¢   zDUP_Flint.to_listÖ  s   € à�v‰v�}‰}‹™t ˜tÑ$Ð$r‡   c                ó\   — t        |«      sJ ‚|dk(  sJ ‚| j                  |«      } ||«      S r›   )r†   Ú_get_flint_poly_cls)r—   r˜   r�   r�   Ú	flint_clss        r…   r  zDUP_Flint._flint_polyÚ  s5   € ä& sÔ+Ð+Ð+Ø�aŠxˆˆxØ×+Ñ+¨CÓ0ˆ	Ù˜‹~Ðr‡   c                ó¾   — |j                   rt        j                  S |j                  rt        j                  S |j
                  r|j                  S t        d|z  «      ‚)Nú%Domain %s is not supported with flint)r   r|   Ú	fmpz_polyr€   Ú	fmpq_polyr�   Ú	_poly_ctxrÅ   )r—   r�   s     r…   r  zDUP_Flint._get_flint_poly_clsá  sF   € à�9Š9Ü—?‘?Ð"Ø�YŠYÜ—?‘?Ð"Ø�YŠYØ—=‘=Ð äÐFÈÑLÓMÐMr‡   c                ó  ‡‡— |j                   r-t        |t        j                  «      sJ ‚t        j                  }n¡|j                  r-t        |t        j
                  «      sJ ‚t        j
                  }nh|j                  rNt        |t        j                  t        j                  f«      sJ ‚|j                  «       Št        |«      Šˆˆfd„}nt        d|z  «      ‚t        j                  | «      }||_        ||_        ||_        |S )z,Create a DMP from the given representation. c                ó   •—  ‰| ‰«      S r~   rŠ   )ÚeÚ_DUP_Flint__clsr­   s    €€r…   ú<lambda>z$DUP_Flint.from_rep.<locals>.<lambda>ú  s   ø€ ™U 1 a›[€ r‡   r  )r   r’   r|   r  r€   r  r�   Ú	nmod_polyÚfmpz_mod_polyÚcharacteristicr”   rÅ   rL  r™   r�   r¦   rþ  )r—   r˜   r�   rþ  rM  r  r­   s        @@r…   r  zDUP_Flint.from_repì  sÈ   ù€ ð �9Š9Ü˜c¤5§?¡?Ô3Ð3Ð3Ü—?‘?‰DØ�YŠYÜ˜c¤5§?¡?Ô3Ð3Ð3Ü—?‘?‰DØ�YŠYÜ˜c¤E§O¡O´U×5HÑ5HÐ#IÔJÐJÐJØ×"Ñ"Ó$ˆAÜ˜“IˆEÜ(‰DäÐFÈÑLÓMÐMä�n‰n˜SÓ!ˆØˆŒØˆŒØˆŒàˆ
r‡   c                óš   — t        | «      t        |«      k7  ry| j                  |j                  k(  xr | j                  |j                  k(  S r‰   )r”   r�   r¦   rÁ  s     r…   r)  zDUP_Flint._strict_eq  s9   € Ü�‹7”d˜1“gÒØØ�u‰u˜Ÿ™‰~Ò2 !§&¡&¨A¯F©FÑ"2Ð2r‡   c                óZ   — | j                  | j                  |g«      | j                  «      S rä   ©r  rþ  r�   rå   s     r…   rç   zDUP_Flint.ground_new
  s!   € à�z‰z˜!Ÿ&™& % ›/¨1¯5©5Ó1Ð1r‡   c                óL   — | j                  | j                  j                  «      S r~   )rç   r�   rÐ   r£   s    r…   rÒ   zDUP_Flint._one  s   € Ø�|‰|˜AŸE™EŸI™IÓ&Ð&r‡   c                ó   — t         ‚)z*Unify representations of two polynomials. )rÅ   rÁ  s     r…   rí   zDUP_Flint.unify  s   € äÐr‡   c                ót   — t         j                  | j                  «       | j                  | j                  «      S )z1Convert ``f`` to a Python native representation. )rž   r�   r¢   r�   r�   r£   s    r…   rÃ   zDUP_Flint.to_DMP_Python  s#   € ä�‰˜qŸy™y›{¨A¯E©E°1·5±5Ó9Ð9r‡   c                ó4   — t        | j                  «       «      S rZ  )rÝ  r¢   r£   s    r…   rÝ   zDUP_Flint.to_tuple  s   € ä�Q—Y‘Y“[Ó!Ð!r‡   c                óh  — |t         k(  rB| j                  t        k(  r/| j                  t	        j
                  | j                  «      |«      S t        |«      rBt        | j                  «      r-| j                  «       j                  |«      j                  «       S t        d| j                  › d|› �«      ‚)r\  zDUP_Flint: Cannot convert z to )r   r�   r   r  r|   r  r¦   r†   rÃ   rÂ   rÄ   rÅ   rÆ   s     r…   rÂ   zDUP_Flint._convert  sƒ   € à”"Š9˜Ÿ™¤"šØ—:‘:œeŸo™o¨a¯f©fÓ5°sÓ;Ð;Ü$ SÔ)Ô.EÀaÇeÁeÔ.Là—?‘?Ó$×-Ñ-¨cÓ2×?Ñ?ÓAÐAäÐ!;¸A¿E¹E¸7À$ÀsÀeÐLÓMÐMr‡   c                ó’   — | j                   j                  «       || }| j                  | j                  |«      | j                  «      S r  )r¦   r¿   r  rþ  r�   )r¤   r  r  r¿   s       r…   r  zDUP_Flint._slice'  s5   € à—‘—‘“  1Ð%ˆØ�z‰z˜!Ÿ&™& ›.¨!¯%©%Ó0Ð0r‡   c                ó   — t         ‚r  rÉ   r  s       r…   r  zDUP_Flint._slice_lev,  rÙ  r‡   Nc                óö   — |�|j                   dk(  rCt        | j                  j                  «       «      D ��cg c]  \  }}|sŒ	|f|f‘Œ }}}|ddd…   S | j	                  «       j                  |¬«      S c c}}w )r(  NÚlexr  r  )Úaliasr4  r¦   r¿   rÃ   r+  )r¤   r   r  r­   r"  s        r…   r+  zDUP_Flint._terms1  sq   € àˆ=˜EŸK™K¨5Ò0Ü,5°a·f±f·m±m³oÓ,F×M¡D A qÊ!˜�t˜Q’iÐMˆEÑMØ™˜2˜‘;Ðð —?‘?Ó$×+Ñ+°%Ð+Ó8Ð8ùó Ns   ¸
A5ÁA5c                ó   — t         ‚r;  rÉ   r£   s    r…   r<  zDUP_Flint._lift?  rÙ  r‡   c                óš   — | j                   rd| fS | j                  j                  «       \  }}|f| j                  || j                  «      fS )rA  )r¯   )r*  r¦   Ú	deflationr  r�   )r¤   rï   r  s      r…   rB  zDUP_Flint.deflateD  sF   € ð �9Š9Ø˜�7ˆNØ�v‰v×ÑÓ!‰ˆˆ1Øˆt�Q—Z‘Z  1§5¡5Ó)Ð)Ð)r‡   c                ó   — t         ‚rD  rÉ   rF  s     r…   rH  zDUP_Flint.injectQ  rÙ  r‡   c                ó   — t         ‚rJ  rÉ   rL  s      r…   rM  zDUP_Flint.ejectV  rÙ  r‡   c                ó   — t         ‚rh  rÉ   r£   s    r…   rO  zDUP_Flint._exclude[  rÙ  r‡   c                ó   — t         ‚rk  rÉ   rW  s     r…   rV  zDUP_Flint._permute`  rÙ  r‡   c                óh   — | j                  «       j                  «       \  }}||j                  «       fS r\  )rÃ   r]  rÄ   rP  s      r…   r]  zDUP_Flint.terms_gcde  s/   € ð �‰Ó ×*Ñ*Ó,‰ˆˆ1Ø�!—.‘.Ó"Ð"Ð"r‡   c                óT   — | j                  | j                  |z   | j                  «      S rf  ©r  r¦   r�   rh  s     r…   rg  zDUP_Flint._add_groundk  ó   € à�z‰z˜!Ÿ&™& 1™* a§e¡eÓ,Ð,r‡   c                óT   — | j                  | j                  |z
  | j                  «      S rl  r-  rh  s     r…   rm  zDUP_Flint._sub_groundo  r.  r‡   c                óT   — | j                  | j                  |z  | j                  «      S rp  r-  rh  s     r…   rq  zDUP_Flint._mul_grounds  r.  r‡   c                óT   — | j                  | j                  |z  | j                  «      S rt  r-  rh  s     r…   ru  zDUP_Flint._quo_groundw  ó   € à�z‰z˜!Ÿ&™& A™+ q§u¡uÓ-Ð-r‡   c                óˆ   — t        | j                  |«      \  }}|rt        | |«      ‚| j                  || j                  «      S )z<Exact quotient of ``f`` by an element of the ground domain. )Údivmodr¦   r   r  r�   )r¤   r­   r‚  r±   s       r…   ry  zDUP_Flint._exquo_ground{  s;   € ä�a—f‘f˜aÓ ‰ˆˆ1ÙÜ% a¨Ó+Ð+Ø�z‰z˜!˜QŸU™UÓ#Ð#r‡   c                óZ   — | j                  «       j                  «       j                  «       S r_  )rÃ   r`  rÄ   r£   s    r…   r`  zDUP_Flint.abs‚  s!   € à�‰Ó ×$Ñ$Ó&×3Ñ3Ó5Ð5r‡   c                óP   — | j                  | j                   | j                  «      S rb  r-  r£   s    r…   rd  zDUP_Flint.neg†  s   € à�z‰z˜1Ÿ6™6˜' 1§5¡5Ó)Ð)r‡   c                óh   — | j                  | j                  |j                  z   | j                  «      S r|  r-  rÁ  s     r…   r}  zDUP_Flint._addŠ  ó#   € à�z‰z˜!Ÿ&™& 1§6¡6™/¨1¯5©5Ó1Ð1r‡   c                óh   — | j                  | j                  |j                  z
  | j                  «      S rƒ  r-  rÁ  s     r…   r„  zDUP_Flint._subŽ  r8  r‡   c                óh   — | j                  | j                  |j                  z  | j                  «      S r‡  r-  rÁ  s     r…   rˆ  zDUP_Flint._mul’  r8  r‡   c                óT   — | j                  | j                  dz  | j                  «      S )rŒ  r÷  r-  r£   s    r…   rŽ  zDUP_Flint.sqr–  r2  r‡   c                óT   — | j                  | j                  |z  | j                  «      S r}  r-  r”  s     r…   r“  zDUP_Flint._powš  r2  r‡   c                ó(  — | j                  «       |j                  «       z
  dz   }t        |j                  «       |z  | j                  z  |j                  «      \  }}| j	                  || j
                  «      | j	                  || j
                  «      fS )r˜  r¯   )r3  r4  rí  r¦   r  r�   ©r¤   rï   rã  r‚  r±   s        r…   r™  zDUP_Flint._pdivž  sm   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆÜ�a—d‘d“f˜a‘i !§&¡&Ñ(¨!¯&©&Ó1‰ˆˆ1Ø�z‰z˜!˜QŸU™UÓ# Q§Z¡Z°°1·5±5Ó%9Ð9Ð9r‡   c                óÜ   — | j                  «       |j                  «       z
  dz   }|j                  «       |z  | j                  z  |j                  z  }| j                  || j                  «      S )rž  r¯   ©r3  rí  r¦   r  r�   )r¤   rï   rã  r‚  s       r…   rŸ  zDUP_Flint._prem¤  sS   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆØ�T‰T‹V�Q‰Y˜Ÿ™Ñ 1§6¡6Ñ)ˆØ�z‰z˜!˜QŸU™UÓ#Ð#r‡   c                óÜ   — | j                  «       |j                  «       z
  dz   }|j                  «       |z  | j                  z  |j                  z  }| j                  || j                  «      S )r£  r¯   r@  )r¤   rï   rã  r±   s       r…   r¤  zDUP_Flint._pquoª  sS   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆØ�T‰T‹V�Q‰Y˜Ÿ™Ñ A§F¡FÑ*ˆØ�z‰z˜!˜QŸU™UÓ#Ð#r‡   c                ó  — | j                  «       |j                  «       z
  dz   }t        |j                  «       |z  | j                  z  |j                  «      \  }}|rt	        | |«      ‚| j                  || j                  «      S )r¨  r¯   )r3  r4  rí  r¦   r   r  r�   r>  s        r…   r©  zDUP_Flint._pexquo°  si   € à�H‰H‹J˜Ÿ™›Ñ# aÑ'ˆÜ�a—d‘d“f˜a‘i !§&¡&Ñ(¨!¯&©&Ó1‰ˆˆ1ÙÜ% a¨Ó+Ð+Ø�z‰z˜!˜QŸU™UÓ#Ð#r‡   c                ó„  — | j                   j                  r[t        | j                  |j                  «      \  }}| j	                  || j                   «      | j	                  || j                   «      fS | j                  «       j                  |j                  «       «      \  }}|j                  «       |j                  «       fS r¬  )r�   r#  r4  r¦   r  rÃ   r­  rÄ   r  s       r…   r­  zDUP_Flint._div¸  s‹   € à�5‰5�>Š>Ü˜!Ÿ&™& !§&¡&Ó)‰DˆAˆqØ—:‘:˜a §¡Ó'¨¯©°A°q·u±uÓ)=Ð=Ð=ð —?‘?Ó$×)Ñ)¨!¯/©/Ó*;Ó<‰DˆAˆqØ—>‘>Ó# Q§^¡^Ó%5Ð5Ð5r‡   c                óh   — | j                  | j                  |j                  z  | j                  «      S r°  r-  rÁ  s     r…   r±  zDUP_Flint._remÂ  r8  r‡   c                óh   — | j                  | j                  |j                  z  | j                  «      S r´  r-  rÁ  s     r…   rµ  zDUP_Flint._quoÆ  s$   € à�z‰z˜!Ÿ&™& A§F¡FÑ*¨A¯E©EÓ2Ð2r‡   c                óJ   — | j                  |«      \  }}|rt        | |«      ‚|S r¸  )r­  r   r  s       r…   r¹  zDUP_Flint._exquoÊ  s(   € à�v‰v�a‹y‰ˆˆ1ÙÜ% a¨Ó+Ð+Øˆr‡   c                óP   — | j                   j                  «       }|dk(  rt        }|S )rÏ  r  )r¦   r3  r   )r¤   r  rã  s      r…   rÐ  zDUP_Flint._degreeÑ  s"   € à�F‰F�M‰M‹OˆØ�Š7ÜˆAØˆr‡   c                ó$   — | j                  «       fS rÔ  ©rÐ  r£   s    r…   rÕ  zDUP_Flint.degree_listØ  s   € à—‘“ÐÐr‡   c                ó"   — | j                  «       S r×  rI  r£   s    r…   rÙ  zDUP_Flint.total_degreeÜ  s   € à�y‰y‹{Ðr‡   c                óP   — | j                   | j                   j                  «          S rì  ©r¦   r3  r£   s    r…   rí  zDUP_Flint.LCà  s   € à�v‰v�a—f‘f—m‘m“oÑ&Ð&r‡   c                ó    — | j                   d   S )rð  r   ©r¦   r£   s    r…   rñ  zDUP_Flint.TCä  s   € à�v‰v�a‰yÐr‡   c                ó(   — |\  }| j                   |   S r’  rN  )r¤   r÷  r  s      r…   rõ  zDUP_Flint._nthè  s   € à‰ˆØ�v‰v�a‰yÐr‡   c                ó>   — | j                  «       j                  «       S rû  )rÃ   rü  r£   s    r…   rü  zDUP_Flint.max_normí  s   € à�‰Ó ×)Ñ)Ó+Ð+r‡   c                ó>   — | j                  «       j                  «       S rþ  )rÃ   rÿ  r£   s    r…   rÿ  zDUP_Flint.l1_normñ  s   € à�‰Ó ×(Ñ(Ó*Ð*r‡   c                ó>   — | j                  «       j                  «       S r  )rÃ   r  r£   s    r…   r  zDUP_Flint.l2_norm_squaredõ  s   € à�‰Ó ×0Ñ0Ó2Ð2r‡   c                óL  — | j                   }|j                  ra| j                  j                  «       }| j	                  | j                  | j                  j                  «       «      | j                   «      }||fS |j                  s|j                  r|j                  | fS t        ‚r  )r�   r€   r¦   Údenomr  rþ  Únumerr   Úis_FiniteFieldrÐ   rÊ   )r¤   r¦  rT  rU  s       r…   r  zDUP_Flint.clear_denomsù  st   € à�E‰EˆØ�7Š7Ø—F‘F—L‘L“NˆEØ—J‘J˜qŸv™v a§f¡f§l¡l£nÓ5°q·u±uÓ=ˆEØ˜%�<ÐØ�WŠW˜×(Ò(Ø—5‘5˜!�8ˆOä%Ð%r‡   c                ó*  — |dk(  sJ ‚| j                   j                  rH| j                  }t        |«      D ]  }|j	                  «       }Œ | j                  || j                   «      S | j                  «       j                  ||¬«      j                  «       S )r  r   )r  r  )	r�   r#  r¦   ÚrangeÚintegralr  rÃ   r  rÄ   ©r¤   r  r  r˜   r6  s        r…   r  zDUP_Flint._integrate  sz   € à�AŠvˆˆvØ�5‰5�>Š>Ø—&‘&ˆCÜ˜1“Xò %�Ø—l‘l“n‘ð%à—:‘:˜c 1§5¡5Ó)Ð)à—?‘?Ó$×/Ñ/°!°qÐ/Ó9×FÑFÓHÐHr‡   c                ó    — |dk(  sJ ‚| j                   }t        |«      D ]  }|j                  «       }Œ | j                  || j                  «      S )z1Computes the ``m``-th order derivative of ``f``. r   )r¦   rX  Ú
derivativer  r�   rZ  s        r…   r  zDUP_Flint._diff  sJ   € à�AŠvˆˆvØ�f‰fˆÜ�q“ò 	#ˆAØ—.‘.Ó"‰Cð	#à�z‰z˜#˜qŸu™uÓ%Ð%r‡   c                ó@   — | j                  «       j                  |«      S r~   )rÃ   r  r  s     r…   r  zDUP_Flint._eval  s   € ð
 �‰Ó ×&Ñ& qÓ)Ð)r‡   c                ó   — t         ‚r~   rÉ   r  s      r…   r  zDUP_Flint._eval_lev  rè   r‡   c                ó¢   — | j                  «       j                  |j                  «       «      \  }}|j                  «       |j                  «       fS )z#Half extended Euclidean algorithm. )rÃ   r  rÄ   r�  s       r…   r  zDUP_Flint._half_gcdex#  s=   € à�‰Ó ×,Ñ,¨Q¯_©_Ó->Ó?‰ˆˆ1Ø�~‰~Ó §¡Ó!1Ð1Ð1r‡   c                óú   — | j                   j                  |j                   «      \  }}}| j                  || j                  «      | j                  || j                  «      | j                  || j                  «      fS )zExtended Euclidean algorithm. )r¦   Úxgcdr  r�   )r¤   rï   rž  rÞ  rÍ  s        r…   r$  zDUP_Flint._gcdex(  sX   € à—&‘&—+‘+˜aŸf™fÓ%‰ˆˆ1ˆaØ�z‰z˜!˜QŸU™UÓ# Q§Z¡Z°°1·5±5Ó%9¸1¿:¹:ÀaÈÏÉÓ;OÐOÐOr‡   c                óJ  — | j                   }|j                  rQ| j                  j                  |j                  «      \  }}}|d|z  dz   k7  rt	        d«      ‚| j                  ||«      S | j                  «       j                  |j                  «       «      j                  «       S )r(  r   r¯   úzero divisor)	r�   r#  r¦   ra  r   r  rÃ   r)  rÄ   )r¤   rï   r¦  rJ  ÚF_invr#  s         r…   r)  zDUP_Flint._invert-  s†   € à�E‰EˆØ�:Š:ØŸF™FŸK™K¨¯©Ó/‰MˆC�˜ð �a˜‘e˜a‘iÒÜ# NÓ3Ð3Ø—:‘:˜e QÓ'Ð'ð —?‘?Ó$×,Ñ,¨Q¯_©_Ó->Ó?×LÑLÓNÐNr‡   c                ó\   — | j                  «       j                  |«      j                  «       S r¢  )rÃ   r.  rÄ   r”  s     r…   r.  zDUP_Flint._revert<  s%   € ð �‰Ó ×(Ñ(¨Ó+×8Ñ8Ó:Ð:r‡   c                ó¢   — | j                  «       j                  |j                  «       «      }|D �cg c]  }|j                  «       ‘Œ c}S c c}w r2  )rÃ   r3  rÄ   r¥  s      r…   r3  zDUP_Flint._subresultantsB  s=   € ð �O‰OÓ×,Ñ,¨Q¯_©_Ó->Ó?ˆØ+,Ö. a�—‘Õ!Ò.Ð.ùÒ.s   ²Ac                ó¬   — | j                  «       j                  |j                  «       «      \  }}||D �cg c]  }|j                  «       ‘Œ c}fS c c}w r7  )rÃ   r9  rÄ   r¨  s       r…   r9  zDUP_Flint._resultant_includePRSH  sF   € ð —‘Ó"×8Ñ8¸¿¹Ó9JÓK‰ˆˆQØ°Ö3¨1�a—n‘nÕ&Ò3Ð3Ð3ùÒ3s   ¶Ac                ó\   — | j                  «       j                  |j                  «       «      S )z'Computes resultant of ``f`` and ``g``. )rÃ   r:  rÁ  s     r…   r:  zDUP_Flint._resultantN  s#   € ð �‰Ó ×+Ñ+¨A¯O©OÓ,=Ó>Ð>r‡   c                ó>   — | j                  «       j                  «       S r?  )rÃ   rA  r£   s    r…   rA  zDUP_Flint.discriminantS  s   € ð �‰Ó ×-Ñ-Ó/Ð/r‡   c                ój   — | j                  |«      }|| j                  |«      |j                  |«      fS rC  )rJ  rº  )r¤   rï   rž  s      r…   rD  zDUP_Flint._cofactorsX  s,   € à�E‰E�!‹HˆØ�!—'‘'˜!“*˜aŸg™g a›jÐ(Ð(r‡   c                ó€   — | j                  | j                  j                  |j                  «      | j                  «      S rH  )r  r¦   rJ  r�   rÁ  s     r…   rI  zDUP_Flint._gcd]  s(   € à�z‰z˜!Ÿ&™&Ÿ*™* Q§V¡VÓ,¨a¯e©eÓ4Ð4r‡   c                óL  — | r|s%| j                  | j                  j                  «      S | j                  |«      j	                  | j                  |«      «      }|j                  j                  r|j                  «       }|S |j                  «       dk  r|j                  «       }|S )rN  r   )
rç   r�   rÎ   rˆ  r¹  rI  r#  rd  rí  rd  )r¤   rï   rä  s      r…   rO  zDUP_Flint._lcma  s|   € ñ ‘aØ—<‘< §¡§
¡
Ó+Ð+à�F‰F�1‹I×Ñ˜QŸV™V A›YÓ'ˆà�5‰5�>Š>Ø—‘“	ˆAð ˆð �T‰T‹V�aŠZØ—‘“ˆAàˆr‡   c                ó€  — | j                   |j                   k(  sJ ‚| j                   }|j                  s|j                  s|j                  sJ ‚|j                  rM| j	                  |«      }| j                  |«      |j                  |«      }}|j                  |j                  ||fS |j                  r'| j                  «       \  }}|j                  «       \  }}n|j                  | }}|j                  |}}|j                  |«      }||z  ||z  }}|j	                  |«      }	|j                  |	«      |j                  |	«      }}|j                  «       dk  }
|j                  «       dk  }|
r#|r!|j                  «       |j                  «       }}n+|
r| |j                  «       }}n|r| |j                  «       }}||||fS )rT  r   )r�   r   r€   rV  rI  rº  rÐ   r  rJ  rí  rd  )r¤   rï   r¦  rž  rR  r  r¶  rµ  ÚcHÚHÚf_negÚg_negs               r…   rV  zDUP_Flint._cancelp  su  € à�u‰u˜Ÿ™Š~Ðˆ~Ø�E‰Eˆð �wŠw˜!Ÿ'š' Q×%5Ò%5Ð5Ð5à×ÒØ—‘�q“	ˆAØ—7‘7˜1“:˜qŸw™w q›zˆqˆAØ—5‘5˜!Ÿ%™%  AÐ%Ð%à�7Š7Ø—N‘NÓ$‰EˆB�Ø—N‘NÓ$‰EˆB‘à—E‘E˜1�ˆBØ—E‘E˜1�ˆBà�V‰V�B‹ZˆØ�r‘˜2 ™8ˆBˆà�F‰F�1‹IˆØ�w‰w�q‹z˜1Ÿ7™7 1›:ˆ1ˆà—‘“˜‘
ˆØ—‘“˜‘
ˆá‘UØ—5‘5“7˜AŸE™E›Gˆq‰AÙØ�C˜Ÿ™›�‰BÙØ�C˜Ÿ™›�ˆBà�2�q˜!ˆ|Ðr‡   c                ór   — | j                  |«      \  }}}}|j                  |«      |j                  |«      fS rS  )rV  rq  r´  s         r…   rU  zDUP_Flint._cancel_include—  s4   € à—y‘y “|‰ˆˆB��1Ø�}‰}˜RÓ  !§-¡-°Ó"3Ð3Ð3r‡   c                ó\   — | j                  «       j                  |«      j                  «       S r\  )rÃ   r]  rÄ   r^  s     r…   r]  zDUP_Flint._truncœ  s#   € à�‰Ó ×'Ñ'¨Ó*×7Ñ7Ó9Ð9r‡   c                ó@   — | j                  | j                  «       «      S rc  )ry  rí  r£   s    r…   rd  zDUP_Flint.monic   s   € ð �‰˜qŸt™t›vÓ&Ð&r‡   c                ó>   — | j                  «       j                  «       S rf  )rÃ   rg  r£   s    r…   rg  zDUP_Flint.content¥  s   € ð �‰Ó ×(Ñ(Ó*Ð*r‡   c                ó”   — | j                  «       }| j                  r| j                  j                  | fS | j	                  |«      }||fS ri  )rg  r*  r�   rÎ   ry  )r¤   r¼  Úprims      r…   rj  zDUP_Flint.primitiveª  s>   € à�y‰y‹{ˆØ�9Š9Ø—5‘5—:‘:˜q�=Ð Ø�‰˜tÓ$ˆØ�TˆzÐr‡   c                ól   — | j                  | j                  |j                  «      | j                  «      S rl  r-  rÁ  s     r…   rm  zDUP_Flint._compose²  s#   € à�z‰z˜!Ÿ&™& §¡›.¨!¯%©%Ó0Ð0r‡   c                ó€   — | j                  «       j                  «       D �cg c]  }|j                  «       ‘Œ c}S c c}w r¿  )rÃ   rr  rÄ   rÁ  s     r…   rr  zDUP_Flint._decompose¶  s-   € à+,¯?©?Ó+<×+GÑ+GÓ+IÖK a�—‘Õ!ÒKÐKùÒKó   ¡;c                ó¦   — | j                  || j                  j                  g«      }| j                  | j	                  |«      | j                  «      S rÁ  )rþ  r�   rÐ   r  r¦   )r¤   r  Úx_plus_as      r…   rw  zDUP_Flint._shiftº  s:   € à—6‘6˜1˜aŸe™eŸi™i˜.Ó)ˆØ�z‰z˜!Ÿ&™& Ó*¨A¯E©EÓ2Ð2r‡   c                ó¢   — | j                  «       |j                  «       |j                  «       }}}|j                  ||«      j                  «       S rÄ  )rÃ   r„  rÄ   )r¤   r_  r‚  rR  rX  rƒ  s         r…   r�  zDUP_Flint._transform¿  s>   € à—/‘/Ó# Q§_¡_Ó%6¸¿¹Ó8Iˆaˆ1ˆØ�{‰{˜1˜aÓ ×-Ñ-Ó/Ð/r‡   c                ó€   — | j                  «       j                  «       D �cg c]  }|j                  «       ‘Œ c}S c c}w rÆ  )rÃ   r‰  rÄ   rÁ  s     r…   r‰  zDUP_Flint._sturmÄ  s-   € à+,¯?©?Ó+<×+CÑ+CÓ+EÖG a�—‘Õ!ÒGÐGùÒGrz  c                ó>   — | j                  «       j                  «       S rÈ  )rÃ   rŽ  r£   s    r…   rŽ  zDUP_Flint._cauchy_upper_boundÈ  ó   € à�‰Ó ×4Ñ4Ó6Ð6r‡   c                ó>   — | j                  «       j                  «       S rË  )rÃ   r”  r£   s    r…   r”  zDUP_Flint._cauchy_lower_boundÌ  r€  r‡   c                ó>   — | j                  «       j                  «       S rÍ  )rÃ   r™  r£   s    r…   r™  z%DUP_Flint._mignotte_sep_bound_squaredÐ  s   € à�‰Ó ×<Ñ<Ó>Ð>r‡   c                ó”   — | j                  «       }|j                  «       D ��cg c]  \  }}|j                  «       |f‘Œ c}}S c c}}w rÏ  )rÃ   rŸ  rÄ   )r¤   rR  rï   rù   s       r…   rž  zDUP_Flint._gff_listÔ  s8   € à�O‰OÓˆØ34·:±:³<×A©4¨1¨a�!—.‘.Ó" AÒ&ÓAÐAùÓAó   ¤Ac                ó   — t         ‚r¢  rÉ   r£   s    r…   r£  zDUP_Flint.normÙ  rÙ  r‡   c                ó   — t         ‚r¥  rÉ   r£   s    r…   r¦  zDUP_Flint.sqf_normÞ  rÙ  r‡   c                ó^   — | j                  | j                  | j                  «       «      «      S r¨  )r¹  rI  r  r£   s    r…   r©  zDUP_Flint.sqf_partã  s    € à�x‰x˜Ÿ™˜qŸw™w›yÓ)Ó*Ð*r‡   c                ó¢   — | j                  «       j                  |¬«      \  }}||D ��cg c]  \  }}|j                  «       |f‘Œ c}}fS c c}}w ©r¬  )r°   )rÃ   r®  rÄ   rÔ  s         r…   r®  zDUP_Flint.sqf_listç  sK   € ð Ÿ™Ó*×3Ñ3¸Ð3Ó<‰ˆˆwØ¸'×C±$°!°Q˜Ÿ™Ó)¨1Ò-ÓCÐCÐCùÓCs   ªAc                ó˜   — | j                  «       j                  |¬«      }|D ��cg c]  \  }}|j                  «       |f‘Œ c}}S c c}}w r‰  )rÃ   r°  rÄ   r×  s        r…   r°  zDUP_Flint.sqf_list_includeí  s@   € à—/‘/Ó#×4Ñ4¸Ð4Ó=ˆØ3:×<©4¨1¨a�!—.‘.Ó" AÒ&Ó<Ð<ùÓ<s   ¦Ac                ó¤  — | j                   j                  s| j                   j                  rN| j                  j	                  «       \  }}|D ��cg c]#  \  }}| j                  || j                   «      |f‘Œ% }}}n¶| j                   j                  rˆ| j                  j	                  «       \  }}|D ��cg c]#  \  }}| j                  || j                   «      |f‘Œ% }}}g }|D ]3  \  }}|j                  «       \  }}|||z  z  }|j                  ||f«       Œ5 nt        d| j                   z  «      ‚| j                  |«      }||fS c c}}w c c}}w )r³  r  )r�   r   r�   r¦   Úfactorr  r€   r  rÿ   rÅ   r	   )r¤   ræ   rÕ  rï   rù   Úfactors_monicrã  s          r…   r´  zDUP_Flint.factor_listò  s&  € ð �5‰5�;Š;˜!Ÿ%™%Ÿ+š+àŸV™VŸ]™]›_‰NˆE�7Ø>E×G±d°a¸˜Ÿ™ A q§u¡uÓ-¨qÒ1ÐGˆGÒGà�U‰U�[Š[ð ŸV™VŸ]™]›_‰NˆE�7ØDK×M¹D¸A¸q˜qŸz™z¨!¨Q¯U©UÓ3°QÒ7ÐMˆMÑMð ˆGØ%ò '‘��1Ø—~‘~Ó'‘��1Ø˜˜A™‘�Ø—‘  1˜vÕ&ñ'ô ÐFÈÏÉÑNÓOÐOð —/‘/ 'Ó*ˆà�gˆ~Ðùó- Hùó Ns   Á(EÂ3(Ec                ó”   — | j                  «       j                  «       }|D ��cg c]  \  }}|j                  «       |f‘Œ c}}S c c}}w r²  )rÃ   r¶  rÄ   rÚ  s       r…   r¶  zDUP_Flint.factor_list_include	  s=   € ð —/‘/Ó#×7Ñ7Ó9ˆØ3:×<©4¨1¨a�!—.‘.Ó" AÒ&Ó<Ð<ùÓ<r„  c                óÂ   ‡ — |D ��cg c]  \  }}|j                  «       |f‘Œ }}}t        |d¬«      }ˆ fd„}|D ��cg c]  \  }} ||«      |f‘Œ c}}S c c}}w c c}}w )z+Sort a list of factors to canonical order. T)Úmultiplec                óf   •— ‰j                  ‰j                  | d d d…   «      ‰j                  «      S r  r  )rï   r¤   s    €r…   r  z)DUP_Flint._sort_factors.<locals>.<lambda> 	  s&   ø€  §¡¨A¯F©F°1±T°r°T±7«O¸Q¿U¹UÓ!C€ r‡   )r¢   r	   )r¤   rÕ  rï   rù   Úto_dup_flints   `    r…   r	   zDUP_Flint._sort_factors	  s`   ø€ ð 29×:©¨¨A�Q—Y‘Y“[ !Ò$Ð:ˆÑ:Ü °$Ô7ˆÛCˆØ29×;©$¨!¨Q‘,˜q“/ 1Ò%Ó;Ð;ùó ;ùó <s
   ‡A½Ac                óF   — | j                  «       j                  ||||«      S r~   )rÃ   rÀ  rÄ  s        r…   rÀ  zDUP_Flint._isolate_real_roots#	  s    € Ø�‰Ó ×4Ñ4°S¸#¸sÀDÓIÐIr‡   c                óF   — | j                  «       j                  ||||«      S r~   )rÃ   r¿  rÄ  s        r…   r¿  z!DUP_Flint._isolate_real_roots_sqf&	  s    € Ø�‰Ó ×8Ñ8¸¸cÀ3ÈÓMÐMr‡   c                óF   — | j                  «       j                  ||||«      S r~   )rÃ   r¾  rÄ  s        r…   r¾  zDUP_Flint._isolate_all_roots)	  s"   € ð �‰Ó ×3Ñ3°C¸¸cÀ4ÓHÐHr‡   c                óF   — | j                  «       j                  ||||«      S r~   )rÃ   r½  rÄ  s        r…   r½  z DUP_Flint._isolate_all_roots_sqf/	  s    € Ø�‰Ó ×7Ñ7¸¸SÀ#ÀtÓLÐLr‡   c                óH   — | j                  «       j                  |||||«      S r~   )rÃ   rË  rÌ  s         r…   rË  zDUP_Flint._refine_real_root2	  s"   € Ø�‰Ó ×2Ñ2°1°a¸¸eÀTÓJÐJr‡   c                óD   — | j                  «       j                  ||¬«      S râ  )rÃ   rÓ  rÒ  s      r…   rÓ  zDUP_Flint.count_real_roots5	  s   € à�‰Ó ×1Ñ1°c¸sÐ1ÓCÐCr‡   c                óD   — | j                  «       j                  ||¬«      S rå  )rÃ   rÖ  rÒ  s      r…   rÖ  zDUP_Flint.count_complex_roots9	  s   € à�‰Ó ×4Ñ4¸À#Ð4ÓFÐFr‡   c                ó   — | j                    S rØ  rN  r£   s    r…   r*  zDUP_Flint.is_zero=	  s   € ð —6‘6ˆzÐr‡   c                óH   — | j                   | j                  j                  k(  S rÛ  )r¦   r�   rÐ   r£   s    r…   rÜ  zDUP_Flint.is_oneB	  s   € ð �v‰v˜Ÿ™Ÿ™Ñ"Ð"r‡   c                ó<   — | j                   j                  «       dk  S )rß  r   rL  r£   s    r…   rà  zDUP_Flint.is_groundG	  ó   € ð �v‰v�}‰}‹ !Ñ#Ð#r‡   c                ó<   — | j                   j                  «       dk  S )rì  r¯   rL  r£   s    r…   rí  zDUP_Flint.is_linearL	  r�  r‡   c                ó<   — | j                   j                  «       dk  S )rï  r÷  rL  r£   s    r…   rð  zDUP_Flint.is_quadraticQ	  r�  r‡   c                óž   ‡— | j                   Š‰j                  «       dk  xs, t        ˆfd„t        ‰j                  «       «      D «       «       S )rò  r   c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr~   rŠ   )r¬   r  Úfrs     €r…   r®   z(DUP_Flint.is_monomial.<locals>.<genexpr>Z	  s   øè ø€ Ò)L°A¨"¨Q­%Ñ)Lùs   ƒ)r¦   r3  ÚanyrX  )r¤   r¢  s    @r…   ró  zDUP_Flint.is_monomialV	  s<   ø€ ð �V‰VˆØ�y‰y‹{˜Q‰ÒL¤cÓ)L¼¸r¿y¹y»{Ó9KÔ)LÓ&LÐ"LÐLr‡   c                óP   — | j                  «       | j                  j                  k(  S ræ  )rí  r�   rÐ   r£   s    r…   rç  zDUP_Flint.is_monic\	  s   € ð �t‰t‹v˜Ÿ™Ÿ™Ñ"Ð"r‡   c                ó6   — | j                  «       j                  S ré  )rÃ   rê  r£   s    r…   rê  zDUP_Flint.is_primitivea	  s   € ð �‰Ó ×-Ñ-Ð-r‡   c                ó6   — | j                  «       j                  S rõ  )rÃ   r÷  r£   s    r…   r÷  zDUP_Flint.is_homogeneousf	  s   € ð �‰Ó ×/Ñ/Ð/r‡   c                óŽ   — | j                   j                  | j                   j                  «       «      }|j                  «       dk  S )rã  r   )r¦   rJ  r\  r3  rÁ  s     r…   rä  zDUP_Flint.is_sqfk	  s3   € ð �F‰F�J‰J�q—v‘v×(Ñ(Ó*Ó+ˆØ�x‰x‹z˜Q‰Ðr‡   c                óŽ   — | j                   j                  «       \  }}t        |«      dk(  ryt        |«      dk(  r|d   d   dk(  S y)rú  r   Tr¯   F)r¦   rŒ  rÛ  )r¤   r#  rÕ  s      r…   rû  zDUP_Flint.is_irreducibleq	  sH   € ð —V‘V—]‘]“_‰
ˆˆ7Üˆw‹<˜1ÒØÜ�‹\˜QÒØ˜1‘:˜a‘= AÑ%Ð%àr‡   c                óì   — | j                   j                  r	 | j                  t        «      } | j                   j
                  r#t        | j                  j                  «       «      S y# t        $ r Y yw xY wrü  )	r�   r€   rÇ   r   r   r   Úboolr¦   rþ  r£   s    r…   rþ  zDUP_Flint.is_cyclotomic|	  s_   € ð �5‰5�;Š;ðØ—I‘Iœb“M�ð �5‰5�;Š;Ü˜Ÿ™×,Ñ,Ó.Ó/Ð/ð øô "ò Ùðús   ˜A' Á'	A3Á2A3r~   r?  r)  r@  rB  )vrÙ   rC  rD  rE  r�   rF  r   rH  r�   r¢   r  r  r  r)  rç   rÒ   rí   rÃ   rÝ   rÂ   r  r  r+  r<  rB  rH  rM  rO  rV  r]  rg  rm  rq  ru  ry  r`  rd  r}  r„  rˆ  rŽ  r“  r™  rŸ  r¤  r©  r­  r±  rµ  r¹  rÐ  rÕ  rÙ  rí  rñ  rõ  rü  rÿ  r  r  r  r  r  r  r  r$  r)  r.  r3  r9  r:  rA  rD  rI  rO  rV  rU  r]  rd  rg  rj  rm  rr  rw  r�  r‰  rŽ  r”  r™  rž  r£  r¦  r©  r®  r°  r´  r¶  r	   rÀ  r¿  r¾  r½  rË  rÓ  rÖ  rI  r*  rÜ  rà  rí  rð  ró  rç  rê  r÷  rä  rû  rþ  rŠ   r‡   r…   rœ   rœ   Ç  s:  „ Ù3à
€Cà'€IòDð ñ&ó ð&ò%ð ñó ðð ñNó ðNð ñó ðò03ò
2ò'òò:ò"òNò1ò
"ó
9ò"ò
*ó"ó
"ò
"ò
"ò
#ò-ò-ò-ò.ò$ò6ò*ò2ò2ò2ò.ò.ò:ò$ò$ò$ò6ò2ò3òóò òò'òòò
,ò+ò3ò
&ó	Ió&ò*ò"ò2ò
Pò
Oò;ò/ò4ò?ò
0ò
)ò
5òò%òN4ò
:ò'ò
+ò
ò1òLò3ò
0ò
Hò7ò7ò?òBò
"ò
"ò
+óDó=ò
ò<	=ò<òJòNòIòMòKóDóGð ñó ðð ñ#ó ð#ð ñ$ó ð$ð ñ$ó ð$ð ñ$ó ð$ð ñMó ðMð
 ñ#ó ð#ð ñ.ó ð.ð ñ0ó ð0ð ñó ðð
 ñó ðð ñó ñr‡   rœ   c                óJ   — t        t        | ||«      t        |||«      ||«      S r~   )ÚDMFr   ©ÚnumÚdenr�   r�   s       r…   Úinit_normal_DMFr°  ‹	  s*   € ÜŒz˜#˜s CÓ(Ü˜#˜s CÓ(¨#¨só4ð 4r‡   c                  ó\  — e Zd ZdZdZd.d„Zed.d„«       Zd„ Zed.d„«       Z	d„ Z
d	„ Zd
„ Zd„ Zd/d„Zd0d„Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd1d„Zed„ «       Zed„ «       Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.d+„ Z/d,„ Z0d-„ Z1y)2r¬  z'Dense Multivariate Fractions over `K`. r­  Nc                óŒ   — | j                  |||«      \  }}}t        ||||«      \  }}|| _        || _        || _        || _        y r~   )Ú_parserc   r®  r¯  r�   r�   )rá   r˜   r�   r�   r®  r¯  s         r…   Ú__init__zDMF.__init__•	  sJ   € ØŸ™ C¨¨cÓ2‰ˆˆS�#Ü˜c 3¨¨SÓ1‰ˆˆSàˆŒØˆŒØˆŒØˆ�r‡   c                ó–   — | j                  |||«      \  }}}t        j                  | «      }||_        ||_        ||_        ||_        |S r~   )r³  rL  r™   r®  r¯  r�   r�   )r—   r˜   r�   r�   r®  r¯  rM  s          r…   r•   zDMF.newž	  sI   € àŸ
™
 3¨¨SÓ1‰ˆˆS�#ä�n‰n˜SÓ!ˆàˆŒØˆŒØˆŒØˆŒàˆ
r‡   c                óP   — | j                  || j                  | j                  «      S r~   )r•   r�   r�   )rá   r˜   s     r…   rç   zDMF.ground_new«	  s   € Ø�x‰x˜˜TŸX™X t§x¡xÓ0Ð0r‡   c                óŽ  — t        |t        «      rÉ|\  }}|�;t        |t        «      rt        |||«      }t        |t        «      r=t        |||«      }n/t	        |«      \  }}t	        |«      \  }}||k(  r|}nt        d«      ‚t        ||«      rt        d«      ‚t        ||«      rt        ||«      }n�t        |||«      rƒt        |||«      }t        |||«      }nh|}|�Jt        |t        «      rt        |||«      }n:t        |t        «      s*t        |j                  |«      |«      }nt	        |«      \  }}t        ||«      }|||fS )Nzinconsistent number of levelszfraction denominator)r’   rÝ  r¼   r&   r   r  r"   ÚZeroDivisionErrorr   r   r8   r“   r    rÇ   )r—   r˜   r�   r�   r®  r¯  Únum_levÚden_levs           r…   r³  z
DMF._parse®	  s:  € ä�cœ5Ô!Ø‰HˆC�àˆÜ˜c¤4Ô(Ü'¨¨S°#Ó6�Cä˜c¤4Ô(Ü'¨¨S°#Ó6‘Cä+¨CÓ0‘��WÜ+¨CÓ0‘��Wà˜gÒ%Ø!‘Cä$Ð%DÓEÐEä˜#˜sÔ#Ü'Ð(>Ó?Ð?ä˜#˜sÔ#Ü˜c 3Ó'‘ä! # s¨CÔ0Ü! # s¨CÓ0�CÜ! # s¨CÓ0‘CàˆCàˆÜ˜c¤4Ô(Ü'¨¨S°#Ó6‘CÜ# C¬Ô.Ü$ S§[¡[°Ó%5°sÓ;‘Cä'¨Ó,‘��Sä˜#˜sÓ#ˆCà�C˜ˆ}Ðr‡   c                ó‚   — | j                   j                  ›d| j                  ›d| j                  ›d| j                  ›d�S )Nz((rÖ   z), r×   )rØ   rÙ   r®  r¯  r�   r£   s    r…   rÚ   zDMF.__repr__Ú	  s'   € Ø%&§[¡[×%9Ó%9¸1¿5»5À!Ç%Ã%ÈÏËÐOÐOr‡   c                óê   — t        | j                  j                  t        | j                  | j
                  «      t        | j                  | j
                  «      | j
                  | j                  f«      S r~   )rÜ   rØ   rÙ   r1   r®  r�   r¯  r�   r£   s    r…   rÞ   zDMF.__hash__Ý	  sO   € Ü�Q—[‘[×)Ñ)¬<¸¿¹¸q¿u¹uÓ+EÜ˜Ÿ™ §¡Ó&¨¯©¨q¯u©uð6ó 7ð 	7r‡   c                óˆ  ‡ ‡— t        |t        «      r‰ j                  |j                  k7  rt        d‰ ›d|›�«      ‚‰ j                  |j                  k(  rE‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  f|j                  fS ‰ j                  ‰ j                  j                  |j                  «      c}Št        ‰ j                  |‰ j                  ‰«      t        ‰ j                  |‰ j                  ‰«      f}t        |j                  ||j                  ‰«      }dd|fˆˆ fd„	}|‰|||fS )z0Unify a multivariate fraction and a polynomial. rë   rì   TFc                ó„   •— |r|s| |z  S |dz
  }|rt        | ||‰«      \  } }‰j                  j                  | |f‰|«      S r›  ©rc   rØ   r•   ©r®  r¯  rX  Úkillr�   r�   r¤   s        €€r…   rR  zDMF.poly_unify.<locals>.perð	  óM   ø€ ÙÙØ" 3™w˜à! A™g˜áÜ)¨#¨s°C¸Ó=‘H�C˜à—{‘{—‘¨¨S z°3¸Ó<Ð<r‡   )r’   rŒ   r�   rz   r�   rR  r®  r¯  r¦   rí   r   ©r¤   rï   r�   rR  r  rR  r�   s   `     @r…   Ú
poly_unifyzDMF.poly_unifyá	  só   ù€ ä˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—E‘E˜1Ÿ5™5 !§%¡%¨!¯%©%°·±¨¸¿¹Ð@Ð@à—u‘u˜aŸe™eŸk™k¨!¯%©%Ó0ˆHˆC�ä˜QŸU™U C¨¯©°Ó4Ü˜QŸU™U C¨¯©°Ó4ð6ˆAô ˜AŸF™F C¨¯©°Ó4ˆAà%)°¸3ö 
=ð ˜˜S ! QÐ&Ð&r‡   c                óä  ‡ ‡— t        |t        «      r‰ j                  |j                  k7  rt        d‰ ›d|›�«      ‚‰ j                  |j                  k(  rQ‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  f|j                  |j                  ffS ‰ j                  ‰ j                  j                  |j                  «      c}Št        ‰ j                  |‰ j                  ‰«      t        ‰ j                  |‰ j                  ‰«      f}t        |j                  ||j                  ‰«      t        |j                  ||j                  ‰«      f}dd|fˆˆ fd„	}|‰|||fS )z5Unify representations of two multivariate fractions. rë   rì   TFc                ó„   •— |r|s| |z  S |dz
  }|rt        | ||‰«      \  } }‰j                  j                  | |f‰|«      S r›  r¿  rÀ  s        €€r…   rR  zDMF.frac_unify.<locals>.per
  rÂ  r‡   )
r’   r¬  r�   rz   r�   rR  r®  r¯  rí   r   rÃ  s   `     @r…   Ú
frac_unifyzDMF.frac_unifyþ	  s  ù€ ä˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—E‘E˜1Ÿ5™5 !§%¡%¨!¯%©%°·±¨Ø*+¯%©%°·±¨ð9ð 9ð —u‘u˜aŸe™eŸk™k¨!¯%©%Ó0ˆHˆC�ä˜QŸU™U C¨¯©°Ó4Ü˜QŸU™U C¨¯©°Ó4ð6ˆAô ˜QŸU™U C¨¯©°Ó4Ü˜QŸU™U C¨¯©°Ó4ð6ˆAð &*°¸3ö 
=ð ˜˜S ! QÐ&Ð&r‡   c                ó²   — | j                   | j                  }}|r|s||z  S |dz  }|rt        ||||«      \  }}| j                  j	                  ||f||«      S )z.Create a DMF out of the given representation. r¯   )r�   r�   rc   rØ   r•   )r¤   r®  r¯  rX  rÁ  r�   r�   s          r…   rR  zDMF.per
  s]   € à—5‘5˜!Ÿ%™%ˆSˆáÙØ˜3‘w�à�q‘�áÜ! # s¨C°Ó5‰HˆC�à�{‰{�‰  S˜z¨3°Ó4Ð4r‡   c                ó^   — | j                   }|r	|s|S |dz  }t        || j                  |«      S )rP  r¯   )r�   rŒ   r�   )r¤   r˜   rÁ  r�   s       r…   Úhalf_perzDMF.half_per,
  s2   € à�e‰eˆáÙØ�
à�q‘�ä�3˜Ÿ™˜sÓ#Ð#r‡   c                ó(   — | j                  d||«      S r›   ©r•   rÍ   s      r…   rÎ   zDMF.zero8
  ó   € à�w‰w�q˜#˜sÓ#Ð#r‡   c                ó(   — | j                  d||«      S r›  rÌ  rÍ   s      r…   rÐ   zDMF.one<
  rÍ  r‡   c                ó8   — | j                  | j                  «      S )z Returns the numerator of ``f``. )rÊ  r®  r£   s    r…   rU  z	DMF.numer@
  ó   € à�z‰z˜!Ÿ%™%Ó Ð r‡   c                ó8   — | j                  | j                  «      S )z"Returns the denominator of ``f``. )rÊ  r¯  r£   s    r…   rT  z	DMF.denomD
  rÐ  r‡   c                óN   — | j                  | j                  | j                  «      S )z4Remove common factors from ``f.num`` and ``f.den``. )rR  r®  r¯  r£   s    r…   rX  z
DMF.cancelH
  s   € à�u‰u�Q—U‘U˜AŸE™EÓ"Ð"r‡   c                ó�   — | j                  t        | j                  | j                  | j                  «      | j
                  d¬«      S )rc  F©rX  )rR  r8   r®  r�   r�   r¯  r£   s    r…   rd  zDMF.negL
  s0   € à�u‰u”W˜QŸU™U A§E¡E¨1¯5©5Ó1°1·5±5ÀˆuÓGÐGr‡   c                ó*   — | | j                  |«      z   S rf  )rç   rh  s     r…   ri  zDMF.add_groundP
  s   € à�1—<‘< “?Ñ"Ð"r‡   c           	     ó8  — t        |t        «      r,| j                  |«      \  }}}\  }}}t        |||||«      |}	}nV| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        t        ||||«      t        ||||«      ||«      }t        ||||«      }	 |||	«      S )z0Add two multivariate fractions ``f`` and ``g``. )r’   rŒ   rÄ  rF   rÇ  r9   r;   ©r¤   rï   r�   r�   rR  ÚF_numÚF_denr  r®  r¯  rR  ÚG_numÚG_dens                r…   r€  zDMF.addT
  ó°   € ä�aœÔØ/0¯|©|¸A«Ñ,ˆC��c™>˜E 5¨1Ü" 5¨%°°C¸Ó=¸u�‰Cà"#§,¡,¨q£/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eäœ' %¨°°SÓ9Ü! %¨°°SÓ9¸3ÀóEˆCä˜% ¨¨SÓ1ˆCá�3˜‹}Ðr‡   c           	     ó8  — t        |t        «      r,| j                  |«      \  }}}\  }}}t        |||||«      |}	}nV| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        t        ||||«      t        ||||«      ||«      }t        ||||«      }	 |||	«      S )z5Subtract two multivariate fractions ``f`` and ``g``. )r’   rŒ   rÄ  rG   rÇ  r:   r;   r×  s                r…   r…  zDMF.subc
  rÜ  r‡   c                ó  — t        |t        «      r+| j                  |«      \  }}}\  }}}t        ||||«      |}	}n>| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        ||||«      }t        ||||«      }	 |||	«      S )z5Multiply two multivariate fractions ``f`` and ``g``. ©r’   rŒ   rÄ  r;   rÇ  r×  s                r…   r‰  zDMF.mulr
  s”   € ä�aœÔØ/0¯|©|¸A«Ñ,ˆC��c™>˜E 5¨1Ü˜u a¨¨cÓ2°E�‰Cà"#§,¡,¨q£/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eä˜% ¨¨SÓ1ˆCÜ˜% ¨¨SÓ1ˆCá�3˜‹}Ðr‡   c           	     ó@  — t        |t        «      rx| j                  | j                  }}|dk  r||| }}}| j	                  t        ||| j                  | j                  «      t        ||| j                  | j                  «      d¬«      S t        dt        |«      z  «      ‚)r�  r   FrÔ  r‘  )
r’   rŽ   r®  r¯  rR  r=   r�   r�   r’  r”   )r¤   r  r®  r¯  s       r…   r•  zDMF.pow€
  s�   € ä�aœÔØ—u‘u˜aŸe™e�ˆCØ�1ŠuØ! 3¨¨˜!�S�Ø—5‘5œ  a¨¯©°·±Ó6Ü   a¨¯©°·±Ó6¸uð ó Fð Fô Ð6¼¸a»Ñ@ÓAÐAr‡   c                ó  — t        |t        «      r+| j                  |«      \  }}}\  }}}|t        ||||«      }	}n>| j	                  |«      \  }}}}
}|
|c\  }}\  }}t        ||||«      }t        ||||«      }	 |||	«      S )z0Computes quotient of fractions ``f`` and ``g``. rß  r×  s                r…   r¶  zDMF.quo‹
  s”   € ä�aœÔØ/0¯|©|¸A«Ñ,ˆC��c™>˜E 5¨1Øœg e¨Q°°SÓ9�‰Cà"#§,¡,¨q£/ÑˆC��c˜1˜aØ-.°Ð*‰NˆU�E™N˜U Eä˜% ¨¨SÓ1ˆCÜ˜% ¨¨SÓ1ˆCá�3˜‹}Ðr‡   c                óR   — | j                  | j                  | j                  d¬«      S )z&Computes inverse of a fraction ``f``. FrÔ  )rR  r¯  r®  )r¤   Úchecks     r…   r*  z
DMF.invert›
  s   € à�u‰u�Q—U‘U˜AŸE™E¨%ˆuÓ0Ð0r‡   c                óB   — t        | j                  | j                  «      S )z.Returns ``True`` if ``f`` is a zero fraction. ©r"   r®  r�   r£   s    r…   r*  zDMF.is_zeroŸ
  s   € ô ˜!Ÿ%™% §¡Ó'Ð'r‡   c                ó²   — t        | j                  | j                  | j                  «      xr+ t        | j                  | j                  | j                  «      S )z.Returns ``True`` if ``f`` is a unit fraction. )r#   r®  r�   r�   r¯  r£   s    r…   rÜ  z
DMF.is_one¤
  s>   € ô ˜Ÿ™ §¡ q§u¡uÓ-ò +Ü�a—e‘e˜QŸU™U A§E¡EÓ*ð	+r‡   c                ó"   — | j                  «       S r~   r  r£   s    r…   r  zDMF.__neg__ª
  r  r‡   c                óB  — t        |t        t        f«      r| j                  |«      S || j                  v r*| j                  | j                  j                  |«      «      S 	 | j                  | j                  |«      «      S # t        t        t        f$ r	 t        cY S w xY wr~   )r’   rŒ   r¬  r€  r�   ri  rÇ   rÊ  r’  r   rÊ   r  rÁ  s     r…   r  zDMF.__add__­
  s}   € Ü�aœ#œs˜Ô$Ø—5‘5˜“8ˆOØ�!—%‘%‰ZØ—<‘< §¡§¡¨aÓ 0Ó1Ð1ð	"Ø—5‘5˜Ÿ™ A›Ó'Ð'øÜœ>Ô+>Ð?ò 	"Ü!Ò!ð	"ús   Á!B ÂBÂBc                ó$   — | j                  |«      S r~   r  rÁ  s     r…   r  zDMF.__radd__¸
  r  r‡   c                óÒ   — t        |t        t        f«      r| j                  |«      S 	 | j                  | j	                  |«      «      S # t
        t        t        f$ r	 t        cY S w xY wr~   )	r’   rŒ   r¬  r…  rÊ  r’  r   rÊ   r  rÁ  s     r…   r  zDMF.__sub__»
  óV   € Ü�aœ#œs˜Ô$Ø—5‘5˜“8ˆOð	"Ø—5‘5˜Ÿ™ A›Ó'Ð'øÜœ>Ô+>Ð?ò 	"Ü!Ò!ð	"úó   ©A	 Á	A&Á%A&c                ó&   — |  j                  |«      S r~   r  rÁ  s     r…   r  zDMF.__rsub__Ä
  r  r‡   c                óÒ   — t        |t        t        f«      r| j                  |«      S 	 | j                  | j	                  |«      «      S # t
        t        t        f$ r	 t        cY S w xY wr~   )	r’   rŒ   r¬  r‰  rÊ  r’  r   rÊ   r  rÁ  s     r…   r  zDMF.__mul__Ç
  rë  rì  c                ó$   — | j                  |«      S r~   r  rÁ  s     r…   r  zDMF.__rmul__Ð
  r  r‡   c                ó$   — | j                  |«      S r~   r  r”  s     r…   r  zDMF.__pow__Ó
  r  r‡   c                óÒ   — t        |t        t        f«      r| j                  |«      S 	 | j                  | j	                  |«      «      S # t
        t        t        f$ r	 t        cY S w xY wr~   )	r’   rŒ   r¬  r¶  rÊ  r’  r   rÊ   r  rÁ  s     r…   r  zDMF.__truediv__Ö
  rë  rì  c                ó,   — | j                  d¬«      |z  S )NF)rã  )r*  )rá   rï   s     r…   r  zDMF.__rtruediv__ß
  s   € Ø�{‰{ ˆ{Ó'¨Ñ)Ð)r‡   c                ód  — 	 t        |t        «      r[| j                  |«      \  }}}\  }}}| j                  |j                  k(  r]t	        || j                  | j
                  «      xr ||k(  S | j                  |«      \  }}}}}| j                  |j                  k(  r||k(  S y# t        $ r Y yw xY wr‰   ©r’   rŒ   rÄ  r�   r#   r�   rÇ  rz   ©r¤   rï   r#  rØ  rÙ  r  rR  s          r…   r*  z
DMF.__eq__â
  s§   € ð	Ü˜!œSÔ!Ø-.¯\©\¸!«_Ñ*��1�a™˜% ¨à—5‘5˜AŸE™E’>Ü$ U¨A¯E©E°1·5±5Ó9ÒH¸eÀq¹jÐHà !§¡¨Q£‘��1�a˜˜Aà—5‘5˜AŸE™E’>Ø ™6�Mð øô !ò 	Øàð	ús   ‚A*B# Á-4B# Â#	B/Â.B/c                óf  — 	 t        |t        «      r\| j                  |«      \  }}}\  }}}| j                  |j                  k(  r^t	        || j                  | j
                  «      xr ||k(   S | j                  |«      \  }}}}}| j                  |j                  k(  r||k7  S y# t        $ r Y yw xY w)NTrô  rõ  s          r…   Ú__ne__z
DMF.__ne__ó
  sª   € ð	Ü˜!œSÔ!Ø-.¯\©\¸!«_Ñ*��1�a™˜% ¨à—5‘5˜AŸE™E’>Ü )¨%°·±¸¿¹Ó >Ò MÀ5ÈAÁ:ÐNÐNà !§¡¨Q£‘��1�a˜˜Aà—5‘5˜AŸE™E’>Ø ™6�Mð øô !ò 	Øàð	ús   ‚A+B$ Á.4B$ Â$	B0Â/B0c                ó:   — | j                  |«      \  }}}}}||k  S r~   ©rÇ  ©r¤   rï   r#  rR  r  s        r…   r4  z
DMF.__lt__  ó"   € ØŸ™ Q›‰ˆˆ1ˆa��AØ�1‰uˆr‡   c                ó:   — | j                  |«      \  }}}}}||k  S r~   rù  rú  s        r…   r7  z
DMF.__le__  ó"   € ØŸ™ Q›‰ˆˆ1ˆa��AØ�A‰vˆr‡   c                ó:   — | j                  |«      \  }}}}}||kD  S r~   rù  rú  s        r…   r:  z
DMF.__gt__  rû  r‡   c                ó:   — | j                  |«      \  }}}}}||k\  S r~   rù  rú  s        r…   r<  z
DMF.__ge__  rý  r‡   c                óD   — t        | j                  | j                  «       S r~   rå  r£   s    r…   r>  zDMF.__bool__  s   € Ü˜aŸe™e Q§U¡UÓ+Ð+Ð+r‡   r~   )TFr?  rA  )2rÙ   rC  rD  rE  rF  r´  rH  r•   rç   r³  rÚ   rÞ   rÄ  rÇ  rR  rÊ  rÎ   rÐ   rU  rT  rX  rd  ri  r€  r…  r‰  r•  r¶  rº  r*  rI  r*  rÜ  r  r  r  r  r  r  r  r  r  r  r*  r÷  r4  r7  r:  r<  r>  rŠ   r‡   r…   r¬  r¬  �	  sA  „ Ù1à,€Ióð ò
ó ð
ò1ð ò)ó ð)òVPò7ò'ò:'ó>5ó
$ð ñ$ó ð$ð ñ$ó ð$ò!ò!ò#òHò#òòòò	Bòð €Eó1ð ñ(ó ð(ð ñ+ó ð+ò
ò	"òò"òò"òòò"ò*òò"ò"òòòó,r‡   r¬  c                óD   — t        t        | |«      t        ||«      |«      S r~   )ÚANPr   )r˜   Úmodr�   s      r…   Úinit_normal_ANPr    s$   € ÜŒz˜#˜sÓ#Ü˜#˜sÓ# Só*ð *r‡   c                  óÜ  ‡ — e Zd ZdZdZd„ Zeˆ fd„«       Zd„ Ze	d„ «       Z
e	d„ «       Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+e	d(„ «       Z,e	d)„ «       Z-e	d*„ «       Z.d+„ Z/d,„ Z0d-„ Z1d.„ Z2d/„ Z3d0„ Z4d1„ Z5d2„ Z6d3„ Z7d4„ Z8d5„ Z9d6„ Z:d7„ Z;d8„ Z<d9„ Z=d:„ Z>d;„ Z?d<„ Z@d=„ ZAˆ xZBS )>r  z1Dense Algebraic Number Polynomials over a field. )r¦   Ú_modr�   c                óò  — t        |t        «      rn€t        |«      t        u rt        t	        ||«      |d«      }nWt        |t
        «      r|D �cg c]  }|j                  |«      ‘Œ }}n|j                  |«      g}t        t        |«      |d«      }t        |t        «      rn>t        |t        «      rt        t	        ||«      |d«      }nt        t        |«      |d«      }| j                  |||«      S c c}w r›   )	r’   rŒ   r”   r¼   r%   r“   rÇ   r   r•   )r—   r˜   r  r�   r  s        r…   r™   zANP.__new__"  sÎ   € Ü�cœ3ÔØÜ�#‹Yœ$ÑÜ”m C¨Ó-¨s°AÓ6‰Cä˜#œtÔ$Ø/2Ö3¨!�s—{‘{ 1•~Ð3�Ñ3à—{‘{ 3Ó'Ð(�Ü”i “n c¨1Ó-ˆCä�cœ3ÔØÜ˜œTÔ"Ü”m C¨Ó-¨s°AÓ6‰Cä”i “n c¨1Ó-ˆCà�w‰w�s˜C Ó%Ð%ùò 4s   ÁC4c                ó¼   •— |j                   |j                   cxk(  r|k(  st        d«      ‚ t        d«      ‚t        ‰| �  | «      }||_        ||_        ||_         |S )NzInconsistent domain)r�   rÅ   Úsuperr™   r¦   r  )r—   r˜   r  r�   rM  rØ   s        €r…   r•   zANP.new7  s]   ø€ à—‘˜3Ÿ7™7Ô) cÒ)ÜÐ4Ó5Ð5ð *ÜÐ4Ó5Ð5Ü‰g‰o˜cÓ"ˆØˆŒØˆŒØˆŒØˆ
r‡   c                óT   — t         | j                  | j                  | j                  ffS r~   )r  r˜   r  r�   rà   s    r…   r   zANP.__reduce__D  s    € Ü�T—X‘X˜tŸx™x¨¯©Ð2Ð2Ð2r‡   c                ó6   — | j                   j                  «       S r~   ©r¦   r¢   rà   s    r…   r˜   zANP.repG  s   € à�y‰y× Ñ Ó"Ð"r‡   c                ó"   — | j                  «       S r~   )Úmod_to_listrà   s    r…   r  zANP.modK  s   € à×ÑÓ!Ð!r‡   c                ó   — | j                   S r~   rN  rà   s    r…   Úto_DMPz
ANP.to_DMPO  ó   € Ø�y‰yÐr‡   c                ó   — | j                   S r~   )r  rà   s    r…   Ú
mod_to_DMPzANP.mod_to_DMPR  r  r‡   c                óP   — | j                  || j                  | j                  «      S r~   )r•   r  r�   rQ  s     r…   rR  zANP.perU  s   € Ø�u‰u�S˜!Ÿ&™& !§%¡%Ó(Ð(r‡   c                óº   — | j                   j                  ›d| j                  j                  «       ›d| j                  j                  «       ›d| j
                  ›d�S rÔ   )rØ   rÙ   r¦   r¢   r  r�   r£   s    r…   rÚ   zANP.__repr__X  s8   € Ø#$§;¡;×#7Ó#7¸¿¹¿¹Õ9IÈ1Ï6É6Ï>É>ÕK[Ð]^×]bÓ]bÐcÐcr‡   c                ó¨   — t        | j                  j                  | j                  «       | j                  j                  «       | j
                  f«      S r~   )rÜ   rØ   rÙ   rÝ   r  r�   r£   s    r…   rÞ   zANP.__hash__[  s5   € Ü�Q—[‘[×)Ñ)¨1¯:©:«<¸¿¹¿¹Ó9JÈAÏEÉEÐRÓSÐSr‡   c                ó®   — | j                   |k(  r| S | j                  | j                  j                  |«      | j                  j                  |«      |«      S )z.Convert ``f`` to a ``ANP`` over a new domain. )r�   r•   r¦   rÇ   r  rÆ   s     r…   rÇ   zANP.convert^  s?   € à�5‰5�CŠ<ØˆHà—5‘5˜Ÿ™Ÿ™¨Ó,¨a¯f©f¯n©n¸SÓ.AÀ3ÓGÐGr‡   c                óÖ  ‡‡— t        |t        «      r| j                  |j                  k7  rt        d| ›d|›�«      ‚| j                  |j                  k(  r9| j                  | j
                  | j                  |j                  | j                  fS | j                  j                  |j                  «      Št        | j                  | j                  ‰«      }t        |j                  |j                  ‰«      }‰| j                  k7  r1‰|j                  k7  r"t        | j                  | j                  ‰«      Šn(‰| j                  k(  r| j                  Šn|j                  Šˆˆfd„}‰|||‰fS )z0Unify representations of two algebraic numbers. rë   rì   c                ó   •— t        | ‰‰«      S r~   ©r  )r˜   r�   r  s    €€r…   r  zANP.unify.<locals>.<lambda>~  s   ø€ œc # s¨CÓ0€ r‡   )	r’   r  r  rz   r�   rR  r˜   rí   r   )r¤   rï   rR  r  rR  r�   r  s        @@r…   rí   z	ANP.unifye  s  ù€ ô ˜!œSÔ! Q§U¡U¨a¯e©e¢^Ý#ÂÁAÐ$FÓGÐGà�5‰5�A—E‘EŠ>Ø—5‘5˜!Ÿ%™% §¡¨¯©¨q¯u©uÐ4Ð4à—%‘%—+‘+˜aŸe™eÓ$ˆCä˜AŸE™E 1§5¡5¨#Ó.ˆAÜ˜AŸE™E 1§5¡5¨#Ó.ˆAà�a—e‘eŠ|  q§u¡u¢Ü! !§%¡%¨¯©°Ó4‘à˜!Ÿ%™%’<ØŸ%™%‘CàŸ%™%�Cä0ˆCà�C˜˜A˜sÐ"Ð"r‡   c                ó’  — t        |t        «      r| j                  |j                  k7  rt        d| ›d|›�«      ‚| j                  |j                  k7  rG| j                  j                  |j                  «      }| j                  |«      } |j                  |«      }| j                  |j                  | j                  | j                  fS rê   )r’   r  r  rz   r�   rí   rÇ   r¦   rî   s      r…   Ú	unify_ANPzANP.unify_ANP‚  s‹   € ä˜!œSÔ! Q§V¡V¨q¯v©vÒ%5Ý#ÂÁAÐ$FÓGÐGð �5‰5�A—E‘EŠ>Ø—%‘%—+‘+˜aŸe™eÓ$ˆCØ—	‘	˜#“ˆAØ—	‘	˜#“ˆAà�v‰v�q—v‘v˜qŸv™v q§u¡uÐ,Ð,r‡   c                ó   — t        d||«      S r›   r  ©r—   r  r�   s      r…   rÎ   zANP.zero�  ó   € ä�1�c˜3ÓÐr‡   c                ó   — t        d||«      S r›  r  r  s      r…   rÐ   zANP.one“  r  r‡   c                ó6   — | j                   j                  «       S )rò   )r¦   rô   r£   s    r…   rô   zANP.to_dict—  ó   € à�v‰v�~‰~ÓÐr‡   c                ó´   — t        | j                  d| j                  «      }|j                  «       D ]#  \  }}| j                  j	                  |«      ||<   Œ% |S )rö   r   )r'   r˜   r�   r÷   rø   )r¤   r˜   rù   rú   s       r…   rû   zANP.to_sympy_dict›  sN   € ä˜!Ÿ%™%  A§E¡EÓ*ˆà—I‘I“Kò 	'‰DˆAˆqØ—U‘U—^‘^ AÓ&ˆC�ŠFð	'ð ˆ
r‡   c                ó6   — | j                   j                  «       S r  r  r£   s    r…   r¢   zANP.to_list¤  r"  r‡   c                ó6   — | j                   j                  «       S )z5Return ``f.mod`` as a list with native coefficients. )r  r¢   r£   s    r…   r  zANP.mod_to_list¨  r"  r‡   c                óz   — | j                  «       D �cg c]  }| j                  j                  |«      ‘Œ c}S c c}w )rý   )r¢   r�   rø   rh  s     r…   r  zANP.to_sympy_list¬  s)   € à,-¯I©I«KÖ9 q�—‘—‘ Õ"Ò9Ð9ùÒ9s   “"8c                ó6   — | j                   j                  «       S r  )r¦   rÝ   r£   s    r…   rÝ   zANP.to_tuple°  s   € ð �v‰v�‰Ó Ð r‡   c           
     óh   — t        t        t        t        |j                  |«      «      «      ||«      S r~   )r  r   r“   r¤  rÇ   )r—   r˜   r  r�   s       r…   r¸   zANP.from_list¸  s&   € ä”9œT¤# c§k¡k°3Ó"7Ó8Ó9¸3ÀÓDÐDr‡   c                óV   — | j                  | j                  j                  |«      «      S rf  )rR  r¦   ri  rh  s     r…   ri  zANP.add_ground¼  ó    € à�u‰u�Q—V‘V×&Ñ& qÓ)Ó*Ð*r‡   c                óV   — | j                  | j                  j                  |«      «      S rl  )rR  r¦   rn  rh  s     r…   rn  zANP.sub_groundÀ  r*  r‡   c                óV   — | j                  | j                  j                  |«      «      S )z3Multiply ``f`` by an element of the ground domain. )rR  r¦   rr  rh  s     r…   rr  zANP.mul_groundÄ  r*  r‡   c                óV   — | j                  | j                  j                  |«      «      S )z6Quotient of ``f`` by an element of the ground domain. )rR  r¦   rv  rh  s     r…   rv  zANP.quo_groundÈ  r*  r‡   c                óT   — | j                  | j                  j                  «       «      S r~   )rR  r¦   rd  r£   s    r…   rd  zANP.negÌ  s   € Ø�u‰u�Q—V‘V—Z‘Z“\Ó"Ð"r‡   c                ór   — | j                  |«      \  }}}}| j                  |j                  |«      ||«      S r~   )r  r•   r€  ©r¤   rï   rR  r  r  r�   s         r…   r€  zANP.addÏ  ó2   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�u‰u�Q—U‘U˜1“X˜s CÓ(Ð(r‡   c                ór   — | j                  |«      \  }}}}| j                  |j                  |«      ||«      S r~   )r  r•   r…  r0  s         r…   r…  zANP.subÓ  r1  r‡   c                ó�   — | j                  |«      \  }}}}| j                  |j                  |«      j                  |«      ||«      S r~   )r  r•   r‰  r²  r0  s         r…   r‰  zANP.mul×  s;   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�u‰u�Q—U‘U˜1“X—\‘\ #Ó&¨¨SÓ1Ð1r‡   c                ó<  — t        |t        «      st        dt        |«      z  «      ‚| j                  }| j
                  }|dk  r|j                  |«      | }}| j                  |j                  |«      j                  | j                  «      || j                  «      S )r�  r‘  r   )r’   rŽ   r’  r”   r  r¦   r*  r•   r•  r²  r�   )r¤   r  r  rR  s       r…   r•  zANP.powÛ  s{   € ä˜!œSÔ!ÜÐ6¼¸a»Ñ@ÓAÐAà�f‰fˆØ�F‰FˆàˆqŠ5Ø—8‘8˜C“= 1 "ˆqˆAð �u‰u�Q—U‘U˜1“X—\‘\ !§&¡&Ó)¨3°·±Ó6Ð6r‡   c                ó®   — | j                  |«      \  }}}}| j                  |j                  |j                  |«      «      j	                  |«      ||«      S r~   )r  r•   r‰  r*  r²  r0  s         r…   rº  z	ANP.exquoé  sF   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�u‰u�Q—U‘U˜1Ÿ8™8 C›=Ó)×-Ñ-¨cÓ2°C¸Ó=Ð=r‡   c                óp   — | j                  |«      | j                  | j                  | j                  «      fS r~   )rº  rÎ   r  r�   rÁ  s     r…   r®  zANP.diví  s(   € Ø�w‰w�q‹z˜1Ÿ6™6 !§&¡&¨!¯%©%Ó0Ð0Ð0r‡   c                ó$   — | j                  |«      S r~   )rº  rÁ  s     r…   r¶  zANP.quoð  s   € Ø�w‰w�q‹zÐr‡   c                ó¨   — | j                  |«      \  }}}}|j                  |«      \  }}|j                  r| j                  ||«      S t	        d«      ‚)Nrc  )r  r  rÜ  rÎ   r   )r¤   rï   rR  r  r  r�   rÞ  rž  s           r…   r²  zANP.remó  sK   € ØŸ™ Q›‰ˆˆ1ˆc�3Ø�|‰|˜A‹‰ˆˆ1à�8Š8Ø—6‘6˜#˜sÓ#Ð#ä Ó/Ð/r‡   c                ó6   — | j                   j                  «       S rì  )r¦   rí  r£   s    r…   rí  zANP.LCü  ó   € à�v‰v�y‰y‹{Ðr‡   c                ó6   — | j                   j                  «       S rï  )r¦   rñ  r£   s    r…   rñ  zANP.TC   r:  r‡   c                ó.   — | j                   j                  S )z6Returns ``True`` if ``f`` is a zero algebraic number. )r¦   r*  r£   s    r…   r*  zANP.is_zero  s   € ð �v‰v�~‰~Ðr‡   c                ó.   — | j                   j                  S )z6Returns ``True`` if ``f`` is a unit algebraic number. )r¦   rÜ  r£   s    r…   rÜ  z
ANP.is_one	  s   € ð �v‰v�}‰}Ðr‡   c                ó.   — | j                   j                  S rÞ  )r¦   rà  r£   s    r…   rà  zANP.is_ground  s   € ð �v‰v×ÑÐr‡   c                ó   — | S r~   rŠ   r£   s    r…   Ú__pos__zANP.__pos__  s   € Øˆr‡   c                ó"   — | j                  «       S r~   r  r£   s    r…   r  zANP.__neg__  r  r‡   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr~   )r’   r  r€  r�   rÇ   ri  r   r  rÁ  s     r…   r  zANP.__add__  óW   € Ü�aœÔØ—5‘5˜“8ˆOð	#Ø—‘—‘˜aÓ ˆAð —<‘< “?Ð"øô ò 	"Ü!Ò!ð	"úó   £A ÁA!Á A!c                ó$   — | j                  |«      S r~   r  rÁ  s     r…   r  zANP.__radd__#  r  r‡   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr~   )r’   r  r…  r�   rÇ   rn  r   r  rÁ  s     r…   r  zANP.__sub__&  rC  rD  c                ó&   — |  j                  |«      S r~   r  rÁ  s     r…   r  zANP.__rsub__0  r  r‡   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr~   )r’   r  r‰  r�   rÇ   rr  r   r  rÁ  s     r…   r  zANP.__mul__3  rC  rD  c                ó$   — | j                  |«      S r~   r  rÁ  s     r…   r  zANP.__rmul__=  r  r‡   c                ó$   — | j                  |«      S r~   r  r”  s     r…   r  zANP.__pow__@  r  r‡   c                ó$   — | j                  |«      S r~   r!  rÁ  s     r…   r"  zANP.__divmod__C  r  r‡   c                ó$   — | j                  |«      S r~   r$  rÁ  s     r…   r%  zANP.__mod__F  r  r‡   c                óÈ   — t        |t        «      r| j                  |«      S 	 | j                  j	                  |«      }| j                  |«      S # t        $ r	 t        cY S w xY wr~   )r’   r  r¶  r�   rÇ   rv  r   r  rÁ  s     r…   r  zANP.__truediv__I  rC  rD  c                ód   — 	 | j                  |«      \  }}}}||k(  S # t        $ r	 t        cY S w xY wr~   ©r  rz   r  ©r¤   rï   rR  r  r#  s        r…   r*  z
ANP.__eq__S  ó>   € ð	"ØŸ™ Q›‰JˆAˆq�!�Qð �A‰vˆøô !ò 	"Ü!Ò!ð	"úó   ‚ �/®/c                ód   — 	 | j                  |«      \  }}}}||k7  S # t        $ r	 t        cY S w xY wr~   rO  rP  s        r…   r÷  z
ANP.__ne__Z  rQ  rR  c                ó8   — | j                  |«      \  }}}}||k  S r~   ©r  rP  s        r…   r4  z
ANP.__lt__a  ó    € Ø—[‘[ “^‰
ˆˆ1ˆa�Ø�1‰uˆr‡   c                ó8   — | j                  |«      \  }}}}||k  S r~   rU  rP  s        r…   r7  z
ANP.__le__e  ó    € Ø—[‘[ “^‰
ˆˆ1ˆa�Ø�A‰vˆr‡   c                ó8   — | j                  |«      \  }}}}||kD  S r~   rU  rP  s        r…   r:  z
ANP.__gt__i  rV  r‡   c                ó8   — | j                  |«      \  }}}}||k\  S r~   rU  rP  s        r…   r<  z
ANP.__ge__m  rX  r‡   c                ó,   — t        | j                  «      S r~   )rª  r¦   r£   s    r…   r>  zANP.__bool__q  s   € Ü�A—F‘F‹|Ðr‡   )CrÙ   rC  rD  rE  rF  r™   rH  r•   r   rI  r˜   r  r  r  rR  rÚ   rÞ   rÇ   rí   r  rÎ   rÐ   rô   rû   r¢   r  r  rÝ   r¸   ri  rn  rr  rv  rd  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>  Ú__classcell__)rØ   s   @r…   r  r    s¾  ø„ Ù;à'€Iò&ð* óó ðò3ð ñ#ó ð#ð ñ"ó ð"òòò)òdòTòHò#ò:-ð ñ ó ð ð ñ ó ð ò òò ò ò:ò!ð ñEó ðEò+ò+ò+ò+ò#ò)ò)ò2ò7ò>ò1òò0òòð ñó ðð ñó ðð ñ ó ð òòò#òò#òò#òòòòò#òòòòòòör‡   r  )’rE  Ú
__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{   r|   r†   rŒ   rž   rœ   r°  r¬  r  r  rŠ   r‡   r…   ú<module>rl     sI  ðÙ 7å "å ,å @å !Ý *ß Cß .Ñ .÷ó ÷÷ ÷ ÷ ÷ ÷ ÷ ÷ õ ÷0÷ ÷ ÷ ÷ ÷ õ ÷4÷ ÷ ÷ ñ ÷"÷ ÷ ÷(÷ (ñ (÷.ó .÷$÷ $÷ $ñ $÷ð
 �7ÒÛó=ð €EòôGˆ+ô GôT"p�ô pôfA�ô AòH4ô
E,Ð
˜kô E,òP*ô
Uˆ+õ Ur‡   