realroot_doc 0.1.1
/Users/mourrain/Devel/mmx/realroot/glue/glue_interval.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 <realroot/Interval_glue.hpp>
00006 #include <basix/glue.hpp>
00007 
00008 namespace mmx {
00009   static interval<rational>
00010   GLUE_1 (const rational &arg_1) {
00011     return interval<rational > (arg_1);
00012   }
00013   
00014   static interval<rational>
00015   GLUE_2 (const rational &arg_1, const rational &arg_2) {
00016     return interval_from_pair (arg_1, arg_2);
00017   }
00018   
00019   static interval<rational>
00020   GLUE_3 (const interval<rational> &arg_1) {
00021     return -arg_1;
00022   }
00023   
00024   static interval<rational>
00025   GLUE_4 (const interval<rational> &arg_1, const interval<rational> &arg_2) {
00026     return arg_1 + arg_2;
00027   }
00028   
00029   static interval<rational>
00030   GLUE_5 (const interval<rational> &arg_1, const interval<rational> &arg_2) {
00031     return arg_1 - arg_2;
00032   }
00033   
00034   static interval<rational>
00035   GLUE_6 (const interval<rational> &arg_1, const interval<rational> &arg_2) {
00036     return arg_1 * arg_2;
00037   }
00038   
00039   static interval<rational>
00040   GLUE_7 (const rational &arg_1, const interval<rational> &arg_2) {
00041     return arg_1 + arg_2;
00042   }
00043   
00044   static interval<rational>
00045   GLUE_8 (const interval<rational> &arg_1, const rational &arg_2) {
00046     return arg_1 + arg_2;
00047   }
00048   
00049   static interval<rational>
00050   GLUE_9 (const rational &arg_1, const interval<rational> &arg_2) {
00051     return arg_1 - arg_2;
00052   }
00053   
00054   static interval<rational>
00055   GLUE_10 (const interval<rational> &arg_1, const rational &arg_2) {
00056     return arg_1 - arg_2;
00057   }
00058   
00059   static interval<rational>
00060   GLUE_11 (const rational &arg_1, const interval<rational> &arg_2) {
00061     return arg_1 * arg_2;
00062   }
00063   
00064   static interval<rational>
00065   GLUE_12 (const interval<rational> &arg_1, const rational &arg_2) {
00066     return arg_1 * arg_2;
00067   }
00068   
00069   static interval<rational>
00070   GLUE_13 (const interval<rational> &arg_1, const interval<rational> &arg_2) {
00071     return arg_1 / arg_2;
00072   }
00073   
00074   static rational
00075   GLUE_14 (const interval<rational> &arg_1) {
00076     return interval_lower (arg_1);
00077   }
00078   
00079   static rational
00080   GLUE_15 (const interval<rational> &arg_1) {
00081     return interval_upper (arg_1);
00082   }
00083   
00084   static interval<mmx_floating>
00085   GLUE_16 (const mmx_floating &arg_1) {
00086     return interval<mmx_floating > (arg_1);
00087   }
00088   
00089   static interval<mmx_floating>
00090   GLUE_17 (const mmx_floating &arg_1, const mmx_floating &arg_2) {
00091     return interval_from_pair (arg_1, arg_2);
00092   }
00093   
00094   static interval<mmx_floating>
00095   GLUE_18 (const interval<mmx_floating> &arg_1) {
00096     return -arg_1;
00097   }
00098   
00099   static interval<mmx_floating>
00100   GLUE_19 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) {
00101     return arg_1 + arg_2;
00102   }
00103   
00104   static interval<mmx_floating>
00105   GLUE_20 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) {
00106     return arg_1 - arg_2;
00107   }
00108   
00109   static interval<mmx_floating>
00110   GLUE_21 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) {
00111     return arg_1 * arg_2;
00112   }
00113   
00114   static interval<mmx_floating>
00115   GLUE_22 (const mmx_floating &arg_1, const interval<mmx_floating> &arg_2) {
00116     return arg_1 + arg_2;
00117   }
00118   
00119   static interval<mmx_floating>
00120   GLUE_23 (const interval<mmx_floating> &arg_1, const mmx_floating &arg_2) {
00121     return arg_1 + arg_2;
00122   }
00123   
00124   static interval<mmx_floating>
00125   GLUE_24 (const mmx_floating &arg_1, const interval<mmx_floating> &arg_2) {
00126     return arg_1 - arg_2;
00127   }
00128   
00129   static interval<mmx_floating>
00130   GLUE_25 (const interval<mmx_floating> &arg_1, const mmx_floating &arg_2) {
00131     return arg_1 - arg_2;
00132   }
00133   
00134   static interval<mmx_floating>
00135   GLUE_26 (const mmx_floating &arg_1, const interval<mmx_floating> &arg_2) {
00136     return arg_1 * arg_2;
00137   }
00138   
00139   static interval<mmx_floating>
00140   GLUE_27 (const interval<mmx_floating> &arg_1, const mmx_floating &arg_2) {
00141     return arg_1 * arg_2;
00142   }
00143   
00144   static interval<mmx_floating>
00145   GLUE_28 (const interval<mmx_floating> &arg_1, const interval<mmx_floating> &arg_2) {
00146     return arg_1 / arg_2;
00147   }
00148   
00149   static mmx_floating
00150   GLUE_29 (const interval<mmx_floating> &arg_1) {
00151     return interval_lower (arg_1);
00152   }
00153   
00154   static mmx_floating
00155   GLUE_30 (const interval<mmx_floating> &arg_1) {
00156     return interval_upper (arg_1);
00157   }
00158   
00159   void
00160   glue_interval () {
00161     static bool done = false;
00162     if (done) return;
00163     done = true;
00164     call_glue (string ("glue_rational"));
00165     call_glue (string ("glue_floating"));
00166     define_type<interval<rational> > (gen (lit ("Interval"), lit ("Rational")));
00167     define ("interval", GLUE_1);
00168     define ("interval", GLUE_2);
00169     define ("-", GLUE_3);
00170     define ("+", GLUE_4);
00171     define ("-", GLUE_5);
00172     define ("*", GLUE_6);
00173     define ("+", GLUE_7);
00174     define ("+", GLUE_8);
00175     define ("-", GLUE_9);
00176     define ("-", GLUE_10);
00177     define ("*", GLUE_11);
00178     define ("*", GLUE_12);
00179     define ("/", GLUE_13);
00180     define ("lower", GLUE_14);
00181     define ("upper", GLUE_15);
00182     define_type<interval<mmx_floating> > (gen (lit ("Interval"), lit ("Floating")));
00183     define ("interval", GLUE_16);
00184     define ("interval", GLUE_17);
00185     define ("-", GLUE_18);
00186     define ("+", GLUE_19);
00187     define ("-", GLUE_20);
00188     define ("*", GLUE_21);
00189     define ("+", GLUE_22);
00190     define ("+", GLUE_23);
00191     define ("-", GLUE_24);
00192     define ("-", GLUE_25);
00193     define ("*", GLUE_26);
00194     define ("*", GLUE_27);
00195     define ("/", GLUE_28);
00196     define ("lower", GLUE_29);
00197     define ("upper", GLUE_30);
00198   }
00199 }