realroot_doc 0.1.1
|
00001 00002 #include <numerix/integer.hpp> 00003 #include <numerix/rational.hpp> 00004 #include <numerix/floating.hpp> 00005 #include <realroot/Interval_glue.hpp> 00006 #include <basix/glue.hpp> 00007 00008 namespace mmx { 00009 static interval<rational> 00010 GLUE_1 (const rational &arg_1) { 00011 return interval<rational > (arg_1); 00012 } 00013 00014 static interval<rational> 00015 GLUE_2 (const rational &arg_1, const rational &arg_2) { 00016 return interval_from_pair (arg_1, arg_2); 00017 } 00018 00019 static interval<rational> 00020 GLUE_3 (const interval<rational> &arg_1) { 00021 return -arg_1; 00022 } 00023 00024 static interval<rational> 00025 GLUE_4 (const interval<rational> &arg_1, const interval<rational> &arg_2) { 00026 return arg_1 + arg_2; 00027 } 00028 00029 static interval<rational> 00030 GLUE_5 (const interval<rational> &arg_1, const interval<rational> &arg_2) { 00031 return arg_1 - arg_2; 00032 } 00033 00034 static interval<rational> 00035 GLUE_6 (const interval<rational> &arg_1, const interval<rational> &arg_2) { 00036 return arg_1 * arg_2; 00037 } 00038 00039 static interval<rational> 00040 GLUE_7 (const rational &arg_1, const interval<rational> &arg_2) { 00041 return arg_1 + arg_2; 00042 } 00043 00044 static interval<rational> 00045 GLUE_8 (const interval<rational> &arg_1, const rational &arg_2) { 00046 return arg_1 + arg_2; 00047 } 00048 00049 static interval<rational> 00050 GLUE_9 (const rational &arg_1, const interval<rational> &arg_2) { 00051 return arg_1 - arg_2; 00052 } 00053 00054 static interval<rational> 00055 GLUE_10 (const interval<rational> &arg_1, const rational &arg_2) { 00056 return arg_1 - arg_2; 00057 } 00058 00059 static interval<rational> 00060 GLUE_11 (const rational &arg_1, const interval<rational> &arg_2) { 00061 return arg_1 * arg_2; 00062 } 00063 00064 static interval<rational> 00065 GLUE_12 (const interval<rational> &arg_1, const rational &arg_2) { 00066 return arg_1 * arg_2; 00067 } 00068 00069 static interval<rational> 00070 GLUE_13 (const interval<rational> &arg_1, const interval<rational> &arg_2) { 00071 return arg_1 / arg_2; 00072 } 00073 00074 static rational 00075 GLUE_14 (const interval<rational> &arg_1) { 00076 return interval_lower (arg_1); 00077 } 00078 00079 static rational 00080 GLUE_15 (const interval<rational> &arg_1) { 00081 return interval_upper (arg_1); 00082 } 00083 00084 static interval<mmx_floating> 00085 GLUE_16 (const mmx_floating &arg_1) { 00086 return interval<mmx_floating > (arg_1); 00087 } 00088 00089 static interval<mmx_floating> 00090 GLUE_17 (const mmx_floating &arg_1, const mmx_floating &arg_2) { 00091 return interval_from_pair (arg_1, arg_2); 00092 } 00093 00094 static interval<mmx_floating> 00095 GLUE_18 (const interval<mmx_floating> &arg_1) { 00096 return -arg_1; 00097 } 00098 00099 static interval<mmx_floating> 00100 GLUE_19 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) { 00101 return arg_1 + arg_2; 00102 } 00103 00104 static interval<mmx_floating> 00105 GLUE_20 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) { 00106 return arg_1 - arg_2; 00107 } 00108 00109 static interval<mmx_floating> 00110 GLUE_21 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) { 00111 return arg_1 * arg_2; 00112 } 00113 00114 static interval<mmx_floating> 00115 GLUE_22 (const mmx_floating &arg_1, const interval<mmx_floating> &arg_2) { 00116 return arg_1 + arg_2; 00117 } 00118 00119 static interval<mmx_floating> 00120 GLUE_23 (const interval<mmx_floating> &arg_1, const mmx_floating &arg_2) { 00121 return arg_1 + arg_2; 00122 } 00123 00124 static interval<mmx_floating> 00125 GLUE_24 (const mmx_floating &arg_1, const interval<mmx_floating> &arg_2) { 00126 return arg_1 - arg_2; 00127 } 00128 00129 static interval<mmx_floating> 00130 GLUE_25 (const interval<mmx_floating> &arg_1, const mmx_floating &arg_2) { 00131 return arg_1 - arg_2; 00132 } 00133 00134 static interval<mmx_floating> 00135 GLUE_26 (const mmx_floating &arg_1, const interval<mmx_floating> &arg_2) { 00136 return arg_1 * arg_2; 00137 } 00138 00139 static interval<mmx_floating> 00140 GLUE_27 (const interval<mmx_floating> &arg_1, const mmx_floating &arg_2) { 00141 return arg_1 * arg_2; 00142 } 00143 00144 static interval<mmx_floating> 00145 GLUE_28 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) { 00146 return arg_1 / arg_2; 00147 } 00148 00149 static mmx_floating 00150 GLUE_29 (const interval<mmx_floating> &arg_1) { 00151 return interval_lower (arg_1); 00152 } 00153 00154 static mmx_floating 00155 GLUE_30 (const interval<mmx_floating> &arg_1) { 00156 return interval_upper (arg_1); 00157 } 00158 00159 void 00160 glue_interval () { 00161 static bool done = false; 00162 if (done) return; 00163 done = true; 00164 call_glue (string ("glue_rational")); 00165 call_glue (string ("glue_floating")); 00166 define_type<interval<rational> > (gen (lit ("Interval"), lit ("Rational"))); 00167 define ("interval", GLUE_1); 00168 define ("interval", GLUE_2); 00169 define ("-", GLUE_3); 00170 define ("+", GLUE_4); 00171 define ("-", GLUE_5); 00172 define ("*", GLUE_6); 00173 define ("+", GLUE_7); 00174 define ("+", GLUE_8); 00175 define ("-", GLUE_9); 00176 define ("-", GLUE_10); 00177 define ("*", GLUE_11); 00178 define ("*", GLUE_12); 00179 define ("/", GLUE_13); 00180 define ("lower", GLUE_14); 00181 define ("upper", GLUE_15); 00182 define_type<interval<mmx_floating> > (gen (lit ("Interval"), lit ("Floating"))); 00183 define ("interval", GLUE_16); 00184 define ("interval", GLUE_17); 00185 define ("-", GLUE_18); 00186 define ("+", GLUE_19); 00187 define ("-", GLUE_20); 00188 define ("*", GLUE_21); 00189 define ("+", GLUE_22); 00190 define ("+", GLUE_23); 00191 define ("-", GLUE_24); 00192 define ("-", GLUE_25); 00193 define ("*", GLUE_26); 00194 define ("*", GLUE_27); 00195 define ("/", GLUE_28); 00196 define ("lower", GLUE_29); 00197 define ("upper", GLUE_30); 00198 } 00199 }