1 #ifndef subdivix_subresultant_hpp
2 #define subdivix_subresultant_hpp
10 template<
class R>
static
15 typename R::value_type lb=b[
degree(b)];
20 shift(t,b,da-db); t*=a[da];
31 template<
class Polynomial>
static inline
39 template<
class Polynomial>
static inline
57 typedef typename Pol::value_type coeff_type;
60 coeff_type lp = p[n1], lq = q[n2];
65 for(
unsigned i=0;i<
N;i++) tab[i]=Pol(0);
83 a*=(coeff_type)pow<int>(-1,d*(d+1)/2);
84 b*=(coeff_type)pow<int>(-1,(d+2)*(d+3)/2);
92 Sr/=(coeff_type)(
pow(la,da-db)*a[da]);
93 Sr*=(coeff_type)pow<int>(-1,((da-db+1)*(da-db+2))/2);
95 a *=(coeff_type)
pow(b[db],da-db-1);
96 a /=(coeff_type)
pow(la,da-db-1);
101 if (db>=0) tab[db]=
b;
106 template<
class Polynomial>
118 for (
unsigned i=0;i<sp.
size();i++)
P[i]= sp[i];
119 for (
unsigned i=0;i<sq.size();i++) Q[i]= sq[i];
124 for(
unsigned i=0;i<s.
size();i++)
125 for(
int j=0; j<=
degree(s[i]);j++)
131 template<
class Pol>
static typename Pol::value_type
139 template<
class Pol>
static Pol
142 if(s.
size()>0)
return s[0][0];
146 template<
class Pol>
static bool
148 for (
unsigned i=0;i<s.
size() ;i++)
149 if(s[i]!=0)
return false;
163 for (
unsigned i=0;i<s.
size();i++)
171 for (
unsigned i=0;i<s.
size();i++)
208 for (i=0;i<D.
size();i++) D[i]/=d;
212 for (i=0;i<D.
size();i++)
226 template<
class C,
class V>
inline polynomial<C,V>
231 #endif //subdivix_subresultant_hpp
polynomial< C, V > sr_gcd(const polynomial< C, V > &p, const polynomial< C, V > &q)
Definition: subresultant.hpp:227
Sequence of terms with reference counter.
Definition: Seq.hpp:28
void resize(size_type i)
Definition: Seq.hpp:169
T pow(const T &a, int i)
Definition: binomials.hpp:12
const C & b
Definition: Interval_glue.hpp:25
dynamic_exp< E >::degree_t degree(const dynamic_exp< E > &t)
Definition: dynamicexp.hpp:191
void shift(IntervalData< RT, Poly > &ID, const RT &a)
Definition: contfrac_intervaldata.hpp:257
static Polynomial prem(const Polynomial &a, const Polynomial &b)
Definition: subresultant.hpp:32
double gcd(const double &, const double &)
Definition: GMP.hpp:90
static void pseudo_div(R &q, R &a, const R &b)
Definition: subresultant.hpp:11
#define Monomial
Definition: monomial.hpp:56
static Polynomial pquo(const Polynomial &a, const Polynomial &b)
Definition: subresultant.hpp:40
TMPL int N(const MONOMIAL &v)
Definition: monomial_glue.hpp:60
Definition: subresultant.hpp:52
polynomial< COEFF, with< MonomialTensor > > Polynomial
Definition: solver_mv_cf.cpp:23
size_type size() const
Definition: Seq.hpp:166
#define min(a, b)
Definition: parser_def.c:475
Definition: polynomial.hpp:37
Definition: subresultant.hpp:7
static Pol resultant(const Pol &p, const Pol &q, int v)
Definition: subresultant.hpp:140
Polynomial P
Definition: solver_mv_cf.cpp:24
static Seq< Pol > sequence(const Pol &p, const Pol &q)
Definition: subresultant.hpp:55
const C & c
Definition: Interval_glue.hpp:45
static Polynomial subres_gcd(const Polynomial &p, const Polynomial &q, int v)
Definition: subresultant.hpp:154
static Polynomial subres_gcd(const Polynomial &p, const Polynomial &q)
Definition: subresultant.hpp:220
double C
Definition: solver_mv_fatarcs.cpp:16
TMPL Polynomial::Scalar content(const Polynomial &p)
Definition: polynomial_fcts.hpp:240
TMPL int nbvar(const Polynomial &mp)
Definition: polynomial_fcts.hpp:43
static Pol::value_type resultant(const Pol &p, const Pol &q)
Definition: subresultant.hpp:132
static Seq< Seq< Polynomial > > sequence(const Polynomial &p, const Polynomial &q, int v)
Definition: subresultant.hpp:107
Interval< T, r > max(const Interval< T, r > &a, const Interval< T, r > &b)
Definition: Interval_fcts.hpp:135
TMPL Seq< typename ring< C, Bernstein >::Polynomial > coefficients(const typename ring< C, Bernstein >::Polynomial &pol, int v)
Definition: polynomial_bernstein.hpp:74
static bool is_zero_seq(const Seq< Pol > &s)
Definition: subresultant.hpp:147
#define assert(expr, msg)
Definition: shared_object.hpp:57