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