00001 # ifndef shape_mgxk_hpp
00002 # define shape_mgxk_hpp
00003 # include <numerix/kernel.hpp>
00004 # include <shape/with_def.hpp>
00005 # define TMPL template<class K>
00006 # define TSPE template<>
00007
00008 namespace mmx {
00009 namespace shape {
00010
00011 struct MGXK;
00012 template<class FF,class C> struct use<FF,C,MGXK> :public use<FF,C,default_env> {};
00013
00014 TSPE DECLARE_REF_OF(MGXK,MGXK);
00015
00016 struct MGXK: public with_def<double,MGXK> {};
00017
00018 template<>
00019 struct use<bcell3d_algebraic_surface_def,double,MGXK>
00020 {
00021 typedef Interval< double > Scalar;
00022 typedef polynomial< Scalar, with<Bernstein> > Polynomial;
00023 };
00024
00025 template<>
00026 struct use<numeric_def,MGXK>
00027 {
00028 typedef ::mmx::integer Integer;
00029 typedef ::mmx::rational Rational;
00030 typedef ::mmx::floating<> Floating;
00031 };
00032
00033
00034 template<class C>
00035 struct use<algebraic_set_def,C,MGXK>
00036 {
00037 typedef ::mmx::rational Scalar;
00038 typedef polynomial<Scalar, with<Sparse, DegRevLex> > Polynomial;
00039 };
00040
00041 template<class C>
00042 struct use<point_def,C,MGXK>
00043 {
00044 typedef point<C,3,MGXK> Point;
00045 };
00046
00047 TSPE DECLARE_REF_OF(integer,MGXK);
00048 TSPE DECLARE_REF_OF(rational,MGXK);
00049 TSPE DECLARE_REF_OF(floating<>,MGXK);
00050
00051 }
00052 }
00053
00054 #undef TMPL
00055 #undef TSPE
00056 #endif //shape_mgxk_hpp