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