00001 00002 #include <basix/int.hpp> 00003 #include <basix/vector.hpp> 00004 #include <basix/port.hpp> 00005 #include <basix/literal.hpp> 00006 #include <numerix/integer.hpp> 00007 #include <numerix/modular.hpp> 00008 #include <numerix/modular_integer.hpp> 00009 #include <numerix/rational.hpp> 00010 #include <numerix/floating.hpp> 00011 #include <numerix/kernel.hpp> 00012 #include <basix/glue.hpp> 00013 00014 #define int_literal(x) as_int (as_string (x)) 00015 #define is_generic_literal is<literal> 00016 #define gen_literal_apply(f,v) gen (as<generic> (f), v) 00017 #define gen_literal_access(f,v) access (as<generic> (f), v) 00018 #define set_of_generic set_of(generic) 00019 #define set_of_double set_of(double) 00020 #define set_of_integer set_of(integer) 00021 #define set_of_rational set_of(rational) 00022 #define set_of_bigfloat set_of(bigfloat) 00023 #define set_of_complex_bigfloat set_of(complex_bigfloat) 00024 00025 namespace mmx { 00026 void 00027 glue_kernel () { 00028 static bool done = false; 00029 if (done) return; 00030 done = true; 00031 call_glue (string ("glue_integer")); 00032 call_glue (string ("glue_rational")); 00033 call_glue (string ("glue_floating")); 00034 define_type<scalar_set<double> > (lit ("DoubleSet")); 00035 define_type<scalar_set<integer> > (lit ("IntegerSet")); 00036 define_type<scalar_set<rational> > (lit ("RationalSet")); 00037 define_type<scalar_set<floating<> > > (lit ("FloatingSet")); 00038 define_constant<scalar_set<double> > ("DD", set_of_double); 00039 define_constant<scalar_set<integer> > ("ZZ", set_of_integer); 00040 define_constant<scalar_set<rational> > ("QQ", set_of_rational); 00041 define_constant<scalar_set<floating<> > > ("RR", set_of_bigfloat); 00042 } 00043 }