numerix_doc 0.4
/Users/mourrain/Devel/mmx/numerix/glue/glue_rational.cpp
Go to the documentation of this file.
00001 
00002 #include <numerix/integer.hpp>
00003 #include <numerix/rational.hpp>
00004 #include <basix/glue.hpp>
00005 
00006 namespace mmx {
00007   static rational
00008   GLUE_1 (const integer &arg_1) {
00009     return rational (arg_1);
00010   }
00011   
00012   static rational
00013   GLUE_2 (const integer &arg_1, const integer &arg_2) {
00014     return rational_new (arg_1, arg_2);
00015   }
00016   
00017   static rational
00018   GLUE_3 (const integer &arg_1) {
00019     return rational (arg_1);
00020   }
00021   
00022   static double
00023   GLUE_4 (const rational &arg_1) {
00024     return as_double (arg_1);
00025   }
00026   
00027   static rational
00028   GLUE_5 (const integer &arg_1, const integer &arg_2) {
00029     return rational_new (arg_1, arg_2);
00030   }
00031   
00032   static integer
00033   GLUE_6 (const rational &arg_1) {
00034     return numerator (arg_1);
00035   }
00036   
00037   static integer
00038   GLUE_7 (const rational &arg_1) {
00039     return denominator (arg_1);
00040   }
00041   
00042   static rational
00043   GLUE_8 (const rational &arg_1) {
00044     return -arg_1;
00045   }
00046   
00047   static rational
00048   GLUE_9 (const rational &arg_1) {
00049     return square (arg_1);
00050   }
00051   
00052   static rational
00053   GLUE_10 (const rational &arg_1, const rational &arg_2) {
00054     return arg_1 + arg_2;
00055   }
00056   
00057   static rational
00058   GLUE_11 (const rational &arg_1, const rational &arg_2) {
00059     return arg_1 - arg_2;
00060   }
00061   
00062   static rational
00063   GLUE_12 (const rational &arg_1, const rational &arg_2) {
00064     return arg_1 * arg_2;
00065   }
00066   
00067   static rational
00068   GLUE_13 (const rational &arg_1, const rational &arg_2) {
00069     return arg_1 / arg_2;
00070   }
00071   
00072   static generic
00073   GLUE_14 (const integer &arg_1, const integer &arg_2) {
00074     return integer_pow (arg_1, arg_2);
00075   }
00076   
00077   static rational
00078   GLUE_15 (const rational &arg_1, const integer &arg_2) {
00079     return pow (arg_1, arg_2);
00080   }
00081   
00082   static rational
00083   GLUE_16 (const rational &arg_1, const rational &arg_2) {
00084     return arg_1 / arg_2;
00085   }
00086   
00087   static bool
00088   GLUE_17 (const rational &arg_1, const rational &arg_2) {
00089     return divides (arg_1, arg_2);
00090   }
00091   
00092   static rational
00093   GLUE_18 (const rational &arg_1, const rational &arg_2) {
00094     return gcd (arg_1, arg_2);
00095   }
00096   
00097   static rational
00098   GLUE_19 (const rational &arg_1, const rational &arg_2) {
00099     return lcm (arg_1, arg_2);
00100   }
00101   
00102   static bool
00103   GLUE_20 (const rational &arg_1, const rational &arg_2) {
00104     return arg_1 < arg_2;
00105   }
00106   
00107   static bool
00108   GLUE_21 (const rational &arg_1, const rational &arg_2) {
00109     return arg_1 <= arg_2;
00110   }
00111   
00112   static bool
00113   GLUE_22 (const rational &arg_1, const rational &arg_2) {
00114     return arg_1 > arg_2;
00115   }
00116   
00117   static bool
00118   GLUE_23 (const rational &arg_1, const rational &arg_2) {
00119     return arg_1 >= arg_2;
00120   }
00121   
00122   static rational
00123   GLUE_24 (const rational &arg_1) {
00124     return abs (arg_1);
00125   }
00126   
00127   static rational
00128   GLUE_25 (const rational &arg_1, const rational &arg_2) {
00129     return min (arg_1, arg_2);
00130   }
00131   
00132   static rational
00133   GLUE_26 (const rational &arg_1, const rational &arg_2) {
00134     return max (arg_1, arg_2);
00135   }
00136   
00137   static rational
00138   GLUE_27 (const rational &arg_1) {
00139     return floor (arg_1);
00140   }
00141   
00142   static rational
00143   GLUE_28 (const rational &arg_1) {
00144     return ceil (arg_1);
00145   }
00146   
00147   static rational
00148   GLUE_29 (const rational &arg_1) {
00149     return trunc (arg_1);
00150   }
00151   
00152   static rational
00153   GLUE_30 (const rational &arg_1) {
00154     return round (arg_1);
00155   }
00156   
00157   void
00158   glue_rational () {
00159     static bool done = false;
00160     if (done) return;
00161     done = true;
00162     call_glue (string ("glue_integer"));
00163     define_type<rational > (lit ("Rational"));
00164     define ("rational", GLUE_1);
00165     define ("rational", GLUE_2);
00166     define_converter ("upgrade", GLUE_3, PENALTY_INCLUSION);
00167     define_converter ("upgrade", GLUE_4, PENALTY_INCLUSION);
00168     define ("/", GLUE_5);
00169     define ("numerator", GLUE_6);
00170     define ("denominator", GLUE_7);
00171     define ("-", GLUE_8);
00172     define ("square", GLUE_9);
00173     define ("+", GLUE_10);
00174     define ("-", GLUE_11);
00175     define ("*", GLUE_12);
00176     define ("/", GLUE_13);
00177     define ("^", GLUE_14);
00178     define ("^", GLUE_15);
00179     define ("div", GLUE_16);
00180     define ("divides?", GLUE_17);
00181     define ("gcd", GLUE_18);
00182     define ("lcm", GLUE_19);
00183     define ("<", GLUE_20);
00184     define ("<=", GLUE_21);
00185     define (">", GLUE_22);
00186     define (">=", GLUE_23);
00187     define ("abs", GLUE_24);
00188     define ("min", GLUE_25);
00189     define ("max", GLUE_26);
00190     define ("floor", GLUE_27);
00191     define ("ceil", GLUE_28);
00192     define ("trunc", GLUE_29);
00193     define ("round", GLUE_30);
00194   }
00195 }
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines