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 <realroot/polynomial.hpp> 00013 #include <realroot/polynomial_glue.hpp> 00014 #include <realroot/ring_sparse_glue.hpp> 00015 #include <realroot/ring_monomial_tensor_glue.hpp> 00016 #include <realroot/ring_bernstein_tensor_glue.hpp> 00017 #include <basix/glue.hpp> 00018 00019 #define int_literal(x) as_int (as_string (x)) 00020 #define is_generic_literal is<literal> 00021 #define gen_literal_apply(f,v) gen (as<generic> (f), v) 00022 #define gen_literal_access(f,v) access (as<generic> (f), v) 00023 #define set_of_generic set_of(generic) 00024 #define set_of_double set_of(double) 00025 #define set_of_integer set_of(integer) 00026 #define set_of_rational set_of(rational) 00027 #define set_of_bigfloat set_of(bigfloat) 00028 #define set_of_complex_bigfloat set_of(complex_bigfloat) 00029 00030 namespace mmx { 00031 void 00032 glue_ring_bernstein_tensor_rational () { 00033 static bool done = false; 00034 if (done) return; 00035 done = true; 00036 call_glue (string ("glue_int")); 00037 call_glue (string ("glue_basix_vector_generic")); 00038 call_glue (string ("glue_string")); 00039 call_glue (string ("glue_kernel")); 00040 define_type<ring<rational, Sparse, DegRevLex> > (gen (lit ("RingSparseMonomial"), lit ("Rational"))); 00041 define_type<Bernstein > (lit ("BernsteinBasis")); 00042 define_constant<Bernstein > ("Bernstein", Bernstein ()); 00043 define_type<ring<rational, MonomialTensor>::Polynomial > (gen (lit ("Polynomial"), gen (lit ("RingSparseMonomial"), lit ("Rational")))); 00044 } 00045 }