Developer documentation

polynomial_univariate.hpp
Go to the documentation of this file.
1 #ifndef realroot_polynomial_univariate_hpp
2 #define realroot_polynomial_univariate_hpp
3 
14 #include <realroot/Seq.hpp>
15 #include <realroot/univariate.hpp>
16 #include <realroot/monomial.hpp>
17 #include <realroot/polynomial.hpp>
18 #include <realroot/ring.hpp>
19 
20 #define TMPL template<class C>
21 #define RING ring<C, Univariate >
22 #define POLYNOMIAL polynomial< C, with<Univariate> >
23 namespace mmx {
24 
25  struct Univariate {};
26 
27  template<class A, class B> struct use;
28  template<class C, class V> struct polynomial;
29  template<class C, class V> struct with;
30 
32  template<class C>
35  typedef C scalar_t;
37  typedef monom<C> Monomial;
38  typedef Ring variable_t;
40  };
41 
43  template<class C>
44  struct ring<C, Univariate > {
47  typedef C scalar_t;
49  typedef monom<C> Monomial;
50  typedef self_t variable_t;
51 
52  ring(const char* s) {var = variables(s); }
53 
54  static variables var;
55  static variables& vars () { return var;}
56  static int nbvar() { return var.nbvar(); }
57 
58  Polynomial operator[](int i) const {
59  return Polynomial((C)1,1,i);
60  }
61  };
62  template<class C> variables ring<C, Univariate >::var;
63 
64  //====================================================================
65  TMPL inline Seq<POLYNOMIAL>
66  coefficients(const POLYNOMIAL & f, const int & v ) {
67  int N = degree(f,v)+1;
68  Seq<POLYNOMIAL> r(N);
69  typename POLYNOMIAL::Monomial m;
70  for(int i=0;i<N; i++) {
71  r[i]=0;
72  }
73  return r;
74  }
75 
76  TMPL inline Seq<C>
77  coefficients(const POLYNOMIAL & f) {
78  Seq<C> r;
79  for(int i=0;i<f.size(); i++) {
80  r<<f[i];
81  }
82  return r;
83  }
84 
85 
86  namespace let {
87  template<class C, class D> inline void
89  const polynomial<C, with<Univariate> >& q){
90  int d = degree(q);
91  p = polynomial< D, with<Univariate> >(D(1),d);
92  for(int i=0;i<=d;i++) p[i]= D(q[i]);
93  }
94  }
95 //====================================================================
96 } //namespace mmx
97 # undef TMPL
98 # undef RING
99 # undef POLYNOMIAL
100 # endif // realroot_polynom_mdse_hpp
static variables & vars()
Definition: polynomial_univariate.hpp:55
monom< C > Monomial
Definition: polynomial_univariate.hpp:37
Ring variable_t
Definition: polynomial_univariate.hpp:38
dynamic_exp< E >::degree_t degree(const dynamic_exp< E > &t)
Definition: dynamicexp.hpp:191
Tensor ring of polynomials in the monomial basis.
Definition: polynomial_univariate.hpp:44
polynomial< C, with< Univariate > > Polynomial
Definition: polynomial_univariate.hpp:36
static int nbvar()
Definition: polynomial_univariate.hpp:56
#define Monomial
Definition: monomial.hpp:56
TMPL int N(const MONOMIAL &v)
Definition: monomial_glue.hpp:60
Ring of polynomials.
Definition: ring.hpp:48
Polynomial operator[](int i) const
Definition: polynomial_univariate.hpp:58
Definition: polynomial.hpp:43
static variables var
Definition: ring.hpp:62
Definition: polynomial_univariate.hpp:25
C scalar_t
Definition: polynomial_univariate.hpp:47
univariate::monomials< C > rep_t
Definition: polynomial_univariate.hpp:46
self_t variable_t
Definition: polynomial_univariate.hpp:50
monom< C > Monomial
Definition: polynomial_univariate.hpp:49
Definition: polynomial.hpp:34
TMPL POLYNOMIAL
Definition: polynomial_operators.hpp:148
C scalar_t
Definition: polynomial_univariate.hpp:35
Definition: polynomial.hpp:37
polynomial< C, with< Univariate > > Polynomial
Definition: polynomial_univariate.hpp:48
polynomial< C, with< B, O > > Polynomial
Definition: ring.hpp:50
static variables var
Definition: polynomial_univariate.hpp:54
ring(const char *s)
Definition: polynomial_univariate.hpp:52
int nbvar() const
Definition: variables.hpp:90
double C
Definition: solver_mv_fatarcs.cpp:16
ring< C, Univariate > Ring
Definition: polynomial_univariate.hpp:34
void assign(A &a, const B &b)
Generic definition of the assignement function.
Definition: assign.hpp:97
Monomial class.
Definition: monomial.hpp:62
Definition: univariate.hpp:54
Definition: array.hpp:12
ring< C, Univariate > self_t
Definition: polynomial_univariate.hpp:45
Definition: variables.hpp:65
Definition: polynomial.hpp:40
TMPL Seq< typename ring< C, Bernstein >::Polynomial > coefficients(const typename ring< C, Bernstein >::Polynomial &pol, int v)
Definition: polynomial_bernstein.hpp:74
#define TMPL
Definition: polynomial_univariate.hpp:20
univariate::monomials< C > rep_t
Definition: polynomial_univariate.hpp:39
Home