realroot_doc 0.1.1
|
00001 #ifndef realroot_ring_bernstein_hpp 00002 #define realroot_ring_bernstein_hpp 00003 00018 #include <realroot/Seq.hpp> 00019 #include <realroot/tensor_bernstein.hpp> 00020 #include <realroot/tensor_bernstein_fcts.hpp> 00021 #include <realroot/monomial.hpp> 00022 #include <realroot/polynomial.hpp> 00023 #include <realroot/ring.hpp> 00024 00025 #define TMPL template<class C,class B> 00026 #define RING ring<C,B> 00027 00028 namespace mmx { 00029 struct Bernstein {}; 00030 00031 //---------------------------------------------------------------------- 00032 template<class C> 00033 struct use<polynomial_of,polynomial<C,with<Bernstein> > >{ 00034 00035 typedef tensor::bernstein<C> rep_t; 00036 typedef C Scalar; 00037 typedef polynomial<C, with<Bernstein> > Polynomial; 00038 typedef monom<C> Monomial; 00039 typedef ring<C, Bernstein > Ring; 00040 00041 }; 00042 00043 template<class C> 00044 struct ring<C, Bernstein > { 00045 typedef tensor::bernstein<C> rep_t; 00046 typedef C Scalar; 00047 typedef polynomial<C, with<Bernstein> > Polynomial; 00048 typedef monom<C> Monomial; 00049 typedef ring<C, Bernstein > Ring; 00050 00051 typedef ring<C, Bernstein > self_t; 00052 // typedef self_t var_t; 00053 00054 ring(const char* s) {var = variables(s); } 00055 00056 static variables var; 00057 static variables& vars () { return var;} 00058 static int nbvar() { return var.nbvar(); } 00059 00060 Polynomial operator[](int i) const { 00061 return Polynomial((C)1,1,i); 00062 } 00063 }; 00064 00065 //-------------------------------------------------------------------- 00066 template<class C> struct ring_of; 00067 template<class C> struct ring_of<polynomial<C,with<Bernstein> > > { 00068 typedef ring<C, Bernstein> Ring; 00069 } ; 00070 //-------------------------------------------------------------------- 00071 template<class C> variables ring<C,Bernstein>::var; 00072 //-------------------------------------------------------------------- 00073 TMPL inline Seq<typename ring<C,Bernstein>::Polynomial> 00074 coefficients(const typename ring<C,Bernstein>::Polynomial& pol, int v ) { 00075 Seq<typename ring<C,Bernstein>::Polynomial> res; 00076 00077 return res; 00078 } 00079 00080 //==================================================================== 00081 } //namespace mmx 00082 #undef TMPL 00083 #undef RING 00084 #undef Polynomial 00085 #endif // realroot_polynom_mdse_hpp