numerix_doc 0.4
|
00001 00002 #include <basix/double.hpp> 00003 #include <numerix/interval.hpp> 00004 #include <basix/glue.hpp> 00005 00006 #define double_literal(x) as_double (as_string (x)) 00007 00008 namespace mmx { 00009 static interval<double> 00010 GLUE_1 (const double &arg_1) { 00011 return interval<double > (arg_1); 00012 } 00013 00014 static interval<double> 00015 GLUE_2 (const double &arg_1, const double &arg_2) { 00016 return interval<double > (arg_1, arg_2); 00017 } 00018 00019 static interval<double> 00020 GLUE_3 (const double &arg_1) { 00021 return interval<double > (arg_1); 00022 } 00023 00024 static double 00025 GLUE_4 (const interval<double> &arg_1) { 00026 return lower (arg_1); 00027 } 00028 00029 static double 00030 GLUE_5 (const interval<double> &arg_1) { 00031 return upper (arg_1); 00032 } 00033 00034 static double 00035 GLUE_6 (const interval<double> &arg_1) { 00036 return center (arg_1); 00037 } 00038 00039 static double 00040 GLUE_7 (const interval<double> &arg_1) { 00041 return radius (arg_1); 00042 } 00043 00044 static interval<double> 00045 GLUE_8 (const interval<double> &arg_1) { 00046 return -arg_1; 00047 } 00048 00049 static interval<double> 00050 GLUE_9 (const interval<double> &arg_1) { 00051 return square (arg_1); 00052 } 00053 00054 static interval<double> 00055 GLUE_10 (const interval<double> &arg_1, const interval<double> &arg_2) { 00056 return arg_1 + arg_2; 00057 } 00058 00059 static interval<double> 00060 GLUE_11 (const interval<double> &arg_1, const interval<double> &arg_2) { 00061 return arg_1 - arg_2; 00062 } 00063 00064 static interval<double> 00065 GLUE_12 (const interval<double> &arg_1, const interval<double> &arg_2) { 00066 return arg_1 * arg_2; 00067 } 00068 00069 static interval<double> 00070 GLUE_13 (const double &arg_1, const interval<double> &arg_2) { 00071 return arg_1 + arg_2; 00072 } 00073 00074 static interval<double> 00075 GLUE_14 (const interval<double> &arg_1, const double &arg_2) { 00076 return arg_1 + arg_2; 00077 } 00078 00079 static interval<double> 00080 GLUE_15 (const double &arg_1, const interval<double> &arg_2) { 00081 return arg_1 - arg_2; 00082 } 00083 00084 static interval<double> 00085 GLUE_16 (const interval<double> &arg_1, const double &arg_2) { 00086 return arg_1 - arg_2; 00087 } 00088 00089 static interval<double> 00090 GLUE_17 (const double &arg_1, const interval<double> &arg_2) { 00091 return arg_1 * arg_2; 00092 } 00093 00094 static interval<double> 00095 GLUE_18 (const interval<double> &arg_1, const double &arg_2) { 00096 return arg_1 * arg_2; 00097 } 00098 00099 static interval<double> 00100 GLUE_19 (const interval<double> &arg_1, const double &arg_2) { 00101 return arg_1 / arg_2; 00102 } 00103 00104 static interval<double> 00105 GLUE_20 (const interval<double> &arg_1, const interval<double> &arg_2) { 00106 return arg_1 / arg_2; 00107 } 00108 00109 static interval<double> 00110 GLUE_21 (const double &arg_1, const interval<double> &arg_2) { 00111 return arg_1 / arg_2; 00112 } 00113 00114 static interval<double> 00115 GLUE_22 (const interval<double> &arg_1) { 00116 return sqrt (arg_1); 00117 } 00118 00119 static interval<double> 00120 GLUE_23 (const interval<double> &arg_1) { 00121 return exp (arg_1); 00122 } 00123 00124 static interval<double> 00125 GLUE_24 (const interval<double> &arg_1) { 00126 return log (arg_1); 00127 } 00128 00129 static interval<double> 00130 GLUE_25 (const interval<double> &arg_1, const interval<double> &arg_2) { 00131 return pow (arg_1, arg_2); 00132 } 00133 00134 static interval<double> 00135 GLUE_26 (const interval<double> &arg_1) { 00136 return cos (arg_1); 00137 } 00138 00139 static interval<double> 00140 GLUE_27 (const interval<double> &arg_1) { 00141 return sin (arg_1); 00142 } 00143 00144 static interval<double> 00145 GLUE_28 (const interval<double> &arg_1) { 00146 return tan (arg_1); 00147 } 00148 00149 static interval<double> 00150 GLUE_29 (const interval<double> &arg_1) { 00151 return acos (arg_1); 00152 } 00153 00154 static interval<double> 00155 GLUE_30 (const interval<double> &arg_1) { 00156 return asin (arg_1); 00157 } 00158 00159 static interval<double> 00160 GLUE_31 (const interval<double> &arg_1) { 00161 return atan (arg_1); 00162 } 00163 00164 static bool 00165 GLUE_32 (const interval<double> &arg_1, const interval<double> &arg_2) { 00166 return arg_1 < arg_2; 00167 } 00168 00169 static bool 00170 GLUE_33 (const interval<double> &arg_1, const interval<double> &arg_2) { 00171 return arg_1 > arg_2; 00172 } 00173 00174 static bool 00175 GLUE_34 (const interval<double> &arg_1, const interval<double> &arg_2) { 00176 return arg_1 <= arg_2; 00177 } 00178 00179 static bool 00180 GLUE_35 (const interval<double> &arg_1, const interval<double> &arg_2) { 00181 return arg_1 >= arg_2; 00182 } 00183 00184 static interval<double> 00185 GLUE_36 (const interval<double> &arg_1) { 00186 return abs (arg_1); 00187 } 00188 00189 static interval<double> 00190 GLUE_37 (const interval<double> &arg_1, const interval<double> &arg_2) { 00191 return min (arg_1, arg_2); 00192 } 00193 00194 static interval<double> 00195 GLUE_38 (const interval<double> &arg_1, const interval<double> &arg_2) { 00196 return max (arg_1, arg_2); 00197 } 00198 00199 static interval<double> 00200 GLUE_39 (const interval<double> &arg_1) { 00201 return floor (arg_1); 00202 } 00203 00204 static interval<double> 00205 GLUE_40 (const interval<double> &arg_1) { 00206 return ceil (arg_1); 00207 } 00208 00209 static interval<double> 00210 GLUE_41 (const interval<double> &arg_1) { 00211 return trunc (arg_1); 00212 } 00213 00214 static interval<double> 00215 GLUE_42 (const interval<double> &arg_1) { 00216 return round (arg_1); 00217 } 00218 00219 static bool 00220 GLUE_43 (const interval<double> &arg_1) { 00221 return is_finite (arg_1); 00222 } 00223 00224 static bool 00225 GLUE_44 (const interval<double> &arg_1) { 00226 return is_infinite (arg_1); 00227 } 00228 00229 static bool 00230 GLUE_45 (const interval<double> &arg_1) { 00231 return is_nan (arg_1); 00232 } 00233 00234 static interval<double> 00235 GLUE_46 (const interval<double> &arg_1) { 00236 return times_infinity (arg_1); 00237 } 00238 00239 static int 00240 GLUE_47 (const interval<double> &arg_1) { 00241 return precision (arg_1); 00242 } 00243 00244 static int 00245 GLUE_48 (const interval<double> &arg_1) { 00246 return exponent (arg_1); 00247 } 00248 00249 static double 00250 GLUE_49 (const interval<double> &arg_1) { 00251 return magnitude (arg_1); 00252 } 00253 00254 static interval<double> 00255 GLUE_50 (const interval<double> &arg_1, const int &arg_2) { 00256 return incexp2 (arg_1, arg_2); 00257 } 00258 00259 static interval<double> 00260 GLUE_51 (const interval<double> &arg_1, const int &arg_2) { 00261 return decexp2 (arg_1, arg_2); 00262 } 00263 00264 void 00265 glue_interval_double () { 00266 static bool done = false; 00267 if (done) return; 00268 done = true; 00269 call_glue (string ("glue_double")); 00270 define_type<interval<double> > (gen (lit ("Interval"), lit ("Double"))); 00271 define ("interval", GLUE_1); 00272 define ("interval", GLUE_2); 00273 define_converter ("upgrade", GLUE_3, PENALTY_INCLUSION); 00274 define ("lower", GLUE_4); 00275 define ("upper", GLUE_5); 00276 define ("center", GLUE_6); 00277 define ("radius", GLUE_7); 00278 define ("-", GLUE_8); 00279 define ("square", GLUE_9); 00280 define ("+", GLUE_10); 00281 define ("-", GLUE_11); 00282 define ("*", GLUE_12); 00283 define ("+", GLUE_13); 00284 define ("+", GLUE_14); 00285 define ("-", GLUE_15); 00286 define ("-", GLUE_16); 00287 define ("*", GLUE_17); 00288 define ("*", GLUE_18); 00289 define ("/", GLUE_19); 00290 define ("/", GLUE_20); 00291 define ("/", GLUE_21); 00292 define ("sqrt", GLUE_22); 00293 define ("exp", GLUE_23); 00294 define ("log", GLUE_24); 00295 define ("^", GLUE_25); 00296 define ("cos", GLUE_26); 00297 define ("sin", GLUE_27); 00298 define ("tan", GLUE_28); 00299 define ("arccos", GLUE_29); 00300 define ("arcsin", GLUE_30); 00301 define ("arctan", GLUE_31); 00302 define ("<", GLUE_32); 00303 define (">", GLUE_33); 00304 define ("<=", GLUE_34); 00305 define (">=", GLUE_35); 00306 define ("abs", GLUE_36); 00307 define ("min", GLUE_37); 00308 define ("max", GLUE_38); 00309 define ("floor", GLUE_39); 00310 define ("ceil", GLUE_40); 00311 define ("trunc", GLUE_41); 00312 define ("round", GLUE_42); 00313 define ("finite?", GLUE_43); 00314 define ("infinite?", GLUE_44); 00315 define ("nan?", GLUE_45); 00316 define ("times_infinity", GLUE_46); 00317 define ("precision", GLUE_47); 00318 define ("exponent", GLUE_48); 00319 define ("magnitude", GLUE_49); 00320 define ("increase_exponent", GLUE_50); 00321 define ("decrease_exponent", GLUE_51); 00322 } 00323 }