Developer documentation

polynomial_sparse.hpp
Go to the documentation of this file.
1 #ifndef realroot_ring_sparse_hpp
2 #define realroot_ring_sparse_hpp
3 //====================================================================
20 //====================================================================
22 #include <realroot/Seq.hpp>
23 #include <realroot/polynomial.hpp>
24 #include <realroot/ring.hpp>
25 
26 #define TMPL template<class C, class O>
27 #define RING ring<C, Sparse, O >
28 //====================================================================
29 namespace mmx {
30 
31 template<class A, class B> struct use;
32 template<class C, class V> struct polynomial;
33 template<class C, class V> struct with;
34 
35 struct Sparse {};
36 
37 template<> struct default_variant_of<Sparse> {
38  typedef DegRevLex Variant;
39 } ;
40 
41 template<class C, class O>
43 
44  typedef sparse::monomial_seq<C,O> rep_t;
45  typedef typename rep_t::Monomial Monomial;
46  typedef C Scalar;
47  typedef RING var_t;
48  typedef RING Ring;
50 
51 };
52 
53 
55 template<class C, class O >
56 struct ring<C, Sparse, O > {
57 
59  typedef sparse::monomial_seq<C,O> rep_t;
60  typedef typename rep_t::Monomial Monomial;
61  typedef C Scalar;
62  typedef RING var_t;
63  typedef RING self_t;
65 
66  ring(){}
67  ring(const self_t& r){}
68  ring(const char* s) {var = variables(s); }
69 
70  Polynomial operator[](int i) const {
71  return Polynomial((C)1,1,i);
72  }
73 
74  static int nbvar() { return var.nbvar(); }
75 
76  static variables var;
77  static variables& vars () { return var;}
78 
79 };
80 
81 TMPL variables RING::var;
82 TMPL C sample (const RING& R) { return (C)0; }
83 
84 } // namespace mmx
85 //====================================================================
86 #undef TMPL
87 #undef PRING
88 #undef RING
89 #undef RING
90 #undef Polynomial
91 #endif //realroot_ring_sparse_hpp
rep_t::Monomial Monomial
Definition: polynomial_sparse.hpp:60
ring()
Definition: polynomial_sparse.hpp:66
RING Ring
Definition: polynomial_sparse.hpp:48
#define RING
Definition: polynomial_sparse.hpp:27
C sample(const RING &rg)
Definition: polynomial_dual.hpp:70
Definition: ring.hpp:74
static variables var
Definition: polynomial_sparse.hpp:76
Degree Reverse Lexicographic monomial ordering.
Definition: monomial_ordering.hpp:38
rep_t::Monomial Monomial
Definition: polynomial_sparse.hpp:45
Definition: polynomial_sparse.hpp:35
#define Monomial
Definition: monomial.hpp:56
sparse::monomial_seq< C, O > rep_t
internal representation of the polynomials
Definition: polynomial_sparse.hpp:59
C Scalar
Definition: polynomial_sparse.hpp:61
Ring of polynomials.
Definition: ring.hpp:48
Definition: polynomial.hpp:43
RING var_t
Definition: polynomial_sparse.hpp:62
Polynomial operator[](int i) const
Definition: polynomial_sparse.hpp:70
static variables var
Definition: ring.hpp:62
polynomial< C, with< Sparse, O > > Polynomial
Definition: polynomial_sparse.hpp:49
#define TMPL
Definition: polynomial_sparse.hpp:26
static int nbvar()
Definition: polynomial_sparse.hpp:74
RING self_t
Definition: polynomial_sparse.hpp:63
DegRevLex Variant
Definition: polynomial_sparse.hpp:38
Definition: polynomial.hpp:34
Definition: polynomial.hpp:37
ring(const char *s)
Definition: polynomial_sparse.hpp:68
polynomial< C, with< B, O > > Polynomial
Definition: ring.hpp:50
ring(const self_t &r)
Definition: polynomial_sparse.hpp:67
int nbvar() const
Definition: variables.hpp:90
static variables & vars()
Definition: polynomial_sparse.hpp:77
RING var_t
Definition: polynomial_sparse.hpp:47
double C
Definition: solver_mv_fatarcs.cpp:16
sparse::monomial_seq< C, O > rep_t
Definition: polynomial_sparse.hpp:44
Definition: array.hpp:12
Definition: variables.hpp:65
Definition: polynomial.hpp:40
polynomial< C, with< Sparse, O > > Polynomial
Definition: polynomial_sparse.hpp:64
Home