shape_doc 0.1
/Users/mourrain/Devel/mmx/shape/glue/glue_rational_curve.cpp
Go to the documentation of this file.
00001 
00002 #include <basix/double.hpp>
00003 #include <basix/vector.hpp>
00004 #include <basix/port.hpp>
00005 #include <numerix/integer.hpp>
00006 #include <numerix/rational.hpp>
00007 #include <numerix/floating.hpp>
00008 #include <realroot/Interval_glue.hpp>
00009 #include <basix/int.hpp>
00010 #include <numerix/kernel.hpp>
00011 #include <realroot/polynomial.hpp>
00012 #include <realroot/polynomial_glue.hpp>
00013 #include <realroot/polynomial_sparse_glue.hpp>
00014 #include <shape/axel_glue.hpp>
00015 #include <shape/curve_rational_glue.hpp>
00016 #include <basix/alias.hpp>
00017 #include <basix/glue.hpp>
00018 
00019 #define double_literal(x) as_double (as_string (x))
00020 #define int_literal(x) as_int (as_string (x))
00021 #define set_of_generic set_of(generic)
00022 #define set_of_double set_of(double)
00023 #define set_of_integer set_of(integer)
00024 #define set_of_rational set_of(rational)
00025 #define set_of_bigfloat set_of(bigfloat)
00026 #define set_of_complex_bigfloat set_of(complex_bigfloat)
00027 
00028 namespace mmx {
00029   static interval<double>
00030   GLUE_1 (const double &arg_1) {
00031     return interval<double > (arg_1);
00032   }
00033   
00034   static interval<double>
00035   GLUE_2 (const double &arg_1, const double &arg_2) {
00036     return interval_from_pair (arg_1, arg_2);
00037   }
00038   
00039   static interval<double>
00040   GLUE_3 (const interval<double> &arg_1) {
00041     return -arg_1;
00042   }
00043   
00044   static interval<double>
00045   GLUE_4 (const interval<double> &arg_1, const interval<double> &arg_2) {
00046     return arg_1 + arg_2;
00047   }
00048   
00049   static interval<double>
00050   GLUE_5 (const interval<double> &arg_1, const interval<double> &arg_2) {
00051     return arg_1 - arg_2;
00052   }
00053   
00054   static interval<double>
00055   GLUE_6 (const interval<double> &arg_1, const interval<double> &arg_2) {
00056     return arg_1 * arg_2;
00057   }
00058   
00059   static interval<double>
00060   GLUE_7 (const double &arg_1, const interval<double> &arg_2) {
00061     return arg_1 + arg_2;
00062   }
00063   
00064   static interval<double>
00065   GLUE_8 (const interval<double> &arg_1, const double &arg_2) {
00066     return arg_1 + arg_2;
00067   }
00068   
00069   static interval<double>
00070   GLUE_9 (const double &arg_1, const interval<double> &arg_2) {
00071     return arg_1 - arg_2;
00072   }
00073   
00074   static interval<double>
00075   GLUE_10 (const interval<double> &arg_1, const double &arg_2) {
00076     return arg_1 - arg_2;
00077   }
00078   
00079   static interval<double>
00080   GLUE_11 (const double &arg_1, const interval<double> &arg_2) {
00081     return arg_1 * arg_2;
00082   }
00083   
00084   static interval<double>
00085   GLUE_12 (const interval<double> &arg_1, const double &arg_2) {
00086     return arg_1 * arg_2;
00087   }
00088   
00089   static interval<double>
00090   GLUE_13 (const interval<double> &arg_1, const interval<double> &arg_2) {
00091     return arg_1 / arg_2;
00092   }
00093   
00094   static double
00095   GLUE_14 (const interval<double> &arg_1) {
00096     return interval_lower (arg_1);
00097   }
00098   
00099   static double
00100   GLUE_15 (const interval<double> &arg_1) {
00101     return interval_upper (arg_1);
00102   }
00103   
00104   static alias<shape_axel>
00105   GLUE_16 (const alias<shape_axel> &arg_1, const shape_curve_rational &arg_2) {
00106     return alias_write (arg_1, arg_2);
00107   }
00108   
00109   static shape_curve_rational
00110   GLUE_17 (const ring<rational, Sparse, DegRevLex>::Polynomial &arg_1, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_2, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_3) {
00111     return create_curve_rational (arg_1, arg_2, arg_3);
00112   }
00113   
00114   static shape_curve_rational
00115   GLUE_18 (const interval<double> &arg_1, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_2, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_3, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_4) {
00116     return create_curve_rational (arg_1, arg_2, arg_3, arg_4);
00117   }
00118   
00119   static shape_curve_rational
00120   GLUE_19 (const interval<double> &arg_1, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_2, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_3, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_4, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_5) {
00121     return create_curve_rational (arg_1, arg_2, arg_3, arg_4, arg_5);
00122   }
00123   
00124   static shape_curve_rational
00125   GLUE_20 (const ring<rational, Sparse, DegRevLex>::Polynomial &arg_1, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_2, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_3, const ring<rational, Sparse, DegRevLex>::Polynomial &arg_4) {
00126     return create_curve_rational (arg_1, arg_2, arg_3, arg_4);
00127   }
00128   
00129   void
00130   glue_rational_curve () {
00131     static bool done = false;
00132     if (done) return;
00133     done = true;
00134     call_glue (string ("glue_double"));
00135     call_glue (string ("glue_string"));
00136     call_glue (string ("glue_vector_generic"));
00137     call_glue (string ("glue_interval"));
00138     call_glue (string ("glue_polynomial_sparse_rational"));
00139     call_glue (string ("glue_axel"));
00140     define_type<interval<double> > (gen (lit ("Interval"), lit ("Double")));
00141     define ("interval", GLUE_1);
00142     define ("interval", GLUE_2);
00143     define ("-", GLUE_3);
00144     define ("+", GLUE_4);
00145     define ("-", GLUE_5);
00146     define ("*", GLUE_6);
00147     define ("+", GLUE_7);
00148     define ("+", GLUE_8);
00149     define ("-", GLUE_9);
00150     define ("-", GLUE_10);
00151     define ("*", GLUE_11);
00152     define ("*", GLUE_12);
00153     define ("/", GLUE_13);
00154     define ("lower", GLUE_14);
00155     define ("upper", GLUE_15);
00156     define_type<shape_curve_rational > (lit ("RationalCurve"));
00157     define ("<<", GLUE_16);
00158     define ("rational_curve", GLUE_17);
00159     define ("rational_curve", GLUE_18);
00160     define ("rational_curve", GLUE_19);
00161     define ("rational_curve", GLUE_20);
00162   }
00163 }