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