Developer documentation

polynomial_glue.hpp
Go to the documentation of this file.
1 #ifndef realroot_polynomial_glue_hpp
2 #define realroot_polynomial_glue_hpp
3 #include <basix/mmx_syntax.hpp>
7 #define TMPL template <class C, class V, class W>
8 #define WVW with<V,W>
9 #define Polynomial polynomial<C, WVW >
10 //======================================================================
11 namespace mmx {
12  TMPL unsigned hash(const Polynomial& p){ return 1;}
13  TMPL unsigned exact_hash(const Polynomial& p){ return 1;}
14  TMPL unsigned soft_hash(const Polynomial& p){ return 1;}
15  TMPL bool exact_eq(const Polynomial& p, const Polynomial& q){ return p==q;}
16  TMPL bool exact_neq(const Polynomial& p, const Polynomial& q){ return p!=q;}
17 
18  TMPL syntactic flatten(const Polynomial& p) {
19  return flatten(p.rep());
20  }
21 
22  TMPL Polynomial diff(const Polynomial& p, const generic& v) {
23  char *x= as_charp(as_mmx(v));
24  int i= Polynomial::Ring::vars()[x];
25  free_charp (x);
26  return diff(p, i);
27  }
28 
29  TMPL vector<generic>
30  polynomial_sturm_sequence(const Polynomial& p, const Polynomial& q, int v)
31  {
32  vector<generic> res;
33 
34  Seq<Polynomial> lp = coefficients(p,v);
35  vector<generic> vp;
36  for (unsigned j=0;j<lp.size();j++)
37  vp << as<generic>(lp[j]);
38  res << as<generic>(vp);
39 
40  Seq<Polynomial> lq = coefficients(q,v);
41  vector<generic> vq;
42  for (unsigned j=0;j<lq.size();j++)
43  vq << as<generic>(lq[j]);
44  res << as<generic>(vq);
45 
47  for(unsigned i=0;i<s.size();i++) {
48  Seq<Polynomial> ri = s[s.size()-i-1];
49  vector<generic> vi;
50  for (unsigned j=0;j<ri.size();j++)
51  vi << as<generic>(ri[j]);
52  res << as<generic>(vi);
53  }
54  return res;
55  }
56 
58  polynomial_resultant(const Polynomial& p, const Polynomial& q, int v)
59  {
61 
62  Polynomial r;
63  return (s[0])[0];
64  }
65 
66 
68  polynomial_gcd(const Polynomial& p, const Polynomial& q, int v)
69 {
70 
71 
72  return p;
73 }
74 
75 
76 
77 
78 
79 
80 
81 } //namespace mmx
82 //======================================================================
83 #undef TMPL
84 #undef Polynomial
85 #endif //realroot_polynomial_glue_hpp
Sequence of terms with reference counter.
Definition: Seq.hpp:28
#define TMPL
Definition: polynomial_glue.hpp:7
TMPL Polynomial diff(const Polynomial &pol, int v)
Multivariate Polynomial Differentiation.
Definition: polynomial_fcts.hpp:99
TMPL Polynomial polynomial_resultant(const Polynomial &p, const Polynomial &q, int v)
Definition: polynomial_glue.hpp:58
TMPL bool exact_neq(const Monomial &v1, const Monomial &v2)
Definition: monomial_glue.hpp:24
TMPL unsigned exact_hash(const Monomial &m)
Definition: monomial_glue.hpp:32
TMPL unsigned hash(const Monomial &v)
Definition: monomial_glue.hpp:26
polynomial< COEFF, with< MonomialTensor > > Polynomial
Definition: solver_mv_cf.cpp:23
size_type size() const
Definition: Seq.hpp:166
TMPL Polynomial polynomial_gcd(const Polynomial &p, const Polynomial &q, int v)
Definition: polynomial_glue.hpp:68
TMPL syntactic flatten(const MONOMIAL &v)
Definition: monomial_glue.hpp:36
char * as_charp(const scalar< MPZ > &b)
Definition: scalar_integer.hpp:444
TMPL vector< generic > polynomial_sturm_sequence(const Polynomial &p, const Polynomial &q, int v)
Definition: polynomial_glue.hpp:30
TMPL bool exact_eq(const Monomial &v1, const Monomial &v2)
Definition: monomial_glue.hpp:23
static Seq< Pol > sequence(const Pol &p, const Pol &q)
Definition: subresultant.hpp:55
TMPL unsigned soft_hash(const Monomial &m)
Definition: monomial_glue.hpp:33
Definition: array.hpp:12
TMPL Seq< typename ring< C, Bernstein >::Polynomial > coefficients(const typename ring< C, Bernstein >::Polynomial &pol, int v)
Definition: polynomial_bernstein.hpp:74
Home