+
    iy                      R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHt ^ RIHtHtHt ^ RIHtHtHtHt ^ R	IHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8 ^ R
I9H:t:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtPHQtQHRtR ^ RISHTtTHUtUHVtVHWtWHXtXHYtYHZtZH[t[H\t\H]t]H^t^H_t_H`t`HataHbtb ^ RIcHdtdHeteHftfHgtgHhthHitiHjtjHktkHltlHmtm ^ RInHotoHptpHqtqHrtrHstsHtttHutu ^ RIvHwtwHxtxHytyHztz ^ RI{H|t|H}t}H~t~HtHtHtHtHtHtHtHt ^ RIHtHt ]R8X  d	   ^ RItR tMRtR t ! R R]
4      t ! R R]4      t ! R R]4      tR t ! R R]]
4      tR t ! R R ]
4      tR# )!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                    V P                   ;'       g5    V P                  ;'       g!    V P                  ;'       d    V P                  # N)is_ZZis_QQis_FF	_is_flintDs   &w/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/polys/polyclasses.py_supported_flint_domainr      s0    ww<<!''<<QWW%<%<<    c                    R # F r   s   &r   r   r      s    r   c                  ,   ] tR t^t$ RtRtR]R&   R]R&   RR lt]R 4       t	]
R	 4       tR
 t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tR tR t]R 4       t]R 4       tR tR tR tR tR tR tRR ltRR ltR tR tR t R t!R  t"R! t#RR" lt$R# t%R$ t&RR% lt'RR& lt(RR' lt)RR( lt*R) t+R* t,R+ t-R, t.R- t/R. t0RR/ lt1RR0 lt2R1 t3R2 t4R3 t5R4 t6R5 t7R6 t8R7 t9R8 t:R9 t;R: t<R; t=R< t>R= t?R> t@R? tAR@ tBRA tCRB tDRC tERD tFRE tGRF tHRG tIRH tJRI tKRJ tLRK tMRL tNRM tORN tPRO tQRP tRRQ tSRR tTRS tURT tVRU tWRV tXRW tYRX tZRY t[RZ t\R[ t]RR\ lt^R] t_R^ t`R_ taR` tbRa tcRb tdRc teRd tfRe tgRf thRg tiRh tjRi tkRRj ltlRk tmRRl ltnRm toRRn ltpRo tqRp trRq tsRr ttRs tuRt tvRu twRv txRw tyRx tzRy t{Rz t|RR{ lt}RR| lt~R} tR~ tR tR tR tR tR tRR ltR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRR ltRR ltR tR tRR ltR tR tR tR tRR ltR tRR ltRR lt]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       t]
R 4       tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRR ltRR ltR tR tR tR tR tRtR# )DMP)Dense Multivariate Polynomials over `K`. intlevr	   domNc                	    Vf   \        V4      w  rM1\        V\        4      '       g   \        R\	        V4      ,          4      hV P                  WV4      # )Nzexpected list, got %s)r   
isinstancelistr   typenewclsrepr   r   s   &&&&r   __new__DMP.__new__   sH    ;#C(HCC&& !849!DEEwws%%r   c                	    \         e/   V^ 8X  d(   \        V4      '       d   \        P                  WV4      # \        P                  WV4      # r}   )r{   r   	DUP_Flint_new
DMP_Pythonr   s   &&&&r   r   DMP.new   s>     ax3C88 ~~c44s--r   c                >    \        RRRR7       V P                  4       # )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   DMP.rep   s'     	" # &,'0		
 yy{r   c                   \         ex   \        V \        4      '       db   V P                  ^ 8X  dQ   \	        V P
                  4      '       d6   \        P                  V P                  V P
                  V P                  4      # V # )zConvert 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   _repr   s   &r   to_bestDMP.to_best   sW     !Z((QUUaZ<STUTYTY<Z<Z }}QVVQUUAEE::r   c                	   aa \        S\        4      '       g   Q h\        V\        4      '       d   V^ 8  g   Q hVV3R loS! W4       R# )    c                   < \        V \        4      '       g   Q hV^ 8X  dE   \        ;QJ d    V3R lV  4       F  '       d   K   RM	  RM! V3R lV  4       4      '       g   Q hR# V  F  pS! W!^,
          4       K  	  R# )r   c              3  F   <"   T F  pSP                  V4      x  K  	  R # 5ir}   )of_type).0cr   s   & r   	<genexpr>;DMP._validate_args.<locals>.validate_rep.<locals>.<genexpr>   s     73a3;;q>>3s   !FTN)r   r   all)r   r   rr   validate_reps   && r   r   (DMP._validate_args.<locals>.validate_rep   sZ    c4((((axs737sss7377777A !G, r   N)r   r	   r   )r   r   r   r   r   s   &&f&@r   _validate_argsDMP._validate_args   s>    #v&&&&#s##q00	- 	Sr   c                	>    \        WV4      pV P                  WV4      # r}   )r%   r   r   r   r   r   s   &&&&r   	from_dictDMP.from_dict   s    Cc*wws%%r   c                <    V P                  \        WRV4      W24      # )zCCreate an instance of ``cls`` given a list of native coefficients. N)r   r   r   s   &&&&r   	from_listDMP.from_list   s     ww{3T37BBr   c                :    V P                  \        WV4      W24      # )zBCreate an instance of ``cls`` given a list of SymPy coefficients. )r   r   r   s   &&&&r   from_sympy_listDMP.from_sympy_list   s     ww~c4c??r   c           
     	J    V ! \        \        \        W4      4      4      WC4      # r}   )dictr   zip)r   monomscoeffsr   r   s   &&&&&r   from_monoms_coeffsDMP.from_monoms_coeffs   s    4S012C==r   c                   V P                   V8X  d   V # V P                  '       g	   \        f   V P                  V4      # \	        V \
        4      '       dB   \        V4      '       d   V P                  V4      # V P                  4       P                  V4      # \	        V \        4      '       dB   \        V4      '       d    V P                  V4      P                  4       # V P                  V4      # \        R4      h)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   convertDMP.convert   s    55C<HUUUem::c?"9%%&s++zz#&(11#66:&&&s++zz#3355zz#&122r   c                	    \         hr}   NotImplementedErrorr   s   &&r   r   DMP._convert       !!r   c                	,    \        \        V4      W!4      # r}   )r   r    r   r   r   s   &&&r   zeroDMP.zero   s    8C=#++r   c                	,    \        \        W4      W!4      # r}   )r   r   r   s   &&&r   oneDMP.one   s    73$c//r   c                	    \         hr}   r   r   s   &r   _oneDMP._one  r   r   c                	v    V P                   P                  : R V P                  4       : RV P                  : R2# (, ))	__class____name__r   r   r   s   &r   __repr__DMP.__repr__  s#     {{33QYY[!%%HHr   c                	    \        V P                  P                  V P                  4       V P                  V P
                  34      # r}   )hashr   r   to_tupler   r   r   s   &r   __hash__DMP.__hash__
  s.    Q[[))1::<FGGr   c                	P    V P                  4       V P                  V P                  3# r}   )r   r   r   selfs   &r   __getnewargs__DMP.__getnewargs__  s    ||~txx11r   c                    \         hz*Construct a new ground instance of ``f``. r   r   coeffs   &&r   
ground_newDMP.ground_new      !!r   c                T   \        V\        4      '       d   V P                  VP                  8w  d   \        RV : RV: 24      hV P                  VP                  8w  dH   V P                  P                  VP                  4      pV P                  V4      p VP                  V4      pW3# z7Unify and return ``DMP`` instances of ``f`` and ``g``. Cannot unify  with )r   r   r   ry   r   unifyr   r   gr   s   && r   	unify_DMPDMP.unify_DMP  ss    !S!!QUUaee^#A$FGG55AEE>%%++aee$C		#A		#Atr   c                d    \        V P                  4       V P                  V P                  VR7      # )AConvert ``f`` to a dict representation with native coefficients. r   )r&   r   r   r   )r   r   s   &&r   to_dictDMP.to_dict   s!    199;quu4@@r   c                    V P                  VR7      pVP                  4        F"  w  r4V P                  P                  V4      W#&   K$  	  V# )@Convert ``f`` to a dict representation with SymPy coefficients. r  )r  itemsr   to_sympy)r   r   r   kvs   &&   r   to_sympy_dictDMP.to_sympy_dict$  s?    iiTi"IIKDAUU^^A&CF   
r   c                @   a a V V3R loS! S P                  4       4      # )@Convert ``f`` to a list representation with SymPy coefficients. c                   < . pV  F\  p\        V\        4      '       d   VP                  S! V4      4       K2  VP                  SP                  P	                  V4      4       K^  	  V# r}   )r   r   appendr   r  )r   outvalr   sympify_nested_lists   &  r   r  .DMP.to_sympy_list.<locals>.sympify_nested_list/  sQ    Cc4((JJ2378JJquu~~c23	 
 Jr   )r   )r   r  s   f@r   to_sympy_listDMP.to_sympy_list-  s    	 #199;//r   c                    \         hAConvert ``f`` to a list representation with native coefficients. r   r   s   &r   r   DMP.to_list:  r   r   c                    \         hz`
Convert ``f`` to a tuple representation with native coefficients.

This is needed for hashing.
r   r   s   &r   r   DMP.to_tuple>  s
     "!r   c                T    V P                  V P                  P                  4       4      # )zMake the ground domain a ring. )r   r   get_ringr   s   &r   to_ringDMP.to_ringF  s    yy)**r   c                T    V P                  V P                  P                  4       4      # )z Make the ground domain a field. )r   r   	get_fieldr   s   &r   to_fieldDMP.to_fieldJ      yy*++r   c                T    V P                  V P                  P                  4       4      # )zMake the ground domain exact. )r   r   	get_exactr   s   &r   to_exactDMP.to_exactN  r*  r   c                |    V P                   '       g   V'       g   V P                  W4      # V P                  WV4      # z1Take a continuous subsequence of terms of ``f``. )r   _slice
_slice_levr   mnjs   &&&&r   slice	DMP.sliceR  s,    uuuQ88A>!<<a((r   c                	    \         hr}   r   )r   r4  r5  s   &&&r   r1  
DMP._sliceY  r   r   c                	    \         hr}   r   r3  s   &&&&r   r2  DMP._slice_lev\  r   r   c                Z    V P                  VR7       UUu. uF  w  r#VNK	  	  upp# u uppi )z;Returns all non-zero coefficients from ``f`` in lex order. orderterms)r   r?  _r   s   &&  r   r   
DMP.coeffs_  )     wwUw353tq3555   'c                Z    V P                  VR7       UUu. uF  w  r#VNK	  	  upp# u uppi )z8Returns all non-zero monomials from ``f`` in lex order. r>  r@  )r   r?  r4  rB  s   &&  r   r   
DMP.monomsc  rD  rE  c                    V P                   '       d3   RV P                  ^,           ,          pW P                  P                  3.# V P	                  VR7      # )4Returns all non-zero terms from ``f`` in lex order. r>  r   )is_zeror   r   r   _terms)r   r?  
zero_monoms   && r   rA  	DMP.termsg  sB    999quuqy)J,--88%8((r   c                	    \         hr}   r   r   r?  s   &&r   rL  
DMP._termso  r   r   c                    V P                   '       d   \        R4      hV '       g   V P                  P                  .# \	        V P                  4       4      # )z%Returns all coefficients from ``f``. &multivariate polynomials not supported)r   rz   r   r   r   r   r   s   &r   
all_coeffsDMP.all_coeffsr  s;    555!"JKKEEJJ<		$$r   c                    V P                   '       d   \        R4      hV P                  4       pV^ 8  d   R.# \        V P	                  4       4       UUu. uF  w  r#W,
          3NK  	  upp# u uppi )z"Returns all monomials from ``f``. rS  rJ  )r   rz   degree	enumerater   r   r5  ir   s   &   r   
all_monomsDMP.all_monoms|  s[    555!"JKKHHJq56M*3AIIK*@B*@$!aeX*@BBBs   A,c                   V P                   '       d   \        R4      hV P                  4       pV^ 8  d   RV P                  P                  3.# \        V P                  4       4       UUu. uF  w  r#W,
          3V3NK  	  upp# u uppi )z Returns all terms from a ``f``. rS  rJ  )r   rz   rW  r   r   rX  r   rY  s   &   r   	all_termsDMP.all_terms  sn    555!"JKKHHJq5155::&''/8/EG/Etqquh]/EGGGs   *Bc                >    V P                  4       P                  4       # z-Convert algebraic coefficients to rationals. )_liftr   r   s   &r   liftDMP.lift  s    wwy  ""r   c                	    \         hr}   r   r   s   &r   rb  	DMP._lift  r   r   c                    \         h2Reduce degree of `f` by mapping `x_i^m` to `y_i`. r   r   s   &r   deflateDMP.deflate  r   r   c                    \         h,Inject ground domain generators into ``f``. r   r   fronts   &&r   inject
DMP.inject  r   r   c                    \         h2Eject selected generators into the ground domain. r   r   r   rp  s   &&&r   eject	DMP.eject  r   r   c                H    V P                  4       w  rWP                  4       3# )a(  
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   excludeDMP.exclude  s      zz|))+~r   c                	    \         hr}   r   r   s   &r   rz  DMP._exclude  r   r   c                $    V P                  V4      # )ay  
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   permuteDMP.permute  s    " zz!}r   c                	    \         hr}   r   r  s   &&r   r  DMP._permute  r   r   c                    \         hz/Remove GCD of terms from the polynomial ``f``. r   r   s   &r   	terms_gcdDMP.terms_gcd  r   r   c                    \         hz)Make all coefficients in ``f`` positive. r   r   s   &r   absDMP.abs  r   r   c                    \         h"Negate all coefficients in ``f``. r   r   s   &r   negDMP.neg  r   r   c                V    V P                  V P                  P                  V4      4      # z.Add an element of the ground domain to ``f``. )_add_groundr   r   r   r   s   &&r   
add_groundDMP.add_ground      }}QUU]]1-..r   c                V    V P                  V P                  P                  V4      4      # z5Subtract an element of the ground domain from ``f``. )_sub_groundr   r   r  s   &&r   
sub_groundDMP.sub_ground  r  r   c                V    V P                  V P                  P                  V4      4      # z5Multiply ``f`` by a an element of the ground domain. )_mul_groundr   r   r  s   &&r   
mul_groundDMP.mul_ground  r  r   c                V    V P                  V P                  P                  V4      4      # z8Quotient of ``f`` by a an element of the ground domain. )_quo_groundr   r   r  s   &&r   
quo_groundDMP.quo_ground  r  r   c                V    V P                  V P                  P                  V4      4      # z>Exact quotient of ``f`` by a an element of the ground domain. )_exquo_groundr   r   r  s   &&r   exquo_groundDMP.exquo_ground  s    quu}}Q/00r   c                J    V P                  V4      w  r#VP                  V4      # z2Add two multivariate polynomials ``f`` and ``g``. )r  _addr   r  r}  Gs   &&  r   addDMP.add      {{1~vvayr   c                J    V P                  V4      w  r#VP                  V4      # z7Subtract two multivariate polynomials ``f`` and ``g``. )r  _subr  s   &&  r   subDMP.sub  r  r   c                J    V P                  V4      w  r#VP                  V4      # z7Multiply two multivariate polynomials ``f`` and ``g``. )r  _mulr  s   &&  r   mulDMP.mul  r  r   c                "    V P                  4       # z(Square a multivariate polynomial ``f``. )_sqrr   s   &r   sqrDMP.sqr  s    vvxr   c                    \        V\        4      '       g   \        R\        V4      ,          4      hV P	                  V4      # +Raise ``f`` to a non-negative power ``n``. ``int`` expected, got %s)r   r   	TypeErrorr   _powr   r5  s   &&r   powDMP.pow  s2    !S!!6a@AAvvayr   c                J    V P                  V4      w  r#VP                  V4      # z/Polynomial pseudo-division of ``f`` and ``g``. )r  _pdivr  s   &&  r   pdivDMP.pdiv      {{1~wwqzr   c                J    V P                  V4      w  r#VP                  V4      # z0Polynomial pseudo-remainder of ``f`` and ``g``. )r  _premr  s   &&  r   premDMP.prem  r  r   c                J    V P                  V4      w  r#VP                  V4      # z/Polynomial pseudo-quotient of ``f`` and ``g``. )r  _pquor  s   &&  r   pquoDMP.pquo  r  r   c                J    V P                  V4      w  r#VP                  V4      # z5Polynomial exact pseudo-quotient of ``f`` and ``g``. )r  _pexquor  s   &&  r   pexquo
DMP.pexquo  s    {{1~yy|r   c                J    V P                  V4      w  r#VP                  V4      # z7Polynomial division with remainder of ``f`` and ``g``. )r  _divr  s   &&  r   divDMP.div   r  r   c                J    V P                  V4      w  r#VP                  V4      # z2Computes polynomial remainder of ``f`` and ``g``. )r  _remr  s   &&  r   remDMP.rem%  r  r   c                J    V P                  V4      w  r#VP                  V4      # z1Computes polynomial quotient of ``f`` and ``g``. )r  _quor  s   &&  r   quoDMP.quo*  r  r   c                J    V P                  V4      w  r#VP                  V4      # z7Computes polynomial exact quotient of ``f`` and ``g``. )r  _exquor  s   &&  r   exquo	DMP.exquo/  s    {{1~xx{r   c                	    \         hr}   r   r  s   &&r   r  DMP._add_ground4  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._sub_ground7  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._mul_ground:  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._quo_ground=  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._exquo_ground@  r   r   c                	    \         hr}   r   r   r  s   &&r   r  DMP._addC  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._subF  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._mulI  r   r   c                	    \         hr}   r   r   s   &r   r  DMP._sqrL  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._powO  r   r   c                	    \         hr}   r   r  s   &&r   r  	DMP._pdivR  r   r   c                	    \         hr}   r   r  s   &&r   r  	DMP._premU  r   r   c                	    \         hr}   r   r  s   &&r   r  	DMP._pquoX  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._pexquo[  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._div^  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._rema  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._quod  r   r   c                	    \         hr}   r   r  s   &&r   r  
DMP._exquog  r   r   c                    \        V\        4      '       g   \        R\        V4      ,          4      hV P	                  V4      # )0Returns the leading degree of ``f`` in ``x_j``. r  )r   r   r  r   _degreer   r6  s   &&r   rW  
DMP.degreej  s2    !S!!6a@AAyy|r   c                	    \         hr}   r   r#  s   &&r   r"  DMP._degreeq  r   r   c                    \         hz$Returns a list of degrees of ``f``. r   r   s   &r   degree_listDMP.degree_listt  r   r   c                    \         h#Returns the total degree of ``f``. r   r   s   &r   total_degreeDMP.total_degreex  r   r   c                    V P                  4       p/ pV\        V P                  4       ^ ,          ^ ,          4      8H  pV P                  4        F  p\        V^ ,          4      pWb8  d
   W&,
          pM^ pV'       d   V^,          W5^ ,          V3,           &   KJ  \	        V^ ,          4      pW;;,          V,          uu&   V^,          V\        V4      &   K  	  \        P                  W0P                  \        V4      ,           V P                  4      # )z&Return homogeneous polynomial of ``f``)r.  lenrA  sumr   tupler   r   r   r   r   )	r   stdresult
new_symboltermdrZ  ls	   &&       r   
homogenizeDMP.homogenize|  s    ^^3qwwy|A//
GGIDDGAvF)-aAw!~&aM	#'7uQx   }}VUUS_%<aeeDDr   c                    V P                   '       d   \        ) # V P                  4       p\        V^ ,          4      pV F  p\        V4      pWB8w  g   K   R# 	  V# )z(Returns the homogeneous order of ``f``. N)rK  r   r   r2  )r   r   tdegmonom_tdegs   &    r   homogeneous_orderDMP.homogeneous_order  sL    9993J6!9~EJE}	  r   c                    \         hz*Returns the leading coefficient of ``f``. r   r   s   &r   LCDMP.LC  r   r   c                    \         hz+Returns the trailing coefficient of ``f``. r   r   s   &r   TCDMP.TC  r   r   c                    \         ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   V P                  V4      # \        R4      h)+Returns the ``n``-th coefficient of ``f``. c              3  B   "   T F  p\        V\        4      x  K  	  R # 5ir}   )r   r   )r   r5  s   & r   r   DMP.nth.<locals>.<genexpr>  s     -1az!S!!1s   FTza sequence of integers expected)r   _nthr  r   Ns   &*r   nthDMP.nth  s=    3-1-333-1---66!9=>>r   c                	    \         hr}   r   rP  s   &&r   rO  DMP._nth  r   r   c                    \         hzReturns maximum norm of ``f``. r   r   s   &r   max_normDMP.max_norm  r   r   c                    \         hzReturns l1 norm of ``f``. r   r   s   &r   l1_normDMP.l1_norm  r   r   c                    \         hz!Return squared l2 norm of ``f``. r   r   s   &r   l2_norm_squaredDMP.l2_norm_squared  r   r   c                    \         hz0Clear denominators, but keep the ground domain. r   r   s   &r   clear_denomsDMP.clear_denoms  r   r   c                    \        V\        4      '       g   \        R\        V4      ,          4      h\        V\        4      '       g   \        R\        V4      ,          4      hV P	                  W4      # )EComputes the ``m``-th order indefinite integral of ``f`` in ``x_j``. r  )r   r   r  r   
_integrater   r4  r6  s   &&&r   	integrateDMP.integrate  sU    !S!!6a@AA!S!!6a@AA||A!!r   c                	    \         hr}   r   ri  s   &&&r   rh  DMP._integrate  r   r   c                    \        V\        4      '       g   \        R\        V4      ,          4      h\        V\        4      '       g   \        R\        V4      ,          4      hV P	                  W4      # )<Computes the ``m``-th order derivative of ``f`` in ``x_j``. r  )r   r   r  r   _diffri  s   &&&r   diffDMP.diff  sT    !S!!6a@AA!S!!6a@AAwwq}r   c                	    \         hr}   r   ri  s   &&&r   rp  	DMP._diff  r   r   c                &   \        V\        4      '       g   \        R\        V4      ,          4      h^ Tu;8:  d   V P                  8:  g   M \        RV,          4      hV P                  '       d   V P                  W4      # V P                  V4      # )z5Evaluates ``f`` at the given point ``a`` in ``x_j``. r  zinvalid variable index %s)r   r   r  r   r   
ValueError	_eval_lev_evalr   ar6  s   &&&r   evalDMP.eval  sj    !S!!6a@AAq/AEE/81<==555;;q$$771:r   c                	    \         hr}   r   r   rz  s   &&r   rx  	DMP._eval  r   r   c                	    \         hr}   r   ry  s   &&&r   rw  DMP._eval_lev  r   r   c                    V P                  V4      w  r#VP                  '       d   \        R4      hVP                  V4      # )2Half extended Euclidean algorithm, if univariate. univariate polynomial expected)r  r   rv  _half_gcdexr  s   &&  r   
half_gcdexDMP.half_gcdex  s5    {{1~555=>>}}Qr   c                	    \         hr}   r   r  s   &&r   r  DMP._half_gcdex  r   r   c                    V P                  V4      w  r#VP                  '       d   \        R4      hVP                  P                  '       g   \        R4      hVP                  V4      # )-Extended Euclidean algorithm, if univariate. r  zground domain must be a field)r  r   rv  r   is_Fieldr   _gcdexr  s   &&  r   gcdex	DMP.gcdex  sM    {{1~555=>>uu~~~=>>xx{r   c                	    \         hr}   r   r  s   &&r   r  
DMP._gcdex  r   r   c                    V P                  V4      w  r#VP                  '       d   \        R4      hVP                  V4      # )(Invert ``f`` modulo ``g``, if possible. r  )r  r   rv  _invertr  s   &&  r   invert
DMP.invert  s4    {{1~555=>>yy|r   c                	    \         hr}   r   r  s   &&r   r  DMP._invert  r   r   c                ^    V P                   '       d   \        R4      hV P                  V4      # )"Compute ``f**(-1)`` mod ``x**n``. r  )r   rv  _revertr  s   &&r   revert
DMP.revert  s%    555=>>yy|r   c                	    \         hr}   r   r  s   &&r   r  DMP._revert  r   r   c                J    V P                  V4      w  r#VP                  V4      # z7Computes subresultant PRS sequence of ``f`` and ``g``. )r  _subresultantsr  s   &&  r   subresultantsDMP.subresultants  s"    {{1~""r   c                	    \         hr}   r   r  s   &&r   r  DMP._subresultants#  r   r   c                |    V P                  V4      w  r4V'       d   VP                  V4      # VP                  V4      # /Computes resultant of ``f`` and ``g`` via PRS. )r  _resultant_includePRS
_resultant)r   r  
includePRSr}  r  s   &&&  r   	resultantDMP.resultant&  s3    {{1~**1--<<?"r   c                	    \         hr}   r   )r   r  r  s   &&&r   r  DMP._resultant.  r   r   c                    \         hz Computes discriminant of ``f``. r   r   s   &r   discriminantDMP.discriminant1  r   r   c                J    V P                  V4      w  r#VP                  V4      # z4Returns GCD of ``f`` and ``g`` and their cofactors. )r  
_cofactorsr  s   &&  r   	cofactorsDMP.cofactors5  s    {{1~||Ar   c                	    \         hr}   r   r  s   &&r   r  DMP._cofactors:  r   r   c                J    V P                  V4      w  r#VP                  V4      # z+Returns polynomial GCD of ``f`` and ``g``. )r  _gcdr  s   &&  r   gcdDMP.gcd=  r  r   c                	    \         hr}   r   r  s   &&r   r  DMP._gcdB  r   r   c                J    V P                  V4      w  r#VP                  V4      # z+Returns polynomial LCM of ``f`` and ``g``. )r  _lcmr  s   &&  r   lcmDMP.lcmE  r  r   c                	    \         hr}   r   r  s   &&r   r  DMP._lcmJ  r   r   c                |    V P                  V4      w  r4V'       d   VP                  V4      # VP                  V4      # 6Cancel common factors in a rational function ``f/g``. )r  _cancel_include_cancel)r   r  includer}  r  s   &&&  r   cancel
DMP.cancelM  s3    {{1~$$Q''99Q<r   c                	    \         hr}   r   r  s   &&r   r  DMP._cancelV  r   r   c                	    \         hr}   r   r  s   &&r   r  DMP._cancel_includeY  r   r   c                V    V P                  V P                  P                  V4      4      # z&Reduce ``f`` modulo a constant ``p``. )_truncr   r   r   ps   &&r   trunc	DMP.trunc\  s    xxa())r   c                	    \         hr}   r   r  s   &&r   r  
DMP._trunc`  r   r   c                    \         hz'Divides all coefficients by ``LC(f)``. r   r   s   &r   monic	DMP.monicc  r   r   c                    \         hz(Returns GCD of polynomial coefficients. r   r   s   &r   contentDMP.contentg  r   r   c                    \         hz/Returns content and a primitive form of ``f``. r   r   s   &r   	primitiveDMP.primitivek  r   r   c                J    V P                  V4      w  r#VP                  V4      # z4Computes functional composition of ``f`` and ``g``. )r  _composer  s   &&  r   composeDMP.composeo  s    {{1~zz!}r   c                	    \         hr}   r   r  s   &&r   r  DMP._composet  r   r   c                \    V P                   '       d   \        R4      hV P                  4       # ),Computes functional decomposition of ``f``. r  )r   rv  
_decomposer   s   &r   	decomposeDMP.decomposew  s#    555=>>||~r   c                	    \         hr}   r   r   s   &r   r  DMP._decompose~  r   r   c                    V P                   '       d   \        R4      hV P                  V P                  P	                  V4      4      # )/Efficiently compute Taylor shift ``f(x + a)``. r  )r   rv  _shiftr   r   r~  s   &&r   shift	DMP.shift  s3    555=>>xxa())r   c                    V Uu. uF  q P                   P                  V4      NK  	  ppV P                  V4      # u upi z/Efficiently compute Taylor shift ``f(X + A)``. )r   r   _shift_list)r   rz  ais   && r   
shift_listDMP.shift_list  s5    )*+2UU]]2+}}Q ,s   #;c                	    \         hr}   r   r~  s   &&r   r  
DMP._shift  r   r   c                    V P                   '       d   \        R4      hVP                  V4      w  r4V P                  V4      w  rSVP                  V4      w  rTVP                  W44      # )5Evaluate functional transformation ``q**n * f(p/q)``.r  )r   rv  r  
_transform)r   r  qr  Qr}  s   &&&   r   	transformDMP.transform  sS    555=>>{{1~{{1~{{1~||A!!r   c                	    \         hr}   r   r   r  r	  s   &&&r   r  DMP._transform  r   r   c                \    V P                   '       d   \        R4      hV P                  4       # )&Computes the Sturm sequence of ``f``. r  )r   rv  _sturmr   s   &r   sturm	DMP.sturm  s#    555=>>xxzr   c                	    \         hr}   r   r   s   &r   r  
DMP._sturm  r   r   c                \    V P                   '       d   \        R4      hV P                  4       # )7Computes the Cauchy upper bound on the roots of ``f``. r  )r   rv  _cauchy_upper_boundr   s   &r   cauchy_upper_boundDMP.cauchy_upper_bound  &    555=>>$$&&r   c                	    \         hr}   r   r   s   &r   r  DMP._cauchy_upper_bound  r   r   c                \    V P                   '       d   \        R4      hV P                  4       # )?Computes the Cauchy lower bound on the nonzero roots of ``f``. r  )r   rv  _cauchy_lower_boundr   s   &r   cauchy_lower_boundDMP.cauchy_lower_bound  r  r   c                	    \         hr}   r   r   s   &r   r!  DMP._cauchy_lower_bound  r   r   c                \    V P                   '       d   \        R4      hV P                  4       # )BComputes the squared Mignotte bound on root separations of ``f``. r  )r   rv  _mignotte_sep_bound_squaredr   s   &r   mignotte_sep_bound_squaredDMP.mignotte_sep_bound_squared  s&    555=>>,,..r   c                	    \         hr}   r   r   s   &r   r(  DMP._mignotte_sep_bound_squared  r   r   c                \    V P                   '       d   \        R4      hV P                  4       # )4Computes greatest factorial factorization of ``f``. r  )r   rv  	_gff_listr   s   &r   gff_listDMP.gff_list  s#    555=>>{{}r   c                	    \         hr}   r   r   s   &r   r/  DMP._gff_list  r   r   c                    \         hzComputes ``Norm(f)``.r   r   s   &r   normDMP.norm  r   r   c                    \         hz$Computes square-free norm of ``f``. r   r   s   &r   sqf_normDMP.sqf_norm  r   r   c                    \         hz$Computes square-free part of ``f``. r   r   s   &r   sqf_partDMP.sqf_part  r   r   c                    \         h0Returns a list of square-free factors of ``f``. r   r   r   s   &&r   sqf_listDMP.sqf_list  r   r   c                    \         hrA  r   rC  s   &&r   sqf_list_includeDMP.sqf_list_include  r   r   c                    \         h0Returns a list of irreducible factors of ``f``. r   r   s   &r   factor_listDMP.factor_list  r   r   c                    \         hrJ  r   r   s   &r   factor_list_includeDMP.factor_list_include  r   r   c                4   V P                   '       d   \        R4      hV'       d   V'       d   V P                  W#WER7      # V'       d   V'       g   V P                  W#WER7      # V'       g   V'       d   V P	                  W#WER7      # V P                  W#WER7      # )z0Compute isolating intervals for roots of ``f``. z1Cannot isolate roots of a multivariate polynomialepsinfsupfast)r   rz   _isolate_all_roots_sqf_isolate_all_roots_isolate_real_roots_sqf_isolate_real_roots)r   r   rS  rT  rU  rV  sqfs   &&&&&&&r   	intervalsDMP.intervals  s~    555!"UVV3++#+QQ''Cc'MM,,3,RR((Ss(NNr   c                	    \         hr}   r   r   rS  rT  rU  rV  s   &&&&&r   rX  DMP._isolate_all_roots  r   r   c                	    \         hr}   r   r_  s   &&&&&r   rW  DMP._isolate_all_roots_sqf  r   r   c                	    \         hr}   r   r_  s   &&&&&r   rZ  DMP._isolate_real_roots   r   r   c                	    \         hr}   r   r_  s   &&&&&r   rY  DMP._isolate_real_roots_sqf  r   r   c                d    V P                   '       d   \        R4      hV P                  WW4VR7      # )z]
Refine an isolating interval to the given precision.

``eps`` should be a rational number.

z1Cannot refine a root of a multivariate polynomialrS  stepsrV  )r   rz   _refine_real_rootr   r4  trS  ri  rV  s   &&&&&&r   refine_rootDMP.refine_root  s9     555!CE E ""1SD"IIr   c                	    \         hr}   r   rk  s   &&&&&&r   rj  DMP._refine_real_root  r   r   c                    \         h)<Return the number of real roots of ``f`` in ``[inf, sup]``. r   r   rT  rU  s   &&&r   count_real_rootsDMP.count_real_roots  r   r   c                    \         h)?Return the number of complex roots of ``f`` in ``[inf, sup]``. r   rs  s   &&&r   count_complex_rootsDMP.count_complex_roots  r   r   c                    \         hz0Returns ``True`` if ``f`` is a zero polynomial. r   r   s   &r   rK  DMP.is_zero  
     "!r   c                    \         hz0Returns ``True`` if ``f`` is a unit polynomial. r   r   s   &r   is_one
DMP.is_one#  r}  r   c                    \         h>Returns ``True`` if ``f`` is an element of the ground domain. r   r   s   &r   	is_groundDMP.is_ground(  r}  r   c                    \         hz7Returns ``True`` if ``f`` is a square-free polynomial. r   r   s   &r   is_sqf
DMP.is_sqf-  r}  r   c                    \         hz=Returns ``True`` if the leading coefficient of ``f`` is one. r   r   s   &r   is_monicDMP.is_monic2  r}  r   c                    \         hzAReturns ``True`` if the GCD of the coefficients of ``f`` is one. r   r   s   &r   is_primitiveDMP.is_primitive7  r}  r   c                    \         h:Returns ``True`` if ``f`` is linear in all its variables. r   r   s   &r   	is_linearDMP.is_linear<  r}  r   c                    \         h=Returns ``True`` if ``f`` is quadratic in all its variables. r   r   s   &r   is_quadraticDMP.is_quadraticA  r}  r   c                    \         h8Returns ``True`` if ``f`` is zero or has only one term. r   r   s   &r   is_monomialDMP.is_monomialF  r}  r   c                    \         h7Returns ``True`` if ``f`` is a homogeneous polynomial. r   r   s   &r   is_homogeneousDMP.is_homogeneousK  r}  r   c                    \         h:Returns ``True`` if ``f`` has no factors over its domain. r   r   s   &r   is_irreducibleDMP.is_irreducibleP  r}  r   c                    \         h)6Returns ``True`` if ``f`` is a cyclotomic polynomial. r   r   s   &r   is_cyclotomicDMP.is_cyclotomicU  r}  r   c                	"    V P                  4       # r}   )r  r   s   &r   __abs__DMP.__abs__Z      uuwr   c                	"    V P                  4       # r}   r  r   s   &r   __neg__DMP.__neg__]  r  r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  V4      #   \         d
    \
        u # i ; ir}   )r   r   r  r  r   NotImplementedr  s   &&r   __add__DMP.__add__`  D    a558O&||A&! &%%&   : AAc                	$    V P                  V4      # r}   r  r  s   &&r   __radd__DMP.__radd__i      yy|r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  V4      #   \         d
    \
        u # i ; ir}   )r   r   r  r  r   r  r  s   &&r   __sub__DMP.__sub__l  r  r  c                	&    V ) P                  V4      # r}   r  r  s   &&r   __rsub__DMP.__rsub__u      ||Ar   c                	    \        V\        4      '       d   V P                  V4      #  V P                  V4      #   \         d
    \
        u # i ; ir}   )r   r   r  r  r   r  r  s   &&r   __mul__DMP.__mul__x  r  r  c                	$    V P                  V4      # r}   r  r  s   &&r   __rmul__DMP.__rmul__  r  r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  V4      #   \         d
    \
        u # i ; ir}   )r   r   r  r  r   r  r  s   &&r   __truediv__DMP.__truediv__  sE    a771:&||A&! &%%&r  c                	    \        V\        4      '       d   VP                  V 4      #  V P                  4       P	                  V4      P                  V 4      #   \
         d
    \        u # i ; ir}   )r   r   r  r   r  r   r  r  s   &&r   __rtruediv__DMP.__rtruediv__  sY    a771:&vvx**1-33A66! &%%&s   -A A+*A+c                	$    V P                  V4      # r}   r  r  s   &&r   __pow__DMP.__pow__      uuQxr   c                	$    V P                  V4      # r}   r  r  s   &&r   
__divmod__DMP.__divmod__  r  r   c                	$    V P                  V4      # r}   r  r  s   &&r   __mod__DMP.__mod__  r  r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  V4      #   \         d
    \
        u # i ; ir}   )r   r   r  r  r  r  r  s   &&r   __floordiv__DMP.__floordiv__  sD    a558O&||A& &%%&r  c                	    WJ d   R # \        V\        4      '       g   \        #  V P                  V4      w  r#VP	                  V4      #   \
         d     R# i ; iTF)r   r   r  r  
_strict_eqry   r  s   &&  r   __eq__
DMP.__eq__  sU    6!S!!!!	#;;q>DA <<?" ! 		s   A	 	AAc                	    \         hr}   r   r  s   &&r   r  DMP._strict_eq  r   r   c                	<    V'       g   W8H  # V P                  V4      # r}   )r  r   r  stricts   &&&r   eqDMP.eq  s    6M<<?"r   c                	0    V P                  WR 7      '       * # ))r  )r  r  s   &&&r   neDMP.ne  s    444)))r   c                	j    V P                  V4      w  r#VP                  4       VP                  4       8  # r}   r  r   r  s   &&  r   __lt__
DMP.__lt__  (    {{1~yy{QYY[((r   c                	j    V P                  V4      w  r#VP                  4       VP                  4       8*  # r}   r  r  s   &&  r   __le__
DMP.__le__  (    {{1~yy{aiik))r   c                	j    V P                  V4      w  r#VP                  4       VP                  4       8  # r}   r  r  s   &&  r   __gt__
DMP.__gt__  r  r   c                	j    V P                  V4      w  r#VP                  4       VP                  4       8  # r}   r  r  s   &&  r   __ge__
DMP.__ge__  r  r   c                	$    V P                   '       * # r}   )rK  r   s   &r   __bool__DMP.__bool__  s    99}r   r   r}   r   rJ     r   T)FNNNFF)NNFNN)r   
__module____qualname____firstlineno____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-  r7  r1  r2  r   r   rA  rL  rT  r[  r^  rc  rb  rj  rq  rw  r~  rz  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  rW  r"  r)  r.  r;  rA  rE  rI  rR  rO  rX  r\  r`  rd  rj  rh  rq  rp  r{  rx  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(  r0  r/  r6  r:  r>  rD  rG  rL  rO  r\  rX  rW  rZ  rY  rm  rj  rt  rx  rK  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  __static_attributes__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                  J   ] tR tRtRtRpt]R 4       tR tR t	R t
R tR tR	 tR
 tR tR tR tR tRqR ltR tR tRrR ltRrR ltR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+ t.RsR, lt/R- t0R. t1R/ t2R0 t3R1 t4R2 t5R3 t6R4 t7R5 t8RtR6 lt9RtR7 lt:R8 t;R9 t<R: t=R; t>R< t?R= t@R> tAR? tBR@ tCRA tDRB tERC tFRD tGRE tHRF tIRG tJRH tKRI tLRJ tMRK tNRL tORM tPRN tQRO tRRP tSRQ tTRR tURS tVRT tWRU tXRV tYRW tZRrRX lt[RrRY lt\RZ t]R[ t^R\ t_R] t`R^ taR_ tbR` tcRuRa ltdRuRb lte]fRc 4       tg]fRd 4       th]fRe 4       ti]fRf 4       tj]fRg 4       tk]fRh 4       tl]fRi 4       tm]fRj 4       tn]fRk 4       to]fRl 4       tp]fRm 4       tq]fRn 4       trRotsR# )vr   i  r   c                	T    \         P                  V 4      pWn        W4n        W$n        V# r}   )objectr   r   r   r   )r   r   r   r   objs   &&&& r   r   DMP_Python._new  s$    nnS!
r   c                	    \        V 4      \        V4      8w  d   R # V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r   )r   r   r   r   r  s   &&r   r  DMP_Python._strict_eq  sP    7d1guu~EE!%%155.EEQVVqvv5EEr   c                N    V P                  WP                  V P                  4      # z.Create a DMP out of the given representation. )r   r   r   r   r   s   &&r   perDMP_Python.per  s    vvc55!%%((r   c                v    V P                  \        WP                  4      V P                  V P                  4      # r   )r   r   r   r   r   s   &&r   r   DMP_Python.ground_new  s&    vvj.quu==r   c                	N    V P                  V P                  V P                  4      # r}   )r   r   r   r   s   &r   r   DMP_Python._one  s    uuQUUAEE""r   c                @  a aa \        V\        4      '       d   S P                  VP                  8w  d   \        RS : RV: 24      hS P                  VP                  8X  d:   S P                  S P                  S P
                  S P                  VP                  3# S P                  S P                  P                  VP                  4      uoo\        S P                  SS P                  S4      p\        VP                  SVP                  S4      pVV V3R lpSSWBV3# )z7Unify representations of two multivariate polynomials. r   r   c                *   < SP                  V SS4      # r}   )r   )r   r   r   r   s   &r   r  DMP_Python.unify.<locals>.per   s    vvc3,,r   )	r   r   r   ry   r   r  r   r   r   )r   r  r}  r  r  r   r   s   f&   @@r   r   DMP_Python.unify  s     !S!!QUUaee^#A$FGG55AEE>55!%%66uuaeekk!%%0HCAFFC4AAFFC4A- SQ&&r   c                l    \         P                  V P                  V P                  V P                  4      # )z)Convert ``f`` to a Flint representation. )r   r   r   r   r   r   s   &r   r   DMP_Python.to_DUP_Flint  s!    ~~affaeeQUU33r   c                ,    \        V P                  4      # r  )r   r   r   s   &r   r   DMP_Python.to_list	  s    AFF|r   c                B    \        V P                  V P                  4      # zBConvert ``f`` to a tuple representation with native coefficients. )r0   r   r   r   s   &r   r   DMP_Python.to_tuple  s    AFFAEE**r   c                    V P                  \        V P                  V P                  V P                  V4      WP                  4      # )$Convert the ground domain of ``f``. )r   r   r   r   r   r   s   &&r   r   DMP_Python._convert  s.    vvk!&&!%%<c55IIr   c                    \        V P                  WV P                  4      pV P                  W0P                  V P                  4      # r0  )r-   r   r   r   r   )r   r4  r5  r   s   &&& r   r1  DMP_Python._slice  s1    aee,vvc55!%%((r   c                    \        V P                  WW0P                  V P                  4      pV P	                  W@P                  V P                  4      # r0  )r.   r   r   r   r   )r   r4  r5  r6  r   s   &&&& r   r2  DMP_Python._slice_lev  s7    1661EE1559vvc55!%%((r   Nc                \    \        V P                  V P                  V P                  VR7      # )rI  r>  )r+   r   r   r   rP  s   &&r   rL  DMP_Python._terms  s    affaeeQUU%@@r   c                    \        V P                  V P                  V P                  4      pV P	                  WP                  P                  V P                  4      # ra  )rX   r   r   r   r   r   r   s   & r   rb  DMP_Python._lift#  s9    QVVQUUAEE*vvaAEE**r   c                    \        V P                  V P                  V P                  4      w  rWP	                  V4      3# rh  )r'   r   r   r   r  r{  s   &  r   rj  DMP_Python.deflate(  s.    166155!%%0%%({r   c                    \        V P                  V P                  V P                  VR7      w  r#V P	                  W P                  P                  V4      # )rn  rp  )r(   r   r   r   r   )r   rp  r}  r   s   &&  r   rq  DMP_Python.inject-  s9    AFFAEE155>vvaC((r   c                    \        V P                  V P                  WR7      pV P                  W1V P                  \	        VP
                  4      ,
          4      # )ru  r?  )r)   r   r   r   r1  symbols)r   r   rp  r}  s   &&& r   rw  DMP_Python.eject3  s;    affaeeS6vvaaeec#++&6677r   c                    \        V P                  V P                  V P                  4      w  rpWP	                  W P                  V4      3# z&Remove useless generators from ``f``. )r,   r   r   r   r   )r   r|  r}  us   &   r   rz  DMP_Python._exclude9  s8    affaeeQUU3a&&EE1%%%r   c                v    V P                  \        V P                  WP                  V P                  4      4      # z6Returns a polynomial in `K[x_{P(1)}, ..., x_{P(n)}]`. )r  r/   r   r   r   r  s   &&r   r  DMP_Python._permute?  s&    uu[EE1559::r   c                    \        V P                  V P                  V P                  4      w  rWP	                  V4      3# r  )r*   r   r   r   r  r{  s   &  r   r  DMP_Python.terms_gcdC  s.    QVVQUUAEE2%%({r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  r1   r   r   r   r  s   &&r   r  DMP_Python._add_groundH  &    uu^AFFAuuaee<==r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  r2   r   r   r   r  s   &&r   r  DMP_Python._sub_groundL  rO  r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  r3   r   r   r   r  s   &&r   r  DMP_Python._mul_groundP  rO  r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  r4   r   r   r   r  s   &&r   r  DMP_Python._quo_groundT  rO  r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  r5   r   r   r   r  s   &&r   r  DMP_Python._exquo_groundX  '    uu%affa>??r   c                v    V P                  \        V P                  V P                  V P                  4      4      # r  )r  r6   r   r   r   r   s   &r   r  DMP_Python.abs\  &    uuWQVVQUUAEE233r   c                v    V P                  \        V P                  V P                  V P                  4      4      # r  )r  r7   r   r   r   r   s   &r   r  DMP_Python.neg`  r[  r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  r8   r   r   r   r  s   &&r   r  DMP_Python._addd  ,    uuWQVVQVVQUUAEE:;;r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  r9   r   r   r   r  s   &&r   r  DMP_Python._subh  r`  r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  r:   r   r   r   r  s   &&r   r  DMP_Python._mull  r`  r   c                v    V P                  \        V P                  V P                  V P                  4      4      # r  )r  r;   r   r   r   r   s   &r   r  DMP_Python.sqrp  r[  r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  r<   r   r   r   r  s   &&r   r  DMP_Python._powt  s&    uuWQVVQquu566r   c                    \        V P                  VP                  V P                  V P                  4      w  r#V P	                  V4      V P	                  V4      3# r  )r=   r   r   r   r  r   r  r	  r   s   &&  r   r  DMP_Python._pdivx  s?    quu5uuQxq!!r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  r>   r   r   r   r  s   &&r   r  DMP_Python._prem}  ,    uuXaffaffaeeQUU;<<r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  r?   r   r   r   r  s   &&r   r  DMP_Python._pquo  ro  r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  r@   r   r   r   r  s   &&r   r  DMP_Python._pexquo  s,    uuZquu=>>r   c                    \        V P                  VP                  V P                  V P                  4      w  r#V P	                  V4      V P	                  V4      3# r  )rA   r   r   r   r  rk  s   &&  r   r  DMP_Python._div  s?    qvvqvvquuaee4uuQxq!!r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  rB   r   r   r   r  s   &&r   r  DMP_Python._rem  r`  r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  rC   r   r   r   r  s   &&r   r  DMP_Python._quo  r`  r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  rD   r   r   r   r  s   &&r   r  DMP_Python._exquo  s,    uuYqvvqvvquuaee<==r   c                B    \        V P                  WP                  4      # )r!  )r   r   r   r#  s   &&r   r"  DMP_Python._degree  s    QVVQ..r   c                B    \        V P                  V P                  4      # r(  )r   r   r   r   s   &r   r)  DMP_Python.degree_list  s    qvvquu--r   c                B    \        R V P                  4        4       4      # )r-  c              3  8   "   T F  p\        V4      x  K  	  R # 5ir}   r2  )r   r4  s   & r   r   *DMP_Python.total_degree.<locals>.<genexpr>  s     .:a3q66:s   )maxr   r   s   &r   r.  DMP_Python.total_degree  s    .188:...r   c                X    \        V P                  V P                  V P                  4      # rD  )r   r   r   r   r   s   &r   rE  DMP_Python.LC      QVVQUUAEE22r   c                X    \        V P                  V P                  V P                  4      # rH  )r   r   r   r   r   s   &r   rI  DMP_Python.TC  r  r   c                X    \        V P                  WP                  V P                  4      # rL  )r   r   r   r   rP  s   &&r   rO  DMP_Python._nth  s    affa66r   c                X    \        V P                  V P                  V P                  4      # rW  )rG   r   r   r   r   s   &r   rX  DMP_Python.max_norm  s    AFFAEE15511r   c                X    \        V P                  V P                  V P                  4      # r[  )rH   r   r   r   r   s   &r   r\  DMP_Python.l1_norm  s    166155!%%00r   c                X    \        V P                  V P                  V P                  4      # r_  )rI   r   r   r   r   s   &r   r`  DMP_Python.l2_norm_squared  s    "166155!%%88r   c                    \        V P                  V P                  V P                  4      w  rWP	                  V4      3# rc  )rJ   r   r   r   r  )r   r   r}  s   &  r   rd  DMP_Python.clear_denoms  s.    #AFFAEE1559eeAhr   c           	     x    V P                  \        V P                  WV P                  V P                  4      4      # )rg  )r  rK   r   r   r   ri  s   &&&r   rh  DMP_Python._integrate  s)    uu%affaAEE155ABBr   c           	     x    V P                  \        V P                  WV P                  V P                  4      4      # )ro  )r  rL   r   r   r   ri  s   &&&r   rp  DMP_Python._diff  s(    uu[quuaee<==r   c                	    \        V P                  V P                  P                  V4      ^ V P                  V P                  4      # rJ  )rM   r   r   r   r   r~  s   &&r   rx  DMP_Python._eval  s.    166155==#3QquuEEr   c                	    \        V P                  V P                  P                  V4      W P                  V P                  4      pV P                  W0P                  V P                  ^,
          4      # r	  )rM   r   r   r   r   r   )r   rz  r6  r   s   &&& r   rw  DMP_Python._eval_lev  sH    !&&!%%--"2AuuaeeDuuS%%++r   c                    \        V P                  VP                  V P                  4      w  r#V P                  V4      V P                  V4      3# )r  )rY   r   r   r  r   r  r4  hs   &&  r   r  DMP_Python._half_gcdex  s9    affaffaee4uuQxq!!r   c                    \        V P                  VP                  V P                  4      w  r#pV P                  V4      V P                  V4      V P                  V4      3# )r  )rZ   r   r   r  )r   r  r4  rl  r  s   &&   r   r  DMP_Python._gcdex  sE    AFFAFFAEE2auuQxq1558++r   c                z    \        V P                  VP                  V P                  4      pV P                  V4      # )r  )r[   r   r   r  )r   r  r4  s   && r   r  DMP_Python._invert  s)    qvvqvvquu-uuQxr   c                `    V P                  \        V P                  WP                  4      4      # r  )r  rN   r   r   r  s   &&r   r  DMP_Python._revert  s     uuZ55122r   c                    \        V P                  VP                  V P                  V P                  4      p\	        \        V P                  V4      4      # r  )r\   r   r   r   r   mapr  r   r  Rs   && r   r  DMP_Python._subresultants  s7    affaffaeeQUU;CqM""r   c                6   \        V P                  VP                  V P                  V P                  RR7      w  r#V P                  '       d.   V P	                  W P                  V P                  ^,
          4      pV\        \        V P                  V4      4      3# )r  T)r  )r]   r   r   r   r   r   r  r  r   r  resr  s   &&  r   r   DMP_Python._resultant_includePRS  se    qvvqvvquuaeeM555%%UUAEEAI.CDQUUA'''r   c                	    \        V P                  VP                  V P                  V P                  4      pV P                  '       d.   V P	                  W P                  V P                  ^,
          4      pV# r  )r]   r   r   r   r   )r   r  r  s   && r   r  DMP_Python._resultant  sL    AFFAFFAEE1559555%%UUAEEAI.C
r   c                    \        V P                  V P                  V P                  4      pV P                  '       d.   V P	                  WP                  V P                  ^,
          4      pV# r  )r^   r   r   r   r   )r   r  s   & r   r  DMP_Python.discriminant  sF    qvvquuaee4555%%UUAEEAI.C
r   c                    \        V P                  VP                  V P                  V P                  4      w  r#pV P	                  V4      V P	                  V4      V P	                  V4      3# r  )r_   r   r   r   r  )r   r  r  cffcfgs   &&   r   r  DMP_Python._cofactors  sK    #AFFAFFAEE155AuuQxsQUU3Z//r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  r`   r   r   r   r  s   &&r   r  DMP_Python._gcd  r`  r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  ra   r   r   r   r  s   &&r   r  DMP_Python._lcm  r`  r   c                    \        V P                  VP                  V P                  V P                  RR7      w  r#rEW#V P	                  V4      V P	                  V4      3# )r  Fr  rb   r   r   r   r  r   r  cFcGr}  r  s   &&    r   r  DMP_Python._cancel  sE    !!&&!&&!%%NquuQxq))r   c                    \        V P                  VP                  V P                  V P                  RR7      w  r#V P	                  V4      V P	                  V4      3# )r  Tr  r  r  s   &&  r   r  DMP_Python._cancel_include  sA    !&&!&&!%%EuuQxq!!r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  rO   r   r   r   r  s   &&r   r  DMP_Python._trunc  rX  r   c                v    V P                  \        V P                  V P                  V P                  4      4      # r  )r  rR   r   r   r   r   s   &r   r  DMP_Python.monic  s'    uu%affaeeQUU;<<r   c                X    \        V P                  V P                  V P                  4      # r  )rP   r   r   r   r   s   &r   r  DMP_Python.content  s    !!&&!%%77r   c                    \        V P                  V P                  V P                  4      w  rWP	                  V4      3# r  )rQ   r   r   r   r  )r   contr}  s   &  r   r  DMP_Python.primitive!  s.    &qvvquuaee<UU1X~r   c                    V P                  \        V P                  VP                  V P                  V P                  4      4      # r  )r  rS   r   r   r   r  s   &&r   r  DMP_Python._compose&  s,    uu[>??r   c           	     |    \        \        V P                  \        V P                  V P
                  4      4      4      # r  )r   r  r  rT   r   r   r   s   &r   r  DMP_Python._decompose*  s'    C}QVVQUU;<==r   c                `    V P                  \        V P                  WP                  4      4      # r  )r  rU   r   r   r~  s   &&r   r  DMP_Python._shift.  s     uuYqvvq%%011r   c                v    V P                  \        V P                  WP                  V P                  4      4      # r  )r  rV   r   r   r   r~  s   &&r   r   DMP_Python._shift_list2  s&    uuYqvvq%%788r   c                    V P                  \        V P                  VP                  VP                  V P                  4      4      # r  )r  rW   r   r   r  s   &&&r   r  DMP_Python._transform6  s,    uu]166166166155ABBr   c           	     |    \        \        V P                  \        V P                  V P
                  4      4      4      # r  )r   r  r  ru   r   r   r   s   &r   r  DMP_Python._sturm:  s'    Cy7899r   c                B    \        V P                  V P                  4      # r  )rv   r   r   r   s   &r   r  DMP_Python._cauchy_upper_bound>      %affaee44r   c                B    \        V P                  V P                  4      # r   )rw   r   r   r   s   &r   r!  DMP_Python._cauchy_lower_boundB  r  r   c                B    \        V P                  V P                  4      # r'  )rx   r   r   r   s   &r   r(  &DMP_Python._mignotte_sep_bound_squaredF  s    -affaee<<r   c                    \        V P                  V P                  4       UUu. uF  w  rV P                  V4      V3NK  	  upp# u uppi r.  )rc   r   r   r  )r   r  r  s   &  r   r/  DMP_Python._gff_listJ  s9    +7+FH+F41!%%(A+FHHHs   Ac                    \        V P                  V P                  V P                  4      pV P	                  WP                  P                  V P                  4      # r5  )rd   r   r   r   r   r:  s   & r   r6  DMP_Python.normN  s9    QVVQUUAEE*uuQ		155))r   c                    \        V P                  V P                  V P                  4      w  rpWP	                  V4      V P                  W0P                  P                  V P                  4      3# r9  )rf   r   r   r   r  r   )r   r4  r  r   s   &   r   r:  DMP_Python.sqf_normS  sJ    qvvquuaee4a%%(AEE!UUYY666r   c                v    V P                  \        V P                  V P                  V P                  4      4      # r=  )r  rg   r   r   r   r   s   &r   r>  DMP_Python.sqf_partX  s&    uu\!&&!%%788r   c                    \        V P                  V P                  V P                  V4      w  r#Y# UUu. uF  w  rEV P	                  V4      V3NK  	  upp3# u uppi rA  )rh   r   r   r   r  r   r   r   factorsr  r  s   &&    r   rD  DMP_Python.sqf_list\  sK    %affaeeQUUC@';'$!q1';;;;s   Ac                    \        V P                  V P                  V P                  V4      pV UUu. uF  w  r4V P	                  V4      V3NK  	  upp# u uppi rA  )ri   r   r   r   r  r   r   r  r  r  s   &&   r   rG  DMP_Python.sqf_list_includea  sD    &qvvquuaeeSA+24741!%%(A7444s   Ac                    \        V P                  V P                  V P                  4      w  rY UUu. uF  w  r4V P	                  V4      V3NK  	  upp3# u uppi rJ  )rl   r   r   r   r  )r   r   r  r  r  s   &    r   rL  DMP_Python.factor_listf  sI    (>';'$!q1';;;;s   Ac                    \        V P                  V P                  V P                  4      pV UUu. uF  w  r#V P	                  V4      V3NK  	  upp# u uppi rJ  )rm   r   r   r   r  r   r  r  r  s   &   r   rO  DMP_Python.factor_list_includek  sB    )!&&!%%?+24741!%%(A7444s   Ac           	     	H    \        V P                  V P                  WW4R 7      # rR  )ro   r   r   r_  s   &&&&&r   rZ  DMP_Python._isolate_real_rootsp  s    %affaee3ZZr   c           	     	H    \        V P                  V P                  WW4R 7      # r  )rn   r   r   r_  s   &&&&&r   rY  "DMP_Python._isolate_real_roots_sqfs  s    )!&&!%%Ss^^r   c           	     	H    \        V P                  V P                  WW4R 7      # r  )rq   r   r   r_  s   &&&&&r   rX  DMP_Python._isolate_all_rootsv  s    $QVVQUU#YYr   c           	     	H    \        V P                  V P                  WW4R 7      # r  )rp   r   r   r_  s   &&&&&r   rW  !DMP_Python._isolate_all_roots_sqfy  s    (Cc]]r   c           
     	J    \        V P                  WV P                  W4VR 7      # )rh  )rr   r   r   rk  s   &&&&&&r   rj  DMP_Python._refine_real_root|  s    #AFFA!%%STXYYr   c                F    \        V P                  V P                  WR7      # rr  rT  rU  )rs   r   r   rs  s   &&&r   rt  DMP_Python.count_real_roots  s    #AFFAEEsDDr   c                F    \        V P                  V P                  WR7      # rw  r  )rt   r   r   rs  s   &&&r   rx  DMP_Python.count_complex_roots  s    &qvvquu#GGr   c                B    \        V P                  V P                  4      # r{  )r!   r   r   r   s   &r   rK  DMP_Python.is_zero  s     !&&!%%((r   c                X    \        V P                  V P                  V P                  4      # r  )r"   r   r   r   r   s   &r   r  DMP_Python.is_one       ..r   c                D    \        V P                  RV P                  4      # )r  N)r#   r   r   r   s   &r   r  DMP_Python.is_ground  s     AFFD!%%00r   c                X    \        V P                  V P                  V P                  4      # r  )re   r   r   r   r   s   &r   r  DMP_Python.is_sqf  r  r   c                    V P                   P                  \        V P                  V P                  V P                   4      4      # r  )r   r  r   r   r   r   s   &r   r  DMP_Python.is_monic  s,     uu||M!&&!%%?@@r   c                    V P                   P                  \        V P                  V P                  V P                   4      4      # r  )r   r  rP   r   r   r   s   &r   r  DMP_Python.is_primitive  s-     uu||.qvvquuaeeDEEr   c                F   \         ;QJ dS    R \        V P                  V P                  V P                  4      P                  4        4       F  '       d   K   R# 	  R# ! R \        V P                  V P                  V P                  4      P                  4        4       4      # )r  c              3  >   "   T F  p\        V4      ^8*  x  K  	  R# 5i)r	  Nr  r   r?  s   & r   r   'DMP_Python.is_linear.<locals>.<genexpr>       Y0Xu3u:?0X   FTr   r&   r   r   r   keysr   s   &r   r  DMP_Python.is_linear  i     sYAFFAEE1550Q0V0V0XYssYsYsYAFFAEE1550Q0V0V0XYYYr   c                F   \         ;QJ dS    R \        V P                  V P                  V P                  4      P                  4        4       F  '       d   K   R# 	  R# ! R \        V P                  V P                  V P                  4      P                  4        4       4      # )r  c              3  >   "   T F  p\        V4      ^8*  x  K  	  R# 5i)   Nr  r!  s   & r   r   *DMP_Python.is_quadratic.<locals>.<genexpr>  r#  r$  FTr%  r   s   &r   r  DMP_Python.is_quadratic  r(  r   c                :    \        V P                  4       4      ^8*  # r  )r1  r  r   s   &r   r  DMP_Python.is_monomial  s     199;1$$r   c                &    V P                  4       RJ# )r  N)rA  r   s   &r   r  DMP_Python.is_homogeneous  s     ""$D00r   c                X    \        V P                  V P                  V P                  4      # r  )rk   r   r   r   r   s   &r   r  DMP_Python.is_irreducible  s     !66r   c                j    V P                   '       g!   \        V P                  V P                  4      # R# r  F)r   rj   r   r   r   s   &r   r  DMP_Python.is_cyclotomic  s%     uuu#AFFAEE22r   r   )r   r   r   r}   r   rJ  r  r  )tr   r  r  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r1  r2  rL  rb  rj  rq  rw  rz  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.  rE  rI  rO  rX  r\  r`  rd  rh  rp  rx  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/  r6  r:  r>  rD  rG  rL  rO  rZ  rY  rX  rW  rj  rt  rx  r  rK  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                  ~   ] tR tRtRt^ tRstR t]R 4       t	R t
]R 4       t]R 4       t]R 4       tR	 tR
 tR tR tR tR tR tR tR tRtR ltR tR tRuR ltRuR ltR tR tR tR tR t R t!R t"R t#R  t$R! t%R" t&R# t'R$ t(R% t)R& t*R' t+R( t,R) t-R* t.R+ t/R, t0R- t1R. t2RvR/ lt3R0 t4R1 t5R2 t6R3 t7R4 t8R5 t9R6 t:R7 t;R8 t<RwR9 lt=RwR: lt>R; t?R< t@R= tAR> tBR? tCR@ tDRA tERB tFRC tGRD tHRE tIRF tJRG tKRH tLRI tMRJ tNRK tORL tPRM tQRN tRRO tSRP tTRQ tURR tVRS tWRT tXRU tYRV tZRW t[RX t\RY t]RuRZ lt^RuR[ lt_R\ t`R] taR^ tbR_ tcR` tdRa teRb tfRc tgRxRd lthRxRe lti]jRf 4       tk]jRg 4       tl]jRh 4       tm]jRi 4       tn]jRj 4       to]jRk 4       tp]jRl 4       tq]jRm 4       tr]jRn 4       ts]jRo 4       tt]jRp 4       tu]jRq 4       tvRrtwR# )yr   i  r   c                	h    V P                   V P                  4       V P                  V P                  33# r}   )r   r   r   r   r   s   &r   
__reduce__DUP_Flint.__reduce__  s&    ~~$((CCCr   c                	\    V P                  VR R R1,          W#4      pV P                  W4      # N)_flint_polyfrom_repr   s   &&&&r   r   DUP_Flint._new  s)    ooc$B$i2||C%%r   c                J    V P                   P                  4       RRR1,          # )r  Nr=  )r   r   r   s   &r   r   DUP_Flint.to_list  s    vv}}tt$$r   c                	l    \        V4      '       g   Q hV^ 8X  g   Q hV P                  V4      pV! V4      # rJ  )r   _get_flint_poly_cls)r   r   r   r   	flint_clss   &&&& r   r>  DUP_Flint._flint_poly  s8    &s++++axx++C0	~r   c                	    VP                   '       d   \        P                  # VP                  '       d   \        P                  # VP
                  '       d   VP                  # \        R V,          4      h)%Domain %s is not supported with flint)r~   r{   	fmpz_polyr   	fmpq_polyr   	_poly_ctxr   )r   r   s   &&r   rD  DUP_Flint._get_flint_poly_cls  sL    999??"YYY??"YYY== FLMMr   c                ^  aa VP                   '       d4   \        V\        P                  4      '       g   Q h\        P                  pMVP                  '       d4   \        V\        P
                  4      '       g   Q h\        P
                  pMyVP                  '       dV   \        V\        P                  \        P                  34      '       g   Q hVP                  4       o\        V4      oVV3R lpM\        RV,          4      h\        P                  V 4      pW$n        Wn        W4n        V# )z,Create a DMP from the given representation. c                   < S! V S4      # r}   r   )e_DUP_Flint__clsr   s   &r   <lambda>$DUP_Flint.from_rep.<locals>.<lambda>  s    U1a[r   rH  )r~   r   r{   rI  r   rJ  r   	nmod_polyfmpz_mod_polycharacteristicr   r   r  r   r   r   _cls)r   r   r   rV  r  rP  r   s   &&&  @@r   r?  DUP_Flint.from_rep  s     999c5??3333??DYYYc5??3333??DYYYcEOOU5H5H#IJJJJ""$AIE(DFLMMnnS!
r   c                	    \        V 4      \        V4      8w  d   R # V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r   )r   r   r   r  s   &&r   r  DUP_Flint._strict_eq  s<    7d1guu~22!&&AFF"22r   c                Z    V P                  V P                  V.4      V P                  4      # r   r?  rV  r   r   s   &&r   r   DUP_Flint.ground_new
  s!    zz!&&%/15511r   c                	L    V P                  V P                  P                  4      # r}   )r   r   r   r   s   &r   r   DUP_Flint._one  s    ||AEEII&&r   c                    \         h)z*Unify representations of two polynomials. )r   r  s   &&r   r   DUP_Flint.unify  s    r   c                t    \         P                  V P                  4       V P                  V P                  4      # )z1Convert ``f`` to a Python native representation. )r   r   r   r   r   r   s   &r   r   DUP_Flint.to_DMP_Python  s#    qyy{AEE15599r   c                4    \        V P                  4       4      # r.  )r3  r   r   s   &r   r   DUP_Flint.to_tuple  s    QYY[!!r   c                   V\         8X  dF   V P                  \        8X  d1   V P                  \        P
                  ! V P                  4      V4      # \        V4      '       dI   \        V P                  4      '       d.   V P                  4       P                  V4      P                  4       # \        RV P                   RV 24      h)r1  zDUP_Flint: Cannot convert z to )r   r   r
   r?  r{   rJ  r   r   r   r   r   r   r   s   &&r   r   DUP_Flint._convert  s    "9"::eooaff5s;;$S)).Eaee.L.L??$--c2??AA!;AEE7$seLMMr   c                    V P                   P                  4       W pV P                  V P                  V4      V P                  4      # r0  )r   r   r?  rV  r   )r   r4  r5  r   s   &&& r   r1  DUP_Flint._slice'  s3    %zz!&&.!%%00r   c                    \         hr0  r   r3  s   &&&&r   r2  DUP_Flint._slice_lev,  r}  r   Nc                   Ve   VP                   R8X  dP   \        V P                  P                  4       4       UUu. uF  w  r#V'       g   K  V3V3NK  	  pppVRRR1,          # V P	                  4       P                  VR7      # u uppi )rI  Nlexr>  r=  )aliasrX  r   r   r   rL  )r   r?  r5  r   rA  s   &&   r   rL  DUP_Flint._terms1  st    =EKK50,5affmmo,FM,FDA!itQi,FEM2; ??$++%+88 Ns   B	Bc                    \         hra  r   r   s   &r   rb  DUP_Flint._lift?  r}  r   c                    V P                   '       d   RV 3# V P                  P                  4       w  rV3V P                  WP                  4      3# )ri  r  )rK  r   	deflationr?  r   )r   r  r5  s   &  r   rj  DUP_Flint.deflateD  sD     9997Nvv!tQZZ55)))r   c                    \         hrm  r   ro  s   &&r   rq  DUP_Flint.injectQ  r}  r   c                    \         hrt  r   rv  s   &&&r   rw  DUP_Flint.ejectV  r}  r   c                    \         hrE  r   r   s   &r   rz  DUP_Flint._exclude[  r}  r   c                    \         hrI  r   r  s   &&r   r  DUP_Flint._permute`  r}  r   c                d    V P                  4       P                  4       w  rWP                  4       3# r  )r   r  r   r{  s   &  r   r  DUP_Flint.terms_gcde  s+      **,.."""r   c                \    V P                  V P                  V,           V P                  4      # r  r?  r   r   r  s   &&r   r  DUP_Flint._add_groundk      zz!&&1*aee,,r   c                \    V P                  V P                  V,
          V P                  4      # r  r  r  s   &&r   r  DUP_Flint._sub_groundo  r  r   c                \    V P                  V P                  V,          V P                  4      # r  r  r  s   &&r   r  DUP_Flint._mul_grounds  r  r   c                \    V P                  V P                  V,          V P                  4      # r  r  r  s   &&r   r  DUP_Flint._quo_groundw      zz!&&A+quu--r   c                    \        V P                  V4      w  r#V'       d   \        W4      hV P                  W P                  4      # )z<Exact quotient of ``f`` by an element of the ground domain. )divmodr   r   r?  r   )r   r   r	  r   s   &&  r   r  DUP_Flint._exquo_ground{  s5    affa %a++zz!UU##r   c                Z    V P                  4       P                  4       P                  4       # r  )r   r  r   r   s   &r   r  DUP_Flint.abs  s!     $$&3355r   c                P    V P                  V P                  ) V P                  4      # r  r  r   s   &r   r  DUP_Flint.neg  s    zz166'155))r   c                p    V P                  V P                  VP                  ,           V P                  4      # r  r  r  s   &&r   r  DUP_Flint._add  #    zz!&&166/15511r   c                p    V P                  V P                  VP                  ,
          V P                  4      # r  r  r  s   &&r   r  DUP_Flint._sub  r  r   c                p    V P                  V P                  VP                  ,          V P                  4      # r  r  r  s   &&r   r  DUP_Flint._mul  r  r   c                \    V P                  V P                  ^,          V P                  4      # r  r  r   s   &r   r  DUP_Flint.sqr  r  r   c                \    V P                  V P                  V,          V P                  4      # rh  r  r  s   &&r   r  DUP_Flint._pow  r  r   c                B   V P                  4       VP                  4       ,
          ^,           p\        VP                  4       V,          V P                  ,          VP                  4      w  r4V P	                  W0P
                  4      V P	                  W@P
                  4      3# r  )rW  r  rE  r   r?  r   r   r  r9  r	  r   s   &&   r   r  DUP_Flint._pdiv  sg    HHJ#a'addfai!&&(!&&1zz!UU#QZZ55%999r   c                   V P                  4       VP                  4       ,
          ^,           pVP                  4       V,          V P                  ,          VP                  ,          pV P                  W0P                  4      # r  rW  rE  r   r?  r   )r   r  r9  r	  s   &&  r   r  DUP_Flint._prem  sQ    HHJ#a'TTVQY166)zz!UU##r   c                   V P                  4       VP                  4       ,
          ^,           pVP                  4       V,          V P                  ,          VP                  ,          pV P                  W0P                  4      # r  r  )r   r  r9  r   s   &&  r   r  DUP_Flint._pquo  sQ    HHJ#a'TTVQYAFF*zz!UU##r   c                2   V P                  4       VP                  4       ,
          ^,           p\        VP                  4       V,          V P                  ,          VP                  4      w  r4V'       d   \	        W4      hV P                  W0P                  4      # r  )rW  r  rE  r   r   r?  r   r  s   &&   r   r  DUP_Flint._pexquo  sc    HHJ#a'addfai!&&(!&&1%a++zz!UU##r   c                   V P                   P                  '       dY   \        V P                  VP                  4      w  r#V P	                  W P                   4      V P	                  W0P                   4      3# V P                  4       P                  VP                  4       4      w  r#VP                  4       VP                  4       3# r  )r   r  r  r   r?  r   r  r   rk  s   &&  r   r  DUP_Flint._div  s    55>>>!&&!&&)DA::a'Auu)=== ??$))!//*;<DA>>#Q^^%555r   c                p    V P                  V P                  VP                  ,          V P                  4      # r  r  r  s   &&r   r  DUP_Flint._rem  r  r   c                p    V P                  V P                  VP                  ,          V P                  4      # r  r  r  s   &&r   r  DUP_Flint._quo  s$    zz!&&AFF*AEE22r   c                R    V P                  V4      w  r#V'       d   \        W4      hV# r  )r  r   rk  s   &&  r   r  DUP_Flint._exquo  s$    vvay%a++r   c                T    V P                   P                  4       pVR8X  d   \        pV# )r!  r=  )r   rW  r   )r   r6  r9  s   && r   r"  DUP_Flint._degree  s"    FFMMO7Ar   c                $    V P                  4       3# r(  r"  r   s   &r   r)  DUP_Flint.degree_list  s    r   c                "    V P                  4       # r,  r  r   s   &r   r.  DUP_Flint.total_degree  s    yy{r   c                X    V P                   V P                   P                  4       ,          # rD  r   rW  r   s   &r   rE  DUP_Flint.LC  s    vvaffmmo&&r   c                (    V P                   ^ ,          # rH  r   r   s   &r   rI  DUP_Flint.TC  s    vvayr   c                0    Vw  pV P                   V,          # r  r  )r   rQ  r5  s   && r   rO  DUP_Flint._nth  s    vvayr   c                >    V P                  4       P                  4       # rW  )r   rX  r   s   &r   rX  DUP_Flint.max_norm  s     ))++r   c                >    V P                  4       P                  4       # r[  )r   r\  r   s   &r   r\  DUP_Flint.l1_norm  s     ((**r   c                >    V P                  4       P                  4       # r_  )r   r`  r   s   &r   r`  DUP_Flint.l2_norm_squared  s     0022r   c                n   V P                   pVP                  '       da   V P                  P                  4       pV P	                  V P                  V P                  P                  4       4      V P                   4      pW#3# VP                  '       g   VP                  '       d   VP                  V 3# \        hrc  )r   r   r   denomr?  rV  numerr~   is_FiniteFieldr   r   )r   r  r  r  s   &   r   rd  DUP_Flint.clear_denoms  sy    EE777FFLLNEJJqvvafflln5quu=E<WWW(((55!8O%%r   c                :   V^ 8X  g   Q hV P                   P                  '       dJ   V P                  p\        V4       F  pVP	                  4       pK  	  V P                  W0P                   4      # V P                  4       P                  WR7      P                  4       # )rg  )r4  r6  )	r   r  r   rangeintegralr?  r   rh  r   r   r4  r6  r   rZ  s   &&&  r   rh  DUP_Flint._integrate  ss    Avv55>>>&&C1Xlln ::c55))??$//!/9FFHHr   c                    V^ 8X  g   Q hV P                   p\        V4       F  pVP                  4       pK  	  V P                  W0P                  4      # )z1Computes the ``m``-th order derivative of ``f``. )r   r  
derivativer?  r   r  s   &&&  r   rp  DUP_Flint._diff  sC    AvvffqA.."C zz#uu%%r   c                	@    V P                  4       P                  V4      # r}   )r   rx  r~  s   &&r   rx  DUP_Flint._eval  s    
  &&q))r   c                	    \         hr}   r   ry  s   &&&r   rw  DUP_Flint._eval_lev  r   r   c                    V P                  4       P                  VP                  4       4      w  r#VP                  4       VP                  4       3# )z#Half extended Euclidean algorithm. )r   r  r   r  s   &&  r   r  DUP_Flint._half_gcdex#  s;     ,,Q__->?~~!111r   c                    V P                   P                  VP                   4      w  r#pV P                  W0P                  4      V P                  W@P                  4      V P                  W P                  4      3# )zExtended Euclidean algorithm. )r   xgcdr?  r   )r   r  r  r4  rl  s   &&   r   r  DUP_Flint._gcdex(  sP    &&++aff%azz!UU#QZZ55%91::a;OOOr   c                f   V P                   pVP                  '       dZ   V P                  P                  VP                  4      w  r4pV^ V,          ^,           8w  d   \	        R4      hV P                  WB4      # V P                  4       P                  VP                  4       4      P                  4       # )r  zero divisor)	r   r  r   r  r   r?  r   r  r   )r   r  r  r  F_invrB  s   &&    r   r  DUP_Flint._invert-  s    EE:::FFKK/MC aeai#N33::e'' ??$,,Q__->?LLNNr   c                \    V P                  4       P                  V4      P                  4       # r  )r   r  r   r  s   &&r   r  DUP_Flint._revert<  s%      ((+88::r   c                    V P                  4       P                  VP                  4       4      pV Uu. uF  qP                  4       NK  	  up# u upi r  )r   r  r   r  s   && r   r  DUP_Flint._subresultantsB  s?     OO,,Q__->?+,.1a!1...s   Ac                    V P                  4       P                  VP                  4       4      w  r#Y# Uu. uF  qP                  4       NK  	  up3# u upi r  )r   r  r   r  s   &&  r   r  DUP_Flint._resultant_includePRSH  sF     "889JK31nn&3333s   Ac                \    V P                  4       P                  VP                  4       4      # )z'Computes resultant of ``f`` and ``g``. )r   r  r  s   &&r   r  DUP_Flint._resultantN  s#      ++AOO,=>>r   c                >    V P                  4       P                  4       # r  )r   r  r   s   &r   r  DUP_Flint.discriminantS  s      --//r   c                h    V P                  V4      pW P                  V4      VP                  V4      3# r  )r  r  )r   r  r  s   && r   r  DUP_Flint._cofactorsX  s*    EE!H''!*aggaj((r   c                    V P                  V P                  P                  VP                  4      V P                  4      # r  )r?  r   r  r   r  s   &&r   r  DUP_Flint._gcd]  s(    zz!&&**QVV,aee44r   c                t   V '       d	   V'       g&   V P                  V P                  P                  4      # V P                  V4      P	                  V P                  V4      4      pVP                  P                  '       d   VP                  4       pV# VP                  4       ^ 8  d   VP                  4       pV# r  )
r   r   r   r  r  r  r  r  rE  r  )r   r  r:  s   && r   r  DUP_Flint._lcma  s~     a<<

++FF1IQVVAY'55>>>	A  TTVaZAr   c                   V P                   VP                   8X  g   Q hV P                   pVP                  '       g'   VP                  '       g   VP                  '       g   Q hVP                  '       dL   V P	                  V4      pV P                  V4      VP                  V4      rTVP                  VP                  WE3# VP                  '       d&   V P                  4       w  rdVP                  4       w  ruMVP                  T rFVP                  TrWVP                  V4      pWx,          Wh,          rgVP	                  V4      p	VP                  V	4      VP                  V	4      rTVP                  4       ^ 8  p
VP                  4       ^ 8  pV
'       d)   V'       d!   VP                  4       VP                  4       rTM5V
'       d   V) VP                  4       rGMV'       d   V) VP                  4       rWWvWE3# r  )r   r~   r   r  r  r  r   rd  r  rE  r  )r   r  r  r  r}  r  r  r  cHHf_negg_negs   &&          r   r  DUP_Flint._cancelp  se   uu~~EE www!'''Q%5%5%555q	A771:qwwqzq55!%%%%777NN$EBNN$EBEE1EE1VVBZ28BFF1Iwwqz1771:1

U557AEEGqCCq|r   c                n    V P                  V4      w  r#rEVP                  V4      VP                  V4      3# r  )r  r  r  s   &&    r   r  DUP_Flint._cancel_include  s0    yy|}}R !--"333r   c                \    V P                  4       P                  V4      P                  4       # r  )r   r  r   r  s   &&r   r  DUP_Flint._trunc  s#     ''*7799r   c                @    V P                  V P                  4       4      # r  )r  rE  r   s   &r   r  DUP_Flint.monic  s     qttv&&r   c                >    V P                  4       P                  4       # r  )r   r  r   s   &r   r  DUP_Flint.content  s      ((**r   c                    V P                  4       pV P                  '       d   V P                  P                  V 3# V P	                  V4      pW3# r  )r  rK  r   r   r  )r   r  prims   &  r   r  DUP_Flint.primitive  s>    yy{99955::q= t$zr   c                l    V P                  V P                  VP                  4      V P                  4      # r  r  r  s   &&r   r  DUP_Flint._compose  s#    zz!&&.!%%00r   c                    V P                  4       P                  4        Uu. uF  qP                  4       NK  	  up# u upi r  )r   r  r   r  s   & r   r  DUP_Flint._decompose  s1    +,??+<+G+G+IK+Ia!+IKKK   <c                    V P                  WP                  P                  .4      pV P                  V P	                  V4      V P                  4      # r  )rV  r   r   r?  r   )r   rz  x_plus_as   && r   r  DUP_Flint._shift  s8    661eeii.)zz!&&*AEE22r   c                    V P                  4       VP                  4       VP                  4       rTpVP                  WE4      P                  4       # r  )r   r  r   )r   r  r	  r}  r  r
  s   &&&   r   r  DUP_Flint._transform  s:    //#Q__%68Ia{{1 --//r   c                    V P                  4       P                  4        Uu. uF  qP                  4       NK  	  up# u upi r  )r   r  r   r  s   & r   r  DUP_Flint._sturm  s1    +,??+<+C+C+EG+Ea!+EGGGr  c                >    V P                  4       P                  4       # r  )r   r  r   s   &r   r  DUP_Flint._cauchy_upper_bound       4466r   c                >    V P                  4       P                  4       # r  )r   r!  r   s   &r   r!  DUP_Flint._cauchy_lower_bound  r  r   c                >    V P                  4       P                  4       # r  )r   r(  r   s   &r   r(  %DUP_Flint._mignotte_sep_bound_squared  s     <<>>r   c                    V P                  4       pVP                  4        UUu. uF  w  r#VP                  4       V3NK  	  upp# u uppi r  )r   r0  r   )r   r}  r  r  s   &   r   r/  DUP_Flint._gff_list  s:    OO34::<A<41!.."A&<AAA   Ac                    \         hr5  r   r   s   &r   r6  DUP_Flint.norm  r}  r   c                    \         hr9  r   r   s   &r   r:  DUP_Flint.sqf_norm  r}  r   c                ^    V P                  V P                  V P                  4       4      4      # r=  )r  r  rp  r   s   &r   r>  DUP_Flint.sqf_part  s     xxqwwy)**r   c                    V P                  4       P                  VR7      w  r#Y# UUu. uF  w  rEVP                  4       V3NK  	  upp3# u uppi rB  )r   )r   rD  r   r  s   &&    r   rD  DUP_Flint.sqf_list  sK     *333<'C'$!)1-'CCCCs   A
c                    V P                  4       P                  VR7      pV UUu. uF  w  r4VP                  4       V3NK  	  upp# u uppi r  )r   rG  r   r  s   &&   r   rG  DUP_Flint.sqf_list_include  sB    //#444=3:<741!.."A&7<<<s   Ac                   V P                   P                  '       g   V P                   P                  '       dN   V P                  P	                  4       w  rV UUu. uF"  w  r4V P                  W0P                   4      V3NK$  	  pppMV P                   P                  '       d   V P                  P	                  4       w  rV UUu. uF"  w  r4V P                  W0P                   4      V3NK$  	  ppp. pV F8  w  r4VP                  4       w  rcWV,          ,          pVP                  W434       K:  	  M\        RV P                   ,          4      hV P                  V4      pW3# u uppi u uppi )rK  rH  )r   r~   r   r   factorr?  r   rd  r  r   r   )r   r   r  r  r  factors_monicr9  s   &      r   rL  DUP_Flint.factor_list  s    55;;;!%%+++VV]]_NE>EGgdaAuu-q1gGGGUU[[[ VV]]_NEDKMGDAqzz!UU3Q7GMM G%~~'Av& & FNOO //'*~- H Ns   (E(E%c                    V P                  4       P                  4       pV UUu. uF  w  r#VP                  4       V3NK  	  upp# u uppi rJ  )r   rO  r   r  s   &   r   rO  DUP_Flint.factor_list_include	  s?     //#7793:<741!.."A&7<<<r  c                   a  V UUu. uF  w  r#VP                  4       V3NK  	  ppp\        VRR7      pV 3R lpV UUu. uF  w  r#V! V4      V3NK  	  upp# u uppi u uppi )z+Sort a list of factors to canonical order. T)multiplec                n   < SP                  SP                  V R R R1,          4      SP                  4      # r<  r[  )r  r   s   &r   rQ  )DUP_Flint._sort_factors.<locals>.<lambda> 	  s$    AFF1TrT7OQUU!Cr   )r   r   )r   r  r  r  to_dup_flints   f&   r   r   DUP_Flint._sort_factors	  sa     29:QYY[!$:$7C29;'$!,q/1%';; ; <s
   AAc                	B    V P                  4       P                  WW44      # r}   )r   rZ  r_  s   &&&&&r   rZ  DUP_Flint._isolate_real_roots#	  s     44SsIIr   c                	B    V P                  4       P                  WW44      # r}   )r   rY  r_  s   &&&&&r   rY  !DUP_Flint._isolate_real_roots_sqf&	  s     883MMr   c                	B    V P                  4       P                  WW44      # r}   )r   rX  r_  s   &&&&&r   rX  DUP_Flint._isolate_all_roots)	  s      33CcHHr   c                	B    V P                  4       P                  WW44      # r}   )r   rW  r_  s   &&&&&r   rW   DUP_Flint._isolate_all_roots_sqf/	  s     77#LLr   c                	D    V P                  4       P                  WW4V4      # r}   )r   rj  rk  s   &&&&&&r   rj  DUP_Flint._refine_real_root2	  s     221TJJr   c                B    V P                  4       P                  WR7      # r  )r   rt  rs  s   &&&r   rt  DUP_Flint.count_real_roots5	  s     11c1CCr   c                B    V P                  4       P                  WR7      # r  )r   rx  rs  s   &&&r   rx  DUP_Flint.count_complex_roots9	  s     444FFr   c                $    V P                   '       * # r{  r  r   s   &r   rK  DUP_Flint.is_zero=	  s     66zr   c                H    V P                   V P                  P                  8H  # r  )r   r   r   r   s   &r   r  DUP_Flint.is_oneB	  s     vv""r   c                <    V P                   P                  4       ^ 8*  # r  r  r   s   &r   r  DUP_Flint.is_groundG	       vv}}!##r   c                <    V P                   P                  4       ^8*  # r  r  r   s   &r   r  DUP_Flint.is_linearL	  r>  r   c                <    V P                   P                  4       ^8*  # r  r  r   s   &r   r  DUP_Flint.is_quadraticQ	  r>  r   c                ,  a V P                   oSP                  4       ^ 8  ;'       gn    \        ;QJ d6    V3R l\        SP                  4       4       4       F  '       g   K   RM+	  RM'! V3R l\        SP                  4       4       4       4      '       * # )r  c              3  6   <"   T F  pSV,          x  K  	  R # 5ir}   r   )r   r5  frs   & r   r   (DUP_Flint.is_monomial.<locals>.<genexpr>Z	  s     )L9KA"Q%%9Ks   TF)r   rW  anyr  )r   rE  s   &@r   r  DUP_Flint.is_monomialV	  sZ     VVyy{QLLcc)Lryy{9K)Lccc)Lryy{9K)L&L"LLr   c                P    V P                  4       V P                  P                  8H  # r  )rE  r   r   r   s   &r   r  DUP_Flint.is_monic\	  s     ttv""r   c                6    V P                  4       P                  # r  )r   r  r   s   &r   r  DUP_Flint.is_primitivea	  s      ---r   c                6    V P                  4       P                  # r  )r   r  r   s   &r   r  DUP_Flint.is_homogeneousf	  s      ///r   c                    V P                   P                  V P                   P                  4       4      pVP                  4       ^ 8*  # r  )r   r  r  rW  r  s   & r   r  DUP_Flint.is_sqfk	  s3     FFJJqvv((*+xxzQr   c                    V P                   P                  4       w  r\        V4      ^ 8X  d   R# \        V4      ^8X  d   V^ ,          ^,          ^8H  # R# )r  TF)r   r  r1  )r   rB  r  s   &  r   r  DUP_Flint.is_irreducibleq	  sF     VV]]_
w<1\Q1:a=A%%r   c                   V P                   P                  '       d    V P                  \        4      p V P                   P
                  '       d$   \        V P                  P                  4       4      # R#   \         d     R# i ; ir5  )	r   r   r   r
   r   r~   boolr   r  r   s   &r   r  DUP_Flint.is_cyclotomic|	  sc     55;;;IIbM 55;;;,,.//  " s   A4 4BBr   )r   r   rV  r}   r   rJ  r  r  )xr   r  r  r  r  r   r  r9  r  r   r   r>  rD  r?  r  r   r   r   r   r   r   r1  r2  rL  rb  rj  rq  rw  rz  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.  rE  rI  rO  rX  r\  r`  rd  rh  rp  rx  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/  r6  r:  r>  rD  rG  rL  rO  r   rZ  rY  rX  rW  rj  rt  rx  r  rK  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                D    \        \        WV4      \        WV4      W24      # r}   )DMFr   numdenr   r   s   &&&&r   init_normal_DMFr[  	  s$    z#C(#C(#4 4r   c                  r   ] tR tRtRtR/tR0R lt]R0R l4       tR t	]R0R l4       t
R tR	 tR
 tR tR1R ltR2R lt]R 4       t]R 4       tR tR tR tR tR tR tR tR tR tR t]tR3R lt]R 4       t ]R 4       t!R t"R t#R t$R  t%R! t&R" t'R# t(R$ t)R% t*R& t+R' t,R( t-R) t.R* t/R+ t0R, t1R- t2R.t3R# )4rW  i	  z'Dense Multivariate Fractions over `K`. Nc                	|    V P                  WV4      w  rEp\        WEW24      w  rEW@n        WPn        W0n        W n        R # r}   )_parserb   rY  rZ  r   r   )r   r   r   r   rY  rZ  s   &&&&  r   __init__DMF.__init__	  s8    Cc2#c1r   c                	    V P                  WV4      w  rEp\        P                  V 4      pWFn        WVn        W6n        W&n        V# r}   )r^  r  r   rY  rZ  r   r   )r   r   r   r   rY  rZ  r  s   &&&&   r   r   DMF.new	  s=    

3S1#nnS!
r   c                	N    V P                  WP                  V P                  4      # r}   )r   r   r   )r   r   s   &&r   r   DMF.ground_new	  s    xxXXtxx00r   c                	   \        V\        4      '       d   Vw  rEVeF   \        V\        4      '       d   \        WCV4      p\        V\        4      '       d   \        WSV4      pM.\	        V4      w  rF\	        V4      w  rWWg8X  d   TpM\        R4      h\        WS4      '       d   \        R4      h\        WC4      '       d   \        W24      pM\        WSV4      '       d   \        WCV4      p\        WSV4      pMsTpVeV   \        V\        4      '       d   \        WCV4      pM?\        V\        4      '       g   \        VP                  V4      V4      pM\	        V4      w  rC\        W24      pWEV3# )Nzinconsistent number of levelszfraction denominator)r   r3  r   r%   r   rv  r!   ZeroDivisionErrorr   r   r7   r   r   r   )r   r   r   r   rY  rZ  num_levden_levs   &&&&    r   r^  
DMF._parse	  s5   c5!!HCc4(('#6Cc4(('#6C+C0+C0%!C$%DEE###'(>??###c'!#C00!#C0C!#C0CCc4(('#6C#C..$S[[%5s;C',##C}r   c                	    V P                   P                  : R V P                  : RV P                  : RV P                  : R2# )z((r   z), r   )r   r   rY  rZ  r   r   s   &r   r   DMF.__repr__	  s'    %&[[%9%9155!%%OOr   c                	    \        V P                  P                  \        V P                  V P
                  4      \        V P                  V P
                  4      V P
                  V P                  34      # r}   )r   r   r   r0   rY  r   rZ  r   r   s   &r   r   DMF.__hash__	  sO    Q[[))<quu+E&quu6 7 	7r   c                  a a \        V\        4      '       d   S P                  VP                  8w  d   \        RS : RV: 24      hS P                  VP                  8X  dF   S P                  S P                  S P
                  S P                  S P                  3VP                  3# S P                  S P                  P                  VP                  4      upo\        S P                  VS P                  S4      \        S P                  VS P                  S4      3p\        VP                  W!P                  S4      pRRV3VV 3R llpVSWSV3# )z0Unify a multivariate fraction and a polynomial. r   r   TFc                   < V'       d   V'       g	   W,          # V^,
          pV'       d   \        WVS4      w  rSP                  P                  W3SV4      # r  rb   r   r   rY  rZ  r  killr   r   r   s   &&&&&r   r  DMF.poly_unify.<locals>.per	  E    "w!Ag)#C=HC{{z3<<r   )r   r   r   ry   r   r  rY  rZ  r   r   r   r   r  r   r}  r  r  r   s   f&    @r   
poly_unifyDMF.poly_unify	  s    !S!!QUUaee^#A$FGG55AEE>EE155!%%!%%@@uuaeekk!%%0HCQUUC4QUUC46A AFFC4A%)3 
= 
= SQ&&r   c                  a a \        V\        4      '       d   S P                  VP                  8w  d   \        RS : RV: 24      hS P                  VP                  8X  dR   S P                  S P                  S P
                  S P                  S P                  3VP                  VP                  33# S P                  S P                  P                  VP                  4      upo\        S P                  VS P                  S4      \        S P                  VS P                  S4      3p\        VP                  W!P                  S4      \        VP                  W!P                  S4      3pRRV3VV 3R llpVSWSV3# )z5Unify representations of two multivariate fractions. r   r   TFc                   < V'       d   V'       g	   W,          # V^,
          pV'       d   \        WVS4      w  rSP                  P                  W3SV4      # r  rp  rq  s   &&&&&r   r  DMF.frac_unify.<locals>.per
  rt  r   )
r   rW  r   ry   r   r  rY  rZ  r   r   ru  s   f&    @r   
frac_unifyDMF.frac_unify	  s!   !S!!QUUaee^#A$FGG55AEE>EE155!%%!%%*+%%9 9 uuaeekk!%%0HCQUUC4QUUC46A QUUC4QUUC46A &*3 
= 
= SQ&&r   c                    V P                   V P                  reV'       d   V'       g	   W,          # V^,          pV'       d   \        WWV4      w  rV P                  P	                  W3We4      # )z.Create a DMF out of the given representation. )r   r   rb   r   r   )r   rY  rZ  r  rr  r   r   s   &&&&&  r   r  DMF.per
  sO    55!%%Swq!#C5HC{{z344r   c                |    V P                   pV'       d   V'       g   V# V^,          p\        WP                  V4      # r  )r   r   r   )r   r   rr  r   s   &&& r   half_perDMF.half_per,
  s0    ee
q3s##r   c                	&    V P                  ^ W!4      # rJ  r   r   s   &&&r   r   DMF.zero8
      wwq###r   c                	&    V P                  ^W!4      # r  r  r   s   &&&r   r   DMF.one<
  r  r   c                8    V P                  V P                  4      # )z Returns the numerator of ``f``. )r  rY  r   s   &r   r  	DMF.numer@
      zz!%%  r   c                8    V P                  V P                  4      # )z"Returns the denominator of ``f``. )r  rZ  r   s   &r   r  	DMF.denomD
  r  r   c                N    V P                  V P                  V P                  4      # )z4Remove common factors from ``f.num`` and ``f.den``. )r  rY  rZ  r   s   &r   r  
DMF.cancelH
  s    uuQUUAEE""r   c                    V P                  \        V P                  V P                  V P                  4      V P
                  RR7      # )r  Fr  )r  r7   rY  r   r   rZ  r   s   &r   r  DMF.negL
  s0    uuWQUUAEE1551155uGGr   c                0    W P                  V4      ,           # r  )r   r  s   &&r   r  DMF.add_groundP
  s    <<?""r   c           	         \        V\        4      '       d(   V P                  V4      w  r#pw  rVp\        WVWrV4      TrMJV P	                  V4      w  r#rJpWuw  rVw  r\        \        W\W#4      \        WkW#4      W#4      p\        WlW#4      p	V! W4      # )z0Add two multivariate fractions ``f`` and ``g``. )r   r   rv  rE   r{  r8   r:   r   r  r   r   r  F_numF_denr  rY  rZ  r}  G_numG_dens   &&           r   r  DMF.addT
      a/0||A,Cc>E1"5=u"#,,q/Cca-.*NUNU'%9!%93EC%1C3}r   c           	         \        V\        4      '       d(   V P                  V4      w  r#pw  rVp\        WVWrV4      TrMJV P	                  V4      w  r#rJpWuw  rVw  r\        \        W\W#4      \        WkW#4      W#4      p\        WlW#4      p	V! W4      # )z5Subtract two multivariate fractions ``f`` and ``g``. )r   r   rv  rF   r{  r9   r:   r  s   &&           r   r  DMF.subc
  r  r   c                    \        V\        4      '       d'   V P                  V4      w  r#pw  rVp\        WWW#4      TrM5V P	                  V4      w  r#rJpWuw  rVw  r\        W[W#4      p\        WlW#4      p	V! W4      # )z5Multiply two multivariate fractions ``f`` and ``g``. r   r   rv  r:   r{  r  s   &&           r   r  DMF.mulr
  sy    a/0||A,Cc>E1u2E"#,,q/Cca-.*NUNU%1C%1C3}r   c           	     N   \        V\        4      '       dv   V P                  V P                  r2V^ 8  d   Y2V) rpV P	                  \        W!V P                  V P                  4      \        W1V P                  V P                  4      RR7      # \        R\        V4      ,          4      h)r  Fr  r  )
r   r   rY  rZ  r  r<   r   r   r  r   )r   r5  rY  rZ  s   &&  r   r  DMF.pow
  s    auuaee1u!!556 6u  F F 6a@AAr   c                    \        V\        4      '       d'   V P                  V4      w  r#pw  rVpT\        WgW#4      rM5V P	                  V4      w  r#rJpWuw  rVw  r\        W\W#4      p\        WkW#4      p	V! W4      # )z0Computes quotient of fractions ``f`` and ``g``. r  r  s   &&           r   r  DMF.quo
  sy    a/0||A,Cc>E1ge9"#,,q/Cca-.*NUNU%1C%1C3}r   c                R    V P                  V P                  V P                  RR7      # )z&Computes inverse of a fraction ``f``. Fr  )r  rZ  rY  )r   checks   &&r   r  
DMF.invert
  s    uuQUUAEE%u00r   c                B    \        V P                  V P                  4      # )z.Returns ``True`` if ``f`` is a zero fraction. r!   rY  r   r   s   &r   rK  DMF.is_zero
  s     !%%''r   c                    \        V P                  V P                  V P                  4      ;'       d,    \        V P                  V P                  V P                  4      # )z.Returns ``True`` if ``f`` is a unit fraction. )r"   rY  r   r   rZ  r   s   &r   r  
DMF.is_one
  sC     quu- + +aeeQUUAEE*	+r   c                	"    V P                  4       # r}   r  r   s   &r   r  DMF.__neg__
  r  r   c                	V   \        V\        \        34      '       d   V P                  V4      # WP                  9   d+   V P                  V P                  P                  V4      4      #  V P                  V P                  V4      4      #   \        \        \        3 d
    \        u # i ; ir}   )r   r   rW  r  r   r  r   r  r  r   r   r  r  s   &&r   r  DMF.__add__
  s~    a#s$$558O%%Z<<a 011	"55A''>+>? 	"!!	"s   )B	 	B('B(c                	$    V P                  V4      # r}   r  r  s   &&r   r  DMF.__radd__
  r  r   c                	    \        V\        \        34      '       d   V P                  V4      #  V P                  V P	                  V4      4      #   \
        \        \        3 d
    \        u # i ; ir}   )	r   r   rW  r  r  r  r   r   r  r  s   &&r   r  DMF.__sub__
  Y    a#s$$558O	"55A''>+>? 	"!!	"   A A.-A.c                	&    V ) P                  V4      # r}   r  r  s   &&r   r  DMF.__rsub__
  r  r   c                	    \        V\        \        34      '       d   V P                  V4      #  V P                  V P	                  V4      4      #   \
        \        \        3 d
    \        u # i ; ir}   )	r   r   rW  r  r  r  r   r   r  r  s   &&r   r  DMF.__mul__
  r  r  c                	$    V P                  V4      # r}   r  r  s   &&r   r  DMF.__rmul__
  r  r   c                	$    V P                  V4      # r}   r  r  s   &&r   r  DMF.__pow__
  r  r   c                	    \        V\        \        34      '       d   V P                  V4      #  V P                  V P	                  V4      4      #   \
        \        \        3 d
    \        u # i ; ir}   )	r   r   rW  r  r  r  r   r   r  r  s   &&r   r  DMF.__truediv__
  r  r  c                	4    V P                  R R7      V,          # )F)r  )r  )r   r  s   &&r   r  DMF.__rtruediv__
  s    {{{'))r   c                	    \        V\        4      '       dd   V P                  V4      w    pw  r4pV P                  VP                  8X  d-   \	        W@P                  V P
                  4      ;'       d    W58H  #  R # V P                  V4      w    r&pV P                  VP                  8X  d   We8H  #  R #   \         d     R # i ; ir   r   r   rv  r   r"   r   r{  ry   r   r  rB  r  r  r  r}  s   &&     r   r  
DMF.__eq__
  s    	!S!!-.\\!_*1a%55AEE>$UEE1559HHejH "  !"Q1aA55AEE>6M "
  ! 		s   A0B3 3B3 ;4B3 3CCc                	    \        V\        4      '       di   V P                  V4      w    pw  r4pV P                  VP                  8X  d2   \	        W@P                  V P
                  4      ;'       d    W58H  '       * #  R # V P                  V4      w    r&pV P                  VP                  8X  d   We8g  #  R #   \         d     R # i ; ir
  r  r  s   &&     r   __ne__
DMF.__ne__
  s    	!S!!-.\\!_*1a%55AEE> )% > M M5:NN "  !"Q1aA55AEE>6M "
  ! 		s   A0B8 3	B8  4B8 8CCc                	6    V P                  V4      w    r#pW48  # r}   r{  r   r  rB  r}  r  s   &&   r   r  
DMF.__lt__      Q1aAur   c                	6    V P                  V4      w    r#pW48*  # r}   r  r  s   &&   r   r  
DMF.__le__      Q1aAvr   c                	6    V P                  V4      w    r#pW48  # r}   r  r  s   &&   r   r   
DMF.__gt__  r  r   c                	6    V P                  V4      w    r#pW48  # r}   r  r  s   &&   r   r  
DMF.__ge__  r  r   c                	L    \        V P                  V P                  4      '       * # r}   r  r   s   &r   r  DMF.__bool__  s    aeeQUU+++r   )rZ  r   r   rY  rX  r}   r  r   r
  )4r   r  r  r  r  r  r_  r  r   r   r^  r   r   rv  r{  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  rK  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r   r   r   rW  rW  	  sA   1,I 
 
1 ) )VP7':'>5
$ $ $ $ $!!#H#	B E1 ( ( + +
	""""*"",r   rW  c                @    \        \        W4      \        W4      V4      # r}   )ANPr   )r   modr   s   &&&r   init_normal_ANPr    s     z####S* *r   c                    a  ] tR tRtRtR?tR t]V 3R l4       tR t	]
R 4       t]
R 4       tR tR	 tR
 tR tR tR tR tR t]R 4       t]R 4       tR tR tR tR tR tR t]R 4       tR tR tR t R t!R t"R t#R t$R  t%R! t&R" t'R# t(R$ t)R% t*R& t+R' t,]
R( 4       t-]
R) 4       t.]
R* 4       t/R+ t0R, t1R- t2R. t3R/ t4R0 t5R1 t6R2 t7R3 t8R4 t9R5 t:R6 t;R7 t<R8 t=R9 t>R: t?R; t@R< tAR= tBR>tCV ;tD# )@r  i  z1Dense Algebraic Number Polynomials over a field. c                	"   \        V\        4      '       d   M\        V4      \        J d   \        \	        W4      V^ 4      pM^\        V\
        4      '       d!   V Uu. uF  qCP                  V4      NK  	  ppMVP                  V4      .p\        \        V4      V^ 4      p\        V\        4      '       d   MC\        V\        4      '       d   \        \	        W#4      V^ 4      pM\        \        V4      V^ 4      pV P                  WV4      # u upi rJ  )	r   r   r   r   r$   r   r   r   r   )r   r   r  r   rz  s   &&&& r   r   ANP.__new__"  s    c3#Y$mC-sA6C#t$$/23s!{{1~s3{{3'(inc1-Cc3T""mC-sA6Cinc1-Cwws%% 4s   Dc                	   < VP                   VP                   u;8X  d   V8X  g   M \        R 4      h\        SV `  V 4      pWn        W$n        W4n         V# )zInconsistent domain)r   r   superr   r   _mod)r   r   r  r   r  r   s   &&&& r   r   ANP.new7  sF    377)c)455goc"
r   c                	T    \         V P                  V P                  V P                  33# r}   )r  r   r  r   r   s   &r   r9  ANP.__reduce__D  s     TXXtxx222r   c                	6    V P                   P                  4       # r}   r   r   r   s   &r   r   ANP.repG  s    yy  ""r   c                	"    V P                  4       # r}   )mod_to_listr   s   &r   r  ANP.modK  s    !!r   c                	    V P                   # r}   r  r   s   &r   to_DMP
ANP.to_DMPO      yyr   c                	    V P                   # r}   )r  r   s   &r   
mod_to_DMPANP.mod_to_DMPR  r  r   c                	N    V P                  WP                  V P                  4      # r}   )r   r  r   r  s   &&r   r  ANP.perU  s    uuS&&!%%((r   c                	    V P                   P                  : R V P                  P                  4       : RV P                  P                  4       : RV P
                  : R2# r   )r   r   r   r   r  r   r   s   &r   r   ANP.__repr__X  s8    #$;;#7#79I166>>K[]^]b]bccr   c                	    \        V P                  P                  V P                  4       V P                  P                  4       V P
                  34      # r}   )r   r   r   r   r  r   r   s   &r   r   ANP.__hash__[  s5    Q[[))1::<9JAEERSSr   c                    V P                   V8X  d   V # V P                  V P                  P                  V4      V P                  P                  V4      V4      # )z.Convert ``f`` to a ``ANP`` over a new domain. )r   r   r   r   r  r   s   &&r   r   ANP.convert^  s?    55C<H55,affnnS.A3GGr   c                  aa \        V\        4      '       d   V P                  VP                  8w  d   \        RV : RV: 24      hV P                  VP                  8X  d:   V P                  V P
                  V P                  VP                  V P                  3# V P                  P                  VP                  4      o\        V P                  V P                  S4      p\        VP                  VP                  S4      pSV P                  8w  d4   SVP                  8w  d#   \        V P                  V P                  S4      oM*SV P                  8X  d   V P                  oMVP                  oVV3R lpSWBVS3# )z0Unify representations of two algebraic numbers. r   r   c                   < \        V SS4      # r}   r  )r   r   r  s   &r   rQ  ANP.unify.<locals>.<lambda>~  s    c#sC0r   )	r   r  r  ry   r   r  r   r   r   )r   r  r}  r  r  r   r  s   &&   @@r   r   	ANP.unifye  s    !S!!QUUaee^#A$FGG55AEE>55!%%quu44%%++aee$CAEE155#.AAEE155#.Aaee|quu!!%%4!%%<%%C%%C0CCAs""r   c                   \        V\        4      '       d   V P                  VP                  8w  d   \        RV : RV: 24      hV P                  VP                  8w  dH   V P                  P                  VP                  4      pV P                  V4      p VP                  V4      pV P                  VP                  V P                  V P                  3# r   )r   r  r  ry   r   r   r   r   r   s   && r   	unify_ANPANP.unify_ANP  s    !S!!QVVqvv%5#A$FGG 55AEE>%%++aee$C		#A		#Avvqvvqvvquu,,r   c                	    \        ^ W4      # rJ  r  r   r  r   s   &&&r   r   ANP.zero      1cr   c                	    \        ^W4      # r  r  r  s   &&&r   r   ANP.one  r  r   c                6    V P                   P                  4       # )r  )r   r  r   s   &r   r  ANP.to_dict      vv~~r   c                    \        V P                  ^ V P                  4      pVP                  4        F"  w  r#V P                  P	                  V4      W&   K$  	  V# )r
  )r&   r   r   r  r  )r   r   r  r  s   &   r   r  ANP.to_sympy_dict  sE    !%%AEE*IIKDAUU^^A&CF   
r   c                6    V P                   P                  4       # r  r  r   s   &r   r   ANP.to_list  r
  r   c                6    V P                   P                  4       # )z5Return ``f.mod`` as a list with native coefficients. )r  r   r   s   &r   r  ANP.mod_to_list  r
  r   c                |    V P                  4        Uu. uF  qP                  P                  V4      NK  	  up# u upi )r  )r   r   r  r  s   & r   r  ANP.to_sympy_list  s+    ,-IIK9Kq"K999s   #9c                6    V P                   P                  4       # r   )r   r   r   s   &r   r   ANP.to_tuple  s     vv  r   c           
     	f    \        \        \        \        VP                  V4      4      4      W#4      # r}   )r  r   r   r  r   )r   r   r  r   s   &&&&r   r   ANP.from_list  s$    9T#ckk3"7893DDr   c                V    V P                  V P                  P                  V4      4      # r  )r  r   r  r  s   &&r   r  ANP.add_ground       uuQVV&&q)**r   c                V    V P                  V P                  P                  V4      4      # r  )r  r   r  r  s   &&r   r  ANP.sub_ground  r  r   c                V    V P                  V P                  P                  V4      4      # )z3Multiply ``f`` by an element of the ground domain. )r  r   r  r  s   &&r   r  ANP.mul_ground  r  r   c                V    V P                  V P                  P                  V4      4      # )z6Quotient of ``f`` by an element of the ground domain. )r  r   r  r  s   &&r   r  ANP.quo_ground  r  r   c                	T    V P                  V P                  P                  4       4      # r}   )r  r   r  r   s   &r   r  ANP.neg  s    uuQVVZZ\""r   c                	l    V P                  V4      w  r#rEV P                  VP                  V4      WE4      # r}   )r   r   r  r   r  r}  r  r  r   s   &&    r   r  ANP.add  ,    QcuuQUU1Xs((r   c                	l    V P                  V4      w  r#rEV P                  VP                  V4      WE4      # r}   )r   r   r  r#  s   &&    r   r  ANP.sub  r%  r   c                	    V P                  V4      w  r#rEV P                  VP                  V4      P                  V4      WE4      # r}   )r   r   r  r  r#  s   &&    r   r  ANP.mul  s5    QcuuQUU1X\\#&11r   c                P   \        V\        4      '       g   \        R\        V4      ,          4      hV P                  pV P
                  pV^ 8  d   VP                  V4      V) rV P                  VP                  V4      P                  V P                  4      W P                  4      # r  )r   r   r  r   r  r   r  r   r  r  r   )r   r5  r  r}  s   &&  r   r  ANP.pow  sz    !S!!6a@AAffFFq588C=1"q uuQUU1X\\!&&)366r   c                	    V P                  V4      w  r#rEV P                  VP                  VP                  V4      4      P	                  V4      WE4      # r}   )r   r   r  r  r  r#  s   &&    r   r  	ANP.exquo  s@    QcuuQUU188C=)--c2C==r   c                	p    V P                  V4      V P                  V P                  V P                  4      3# r}   )r  r   r  r   r  s   &&r   r  ANP.div  s(    wwqz166!&&!%%000r   c                	$    V P                  V4      # r}   )r  r  s   &&r   r  ANP.quo  s    wwqzr   c                	    V P                  V4      w  r#rEVP                  V4      w  rgVP                  '       d   V P                  WE4      # \	        R 4      h)r  )r   r  r  r   r   )r   r  r}  r  r  r   r4  r  s   &&      r   r  ANP.rem  sE    Qc||A88866###//r   c                6    V P                   P                  4       # rD  )r   rE  r   s   &r   rE  ANP.LC      vvyy{r   c                6    V P                   P                  4       # rH  )r   rI  r   s   &r   rI  ANP.TC   r6  r   c                .    V P                   P                  # )z6Returns ``True`` if ``f`` is a zero algebraic number. )r   rK  r   s   &r   rK  ANP.is_zero  s     vv~~r   c                .    V P                   P                  # )z6Returns ``True`` if ``f`` is a unit algebraic number. )r   r  r   s   &r   r  
ANP.is_one	  s     vv}}r   c                .    V P                   P                  # r  )r   r  r   s   &r   r  ANP.is_ground  s     vvr   c                	    V # r}   r   r   s   &r   __pos__ANP.__pos__  s    r   c                	"    V P                  4       # r}   r  r   s   &r   r  ANP.__neg__  r  r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  P	                  V4      pV P                  V4      #   \         d
    \        u # i ; ir}   )r   r  r  r   r   r  r   r  r  s   &&r   r  ANP.__add__  Z    a558O	#a A <<?"  	"!!	"   A A)(A)c                	$    V P                  V4      # r}   r  r  s   &&r   r  ANP.__radd__#  r  r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  P	                  V4      pV P                  V4      #   \         d
    \        u # i ; ir}   )r   r  r  r   r   r  r   r  r  s   &&r   r  ANP.__sub__&  rF  rG  c                	&    V ) P                  V4      # r}   r  r  s   &&r   r  ANP.__rsub__0  r  r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  P	                  V4      pV P                  V4      #   \         d
    \        u # i ; ir}   )r   r  r  r   r   r  r   r  r  s   &&r   r  ANP.__mul__3  rF  rG  c                	$    V P                  V4      # r}   r  r  s   &&r   r  ANP.__rmul__=  r  r   c                	$    V P                  V4      # r}   r  r  s   &&r   r  ANP.__pow__@  r  r   c                	$    V P                  V4      # r}   r  r  s   &&r   r  ANP.__divmod__C  r  r   c                	$    V P                  V4      # r}   r  r  s   &&r   r  ANP.__mod__F  r  r   c                	    \        V\        4      '       d   V P                  V4      #  V P                  P	                  V4      pV P                  V4      #   \         d
    \        u # i ; ir}   )r   r  r  r   r   r  r   r  r  s   &&r   r  ANP.__truediv__I  rF  rG  c                	d     V P                  V4      w  r# pW#8H  #   \         d
    \        u # i ; ir}   r   ry   r  r   r  r}  r  rB  s   &&   r   r  
ANP.__eq__S  :    	"QJA!Q v ! 	"!!	"    //c                	d     V P                  V4      w  r# pW#8g  #   \         d
    \        u # i ; ir}   r[  r\  s   &&   r   r  
ANP.__ne__Z  r^  r_  c                	4    V P                  V4      w  r# pW#8  # r}   r   r\  s   &&   r   r  
ANP.__lt__a      [[^
aur   c                	4    V P                  V4      w  r# pW#8*  # r}   rc  r\  s   &&   r   r  
ANP.__le__e      [[^
avr   c                	4    V P                  V4      w  r# pW#8  # r}   rc  r\  s   &&   r   r   
ANP.__gt__i  re  r   c                	4    V P                  V4      w  r# pW#8  # r}   rc  r\  s   &&   r   r  
ANP.__ge__m  rh  r   c                	,    \        V P                  4      # r}   )rT  r   r   s   &r   r  ANP.__bool__q  s    AFF|r   r   )r   r  r   )Er   r  r  r  r  r  r   r  r   r9  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  rE  rI  rK  r  r  r@  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  __classcell__)r   s   @r   r  r    s   ;'I&*  3 # # " ")dTH#:-           :! E E++++#))27>10        #### r   r  )r  
__future__r   sympy.external.gmpyr   sympy.utilities.exceptionsr   sympy.core.numbersr   sympy.core.sympifyr   sympy.polys.polyutilsr   r   sympy.polys.domainsr	   r
   r   sympy.polys.polyerrorsr   r   r   r   sympy.polys.densebasicr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   sympy.polys.densearithr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   sympy.polys.densetoolsrJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   sympy.polys.euclidtoolsrY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   sympy.polys.sqfreetoolsrc   rd   re   rf   rg   rh   ri   sympy.polys.factortoolsrj   rk   rl   rm   sympy.polys.rootisolationrn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r   r   r   r   r[  rW  r  r  r   r   r   <module>r     sI   7 " , @ ! * C . .         0      4    "  ( ( (. .$ $ $ $
 7= EG+ GT"p pfA AH4
E,
k E,P*
U+ Ur   