Developer documentation

polynomial_dual.hpp
Go to the documentation of this file.
1 #ifndef realroot_ring_dual_hpp
2 #define realroot_ring_dual_hpp
3 
15 //====================================================================
16 #include <realroot/polynomial.hpp>
17 #include <realroot/sparse_dual.hpp>
18 
19 #define TMPL template<class C, class O>
20 #define RING ring<C,Dual,O>
21 #define RING_POL ring<C,Sparse,O>
22 #define POL polynomial<C,with<Sparse,O> >
23 #define DUALPOL polynomial<C,with<Dual,O> >
24 //====================================================================
25 namespace mmx {
26 
27  struct Dual {};
28 
29  template<class A, class B> struct use;
30  template<class C, class V> struct polynomial;
31  template<class C, class V> struct with;
32 
33  template<class C, class O>
35 
37 
38  typedef C Scalar;
39  typedef typename rep_t::Monomial Monomial;
42 
43  };
44 
48  template<class C, class O>
49  struct ring<C, Dual, O > {
50 
51  typedef RING self_t;
53 
54  typedef C Scalar;
55  typedef typename rep_t::Monomial Monomial;
57 
58  typedef RING Ring;
59 
60  static variables& vars () { return RING_POL::vars();}
61 
62  Polynomial operator[](int i) const {
63  return Polynomial((C)1,1,i);
64  }
65 
66  int nbvar() const { return RING_POL::var.nbvar(); }
67  };
68 
69 
70  template<class C, class O> C sample(const RING&rg) { return (C)0;}
71 
72 
74  TMPL define_operator_rrr(POL, DUALPOL, POL, operator*, sparse::mul)
75 
76  //----------------------------------------------------------------------
77  template<class P, class Q> struct mul_helper;
78  template<class C, class O> struct mul_helper<
79  polynomial< C, with<Sparse,O> >,
80  polynomial< C, with<Dual, O> > > {
82  };
83 
84  template<class C, class O> struct mul_helper<
85  polynomial< C, with<Dual, O> >,
86  polynomial< C, with<Sparse,O> > > {
88  };
89 }
90 //====================================================================
91 #undef TMPL
92 #undef RING
93 #undef RING_POL
94 #undef POL
95 #undef DUALPOL
96 #undef Polynomial
97 //====================================================================
98 #endif //realroot_polynomial_dual_hpp
void mul(dual< C, O > &res, const dual< C, O > &a, const dual< C, O > &b)
Definition: sparse_dual.hpp:135
sparse::dual< C, O > rep_t
Definition: polynomial_dual.hpp:52
Polynomial operator[](int i) const
Definition: polynomial_dual.hpp:62
C sample(const RING &rg)
Definition: polynomial_dual.hpp:70
polynomial< C, with< Dual, O > > TYPE
Definition: polynomial_dual.hpp:81
Definition: sparse_dual.hpp:17
Dual ring of the polynomials.
Definition: polynomial_dual.hpp:49
Definition: polynomial_sparse.hpp:35
#define Monomial
Definition: monomial.hpp:56
#define TMPL
Definition: polynomial_dual.hpp:19
polynomial< C, with< Dual, O > > Polynomial
Definition: polynomial_dual.hpp:40
Ring of polynomials.
Definition: ring.hpp:48
void mul(Interval< C, r > &a, const C &x)
Definition: Interval_fcts.hpp:259
Definition: polynomial.hpp:43
C Scalar
Definition: polynomial_dual.hpp:54
polynomial< C, with< Sparse, O > > TYPE
Definition: polynomial_dual.hpp:87
sparse::dual< C, O > rep_t
Definition: polynomial_dual.hpp:36
polynomial< C, with< Dual, O > > Polynomial
Definition: polynomial_dual.hpp:56
Definition: polynomial.hpp:34
rep_t::Monomial Monomial
Definition: polynomial_dual.hpp:55
Definition: polynomial_dual.hpp:27
Definition: polynomial.hpp:37
TMPL POL
Definition: polynomial_dual.hpp:74
polynomial< C, with< B, O > > Polynomial
Definition: ring.hpp:50
int nbvar() const
Definition: polynomial_dual.hpp:66
static variables & vars()
Definition: polynomial_dual.hpp:60
TMPL define_operator_rrr(DUALPOL, POL, DUALPOL, operator*, sparse::mul) TMPL define_operator_rrr(POL
double C
Definition: solver_mv_fatarcs.cpp:16
RING Ring
Definition: polynomial_dual.hpp:58
TMPL DUALPOL
Definition: polynomial_dual.hpp:74
rep_t::Monomial Monomial
Definition: polynomial_dual.hpp:39
Definition: array.hpp:12
Definition: variables.hpp:65
ring< C, Dual, O > Ring
Definition: polynomial_dual.hpp:41
Definition: polynomial.hpp:40
#define RING
Definition: polynomial_dual.hpp:20
RING self_t
Definition: polynomial_dual.hpp:51
Home