realroot_doc 0.1.1
/Users/mourrain/Devel/mmx/realroot/include/realroot/polynomial_bernstein.hpp
Go to the documentation of this file.
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