numerix_doc 0.4
|
00001 00002 #include <basix/double.hpp> 00003 #include <numerix/integer.hpp> 00004 #include <numerix/rational.hpp> 00005 #include <numerix/complex.hpp> 00006 #include <numerix/complex_double.hpp> 00007 #include <numerix/floating.hpp> 00008 #include <numerix/tangent.hpp> 00009 #include <basix/glue.hpp> 00010 00011 #define double_literal(x) as_double (as_string (x)) 00012 00013 namespace mmx { 00014 static tangent<mmx_floating, mmx_floating> 00015 GLUE_1 (const mmx_floating &arg_1) { 00016 return tangent<mmx_floating, mmx_floating > (arg_1); 00017 } 00018 00019 static tangent<mmx_floating, mmx_floating> 00020 GLUE_2 (const mmx_floating &arg_1) { 00021 return tangent<mmx_floating, mmx_floating > (arg_1); 00022 } 00023 00024 static tangent<mmx_floating, mmx_floating> 00025 GLUE_3 (const mmx_floating &arg_1, const mmx_floating &arg_2) { 00026 return tangent<mmx_floating, mmx_floating > (arg_1, arg_2); 00027 } 00028 00029 static mmx_floating 00030 GLUE_4 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00031 return base (arg_1); 00032 } 00033 00034 static mmx_floating 00035 GLUE_5 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00036 return slope (arg_1); 00037 } 00038 00039 static tangent<mmx_floating, mmx_floating> 00040 GLUE_6 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00041 return -arg_1; 00042 } 00043 00044 static tangent<mmx_floating, mmx_floating> 00045 GLUE_7 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00046 return square (arg_1); 00047 } 00048 00049 static tangent<mmx_floating, mmx_floating> 00050 GLUE_8 (const tangent<mmx_floating, mmx_floating> &arg_1, const tangent<mmx_floating, mmx_floating> &arg_2) { 00051 return arg_1 + arg_2; 00052 } 00053 00054 static tangent<mmx_floating, mmx_floating> 00055 GLUE_9 (const tangent<mmx_floating, mmx_floating> &arg_1, const tangent<mmx_floating, mmx_floating> &arg_2) { 00056 return arg_1 - arg_2; 00057 } 00058 00059 static tangent<mmx_floating, mmx_floating> 00060 GLUE_10 (const tangent<mmx_floating, mmx_floating> &arg_1, const tangent<mmx_floating, mmx_floating> &arg_2) { 00061 return arg_1 * arg_2; 00062 } 00063 00064 static tangent<mmx_floating, mmx_floating> 00065 GLUE_11 (const tangent<mmx_floating, mmx_floating> &arg_1, const tangent<mmx_floating, mmx_floating> &arg_2) { 00066 return arg_1 / arg_2; 00067 } 00068 00069 static tangent<mmx_floating, mmx_floating> 00070 GLUE_12 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00071 return sqrt (arg_1); 00072 } 00073 00074 static tangent<mmx_floating, mmx_floating> 00075 GLUE_13 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00076 return exp (arg_1); 00077 } 00078 00079 static tangent<mmx_floating, mmx_floating> 00080 GLUE_14 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00081 return log (arg_1); 00082 } 00083 00084 static tangent<mmx_floating, mmx_floating> 00085 GLUE_15 (const tangent<mmx_floating, mmx_floating> &arg_1, const tangent<mmx_floating, mmx_floating> &arg_2) { 00086 return pow (arg_1, arg_2); 00087 } 00088 00089 static tangent<mmx_floating, mmx_floating> 00090 GLUE_16 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00091 return cos (arg_1); 00092 } 00093 00094 static tangent<mmx_floating, mmx_floating> 00095 GLUE_17 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00096 return sin (arg_1); 00097 } 00098 00099 static tangent<mmx_floating, mmx_floating> 00100 GLUE_18 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00101 return tan (arg_1); 00102 } 00103 00104 static tangent<mmx_floating, mmx_floating> 00105 GLUE_19 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00106 return acos (arg_1); 00107 } 00108 00109 static tangent<mmx_floating, mmx_floating> 00110 GLUE_20 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00111 return asin (arg_1); 00112 } 00113 00114 static tangent<mmx_floating, mmx_floating> 00115 GLUE_21 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00116 return atan (arg_1); 00117 } 00118 00119 static bool 00120 GLUE_22 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00121 return is_finite (arg_1); 00122 } 00123 00124 static bool 00125 GLUE_23 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00126 return is_infinite (arg_1); 00127 } 00128 00129 static bool 00130 GLUE_24 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00131 return is_nan (arg_1); 00132 } 00133 00134 static tangent<mmx_floating, mmx_floating> 00135 GLUE_25 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00136 return times_infinity (arg_1); 00137 } 00138 00139 static int 00140 GLUE_26 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00141 return precision (arg_1); 00142 } 00143 00144 static int 00145 GLUE_27 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00146 return exponent (arg_1); 00147 } 00148 00149 static double 00150 GLUE_28 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00151 return magnitude (arg_1); 00152 } 00153 00154 static tangent<mmx_floating, mmx_floating> 00155 GLUE_29 (const tangent<mmx_floating, mmx_floating> &arg_1, const int &arg_2) { 00156 return incexp2 (arg_1, arg_2); 00157 } 00158 00159 static tangent<mmx_floating, mmx_floating> 00160 GLUE_30 (const tangent<mmx_floating, mmx_floating> &arg_1, const int &arg_2) { 00161 return decexp2 (arg_1, arg_2); 00162 } 00163 00164 static tangent<mmx_floating, mmx_floating> 00165 GLUE_31 (const tangent<rational, rational> &arg_1) { 00166 return as<tangent<mmx_floating, mmx_floating> > (arg_1); 00167 } 00168 00169 static tangent<generic, generic> 00170 GLUE_32 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00171 return as<tangent<generic, generic> > (arg_1); 00172 } 00173 00174 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00175 GLUE_33 (const complex<mmx_floating> &arg_1) { 00176 return tangent<complex<mmx_floating>, complex<mmx_floating> > (arg_1); 00177 } 00178 00179 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00180 GLUE_34 (const complex<mmx_floating> &arg_1) { 00181 return tangent<complex<mmx_floating>, complex<mmx_floating> > (arg_1); 00182 } 00183 00184 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00185 GLUE_35 (const complex<mmx_floating> &arg_1, const complex<mmx_floating> &arg_2) { 00186 return tangent<complex<mmx_floating>, complex<mmx_floating> > (arg_1, arg_2); 00187 } 00188 00189 static complex<mmx_floating> 00190 GLUE_36 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00191 return base (arg_1); 00192 } 00193 00194 static complex<mmx_floating> 00195 GLUE_37 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00196 return slope (arg_1); 00197 } 00198 00199 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00200 GLUE_38 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00201 return -arg_1; 00202 } 00203 00204 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00205 GLUE_39 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00206 return square (arg_1); 00207 } 00208 00209 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00210 GLUE_40 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1, const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_2) { 00211 return arg_1 + arg_2; 00212 } 00213 00214 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00215 GLUE_41 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1, const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_2) { 00216 return arg_1 - arg_2; 00217 } 00218 00219 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00220 GLUE_42 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1, const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_2) { 00221 return arg_1 * arg_2; 00222 } 00223 00224 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00225 GLUE_43 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1, const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_2) { 00226 return arg_1 / arg_2; 00227 } 00228 00229 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00230 GLUE_44 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00231 return sqrt (arg_1); 00232 } 00233 00234 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00235 GLUE_45 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00236 return exp (arg_1); 00237 } 00238 00239 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00240 GLUE_46 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00241 return log (arg_1); 00242 } 00243 00244 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00245 GLUE_47 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1, const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_2) { 00246 return pow (arg_1, arg_2); 00247 } 00248 00249 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00250 GLUE_48 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00251 return cos (arg_1); 00252 } 00253 00254 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00255 GLUE_49 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00256 return sin (arg_1); 00257 } 00258 00259 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00260 GLUE_50 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00261 return tan (arg_1); 00262 } 00263 00264 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00265 GLUE_51 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00266 return acos (arg_1); 00267 } 00268 00269 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00270 GLUE_52 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00271 return asin (arg_1); 00272 } 00273 00274 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00275 GLUE_53 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00276 return atan (arg_1); 00277 } 00278 00279 static bool 00280 GLUE_54 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00281 return is_finite (arg_1); 00282 } 00283 00284 static bool 00285 GLUE_55 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00286 return is_infinite (arg_1); 00287 } 00288 00289 static bool 00290 GLUE_56 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00291 return is_nan (arg_1); 00292 } 00293 00294 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00295 GLUE_57 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00296 return times_infinity (arg_1); 00297 } 00298 00299 static int 00300 GLUE_58 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00301 return precision (arg_1); 00302 } 00303 00304 static int 00305 GLUE_59 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00306 return exponent (arg_1); 00307 } 00308 00309 static double 00310 GLUE_60 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00311 return magnitude (arg_1); 00312 } 00313 00314 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00315 GLUE_61 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1, const int &arg_2) { 00316 return incexp2 (arg_1, arg_2); 00317 } 00318 00319 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00320 GLUE_62 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1, const int &arg_2) { 00321 return decexp2 (arg_1, arg_2); 00322 } 00323 00324 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00325 GLUE_63 (const tangent<rational, rational> &arg_1) { 00326 return as<tangent<complex<mmx_floating> , complex<mmx_floating> > > (arg_1); 00327 } 00328 00329 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00330 GLUE_64 (const tangent<complex<rational> , complex<rational> > &arg_1) { 00331 return as<tangent<complex<mmx_floating> , complex<mmx_floating> > > (arg_1); 00332 } 00333 00334 static tangent<complex<mmx_floating> , complex<mmx_floating> > 00335 GLUE_65 (const tangent<mmx_floating, mmx_floating> &arg_1) { 00336 return as<tangent<complex<mmx_floating> , complex<mmx_floating> > > (arg_1); 00337 } 00338 00339 static tangent<generic, generic> 00340 GLUE_66 (const tangent<complex<mmx_floating> , complex<mmx_floating> > &arg_1) { 00341 return as<tangent<generic, generic> > (arg_1); 00342 } 00343 00344 void 00345 glue_tangent_floating () { 00346 static bool done = false; 00347 if (done) return; 00348 done = true; 00349 call_glue (string ("glue_complex_double")); 00350 call_glue (string ("glue_complex_floating")); 00351 call_glue (string ("glue_tangent_double")); 00352 define_type<tangent<mmx_floating, mmx_floating> > (gen (lit ("Tangent"), lit ("Floating"), lit ("Floating"))); 00353 define ("tangent", GLUE_1); 00354 define_converter ("upgrade", GLUE_2, PENALTY_HOMOMORPHISM); 00355 define ("tangent", GLUE_3); 00356 define ("base", GLUE_4); 00357 define ("slope", GLUE_5); 00358 define ("-", GLUE_6); 00359 define ("square", GLUE_7); 00360 define ("+", GLUE_8); 00361 define ("-", GLUE_9); 00362 define ("*", GLUE_10); 00363 define ("/", GLUE_11); 00364 define ("sqrt", GLUE_12); 00365 define ("exp", GLUE_13); 00366 define ("log", GLUE_14); 00367 define ("^", GLUE_15); 00368 define ("cos", GLUE_16); 00369 define ("sin", GLUE_17); 00370 define ("tan", GLUE_18); 00371 define ("arccos", GLUE_19); 00372 define ("arcsin", GLUE_20); 00373 define ("arctan", GLUE_21); 00374 define ("finite?", GLUE_22); 00375 define ("infinite?", GLUE_23); 00376 define ("nan?", GLUE_24); 00377 define ("times_infinity", GLUE_25); 00378 define ("precision", GLUE_26); 00379 define ("exponent", GLUE_27); 00380 define ("magnitude", GLUE_28); 00381 define ("increase_exponent", GLUE_29); 00382 define ("decrease_exponent", GLUE_30); 00383 define_converter (":>", GLUE_31, PENALTY_INCLUSION); 00384 define_converter (":>", GLUE_32, PENALTY_PROMOTE_GENERIC); 00385 define_type<tangent<complex<mmx_floating> , complex<mmx_floating> > > (gen (lit ("Tangent"), gen (lit ("Complex"), lit ("Floating")), gen (lit ("Complex"), lit ("Floating")))); 00386 define ("tangent", GLUE_33); 00387 define_converter ("upgrade", GLUE_34, PENALTY_HOMOMORPHISM); 00388 define ("tangent", GLUE_35); 00389 define ("base", GLUE_36); 00390 define ("slope", GLUE_37); 00391 define ("-", GLUE_38); 00392 define ("square", GLUE_39); 00393 define ("+", GLUE_40); 00394 define ("-", GLUE_41); 00395 define ("*", GLUE_42); 00396 define ("/", GLUE_43); 00397 define ("sqrt", GLUE_44); 00398 define ("exp", GLUE_45); 00399 define ("log", GLUE_46); 00400 define ("^", GLUE_47); 00401 define ("cos", GLUE_48); 00402 define ("sin", GLUE_49); 00403 define ("tan", GLUE_50); 00404 define ("arccos", GLUE_51); 00405 define ("arcsin", GLUE_52); 00406 define ("arctan", GLUE_53); 00407 define ("finite?", GLUE_54); 00408 define ("infinite?", GLUE_55); 00409 define ("nan?", GLUE_56); 00410 define ("times_infinity", GLUE_57); 00411 define ("precision", GLUE_58); 00412 define ("exponent", GLUE_59); 00413 define ("magnitude", GLUE_60); 00414 define ("increase_exponent", GLUE_61); 00415 define ("decrease_exponent", GLUE_62); 00416 define_converter (":>", GLUE_63, PENALTY_HOMOMORPHISM); 00417 define_converter (":>", GLUE_64, PENALTY_INCLUSION); 00418 define_converter (":>", GLUE_65, PENALTY_HOMOMORPHISM); 00419 define_converter (":>", GLUE_66, PENALTY_PROMOTE_GENERIC); 00420 } 00421 }