shape_doc 0.1
|
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 }