realroot_doc 0.1.1
|
00001 #ifndef realroot_ring_sparse_hpp 00002 #define realroot_ring_sparse_hpp 00003 //==================================================================== 00020 //==================================================================== 00021 #include <realroot/sparse_monomials.hpp> 00022 #include <realroot/Seq.hpp> 00023 #include <realroot/polynomial.hpp> 00024 #include <realroot/ring.hpp> 00025 00026 #define TMPL template<class C, class O> 00027 #define RING ring<C, Sparse, O > 00028 //==================================================================== 00029 namespace mmx { 00030 00031 template<class A, class B> struct use; 00032 template<class C, class V> struct polynomial; 00033 template<class C, class V> struct with; 00034 00035 struct Sparse {}; 00036 00037 template<> struct default_variant_of<Sparse> { 00038 typedef DegRevLex Variant; 00039 } ; 00040 00041 template<class C, class O> 00042 struct use<polynomial_of, polynomial<C, with<Sparse,O> > > { 00043 00044 typedef sparse::monomial_seq<C,O> rep_t; 00045 typedef typename rep_t::Monomial Monomial; 00046 typedef C Scalar; 00047 typedef RING var_t; 00048 typedef RING Ring; 00049 typedef polynomial<C, with<Sparse,O> > Polynomial; 00050 00051 }; 00052 00053 00055 template<class C, class O > 00056 struct ring<C, Sparse, O > { 00057 00059 typedef sparse::monomial_seq<C,O> rep_t; 00060 typedef typename rep_t::Monomial Monomial; 00061 typedef C Scalar; 00062 typedef RING var_t; 00063 typedef RING self_t; 00064 typedef polynomial<C, with<Sparse,O> > Polynomial; 00065 00066 ring(){} 00067 ring(const self_t& r){} 00068 ring(const char* s) {var = variables(s); } 00069 00070 Polynomial operator[](int i) const { 00071 return Polynomial((C)1,1,i); 00072 } 00073 00074 static int nbvar() { return var.nbvar(); } 00075 00076 static variables var; 00077 static variables& vars () { return var;} 00078 00079 }; 00080 00081 TMPL variables RING::var; 00082 TMPL C sample (const RING& R) { return (C)0; } 00083 00084 } // namespace mmx 00085 //==================================================================== 00086 #undef TMPL 00087 #undef PRING 00088 #undef RING 00089 #undef RING 00090 #undef Polynomial 00091 #endif //realroot_ring_sparse_hpp