numerix_doc 0.4
/Users/mourrain/Devel/mmx/numerix/glue/glue_complex_rational.cpp
Go to the documentation of this file.
00001 
00002 #include <numerix/integer.hpp>
00003 #include <numerix/rational.hpp>
00004 #include <numerix/complex.hpp>
00005 #include <basix/glue.hpp>
00006 
00007 namespace mmx {
00008   static complex<rational>
00009   GLUE_1 (const rational &arg_1) {
00010     return complex<rational > (arg_1);
00011   }
00012   
00013   static complex<rational>
00014   GLUE_2 (const rational &arg_1, const rational &arg_2) {
00015     return complex<rational > (arg_1, arg_2);
00016   }
00017   
00018   static complex<rational>
00019   GLUE_3 (const rational &arg_1) {
00020     return complex<rational > (arg_1);
00021   }
00022   
00023   static rational
00024   GLUE_4 (const complex<rational> &arg_1) {
00025     return Re (arg_1);
00026   }
00027   
00028   static rational
00029   GLUE_5 (const complex<rational> &arg_1) {
00030     return Im (arg_1);
00031   }
00032   
00033   static complex<rational>
00034   GLUE_6 (const complex<rational> &arg_1) {
00035     return conj (arg_1);
00036   }
00037   
00038   static complex<rational>
00039   GLUE_7 (const complex<rational> &arg_1) {
00040     return times_i (arg_1);
00041   }
00042   
00043   static complex<rational>
00044   GLUE_8 (const complex<rational> &arg_1) {
00045     return over_i (arg_1);
00046   }
00047   
00048   static complex<rational>
00049   GLUE_9 (const complex<rational> &arg_1) {
00050     return -arg_1;
00051   }
00052   
00053   static complex<rational>
00054   GLUE_10 (const complex<rational> &arg_1) {
00055     return square (arg_1);
00056   }
00057   
00058   static complex<rational>
00059   GLUE_11 (const complex<rational> &arg_1, const complex<rational> &arg_2) {
00060     return arg_1 + arg_2;
00061   }
00062   
00063   static complex<rational>
00064   GLUE_12 (const complex<rational> &arg_1, const complex<rational> &arg_2) {
00065     return arg_1 - arg_2;
00066   }
00067   
00068   static complex<rational>
00069   GLUE_13 (const complex<rational> &arg_1, const complex<rational> &arg_2) {
00070     return arg_1 * arg_2;
00071   }
00072   
00073   static complex<rational>
00074   GLUE_14 (const rational &arg_1, const complex<rational> &arg_2) {
00075     return arg_1 + arg_2;
00076   }
00077   
00078   static complex<rational>
00079   GLUE_15 (const complex<rational> &arg_1, const rational &arg_2) {
00080     return arg_1 + arg_2;
00081   }
00082   
00083   static complex<rational>
00084   GLUE_16 (const rational &arg_1, const complex<rational> &arg_2) {
00085     return arg_1 - arg_2;
00086   }
00087   
00088   static complex<rational>
00089   GLUE_17 (const complex<rational> &arg_1, const rational &arg_2) {
00090     return arg_1 - arg_2;
00091   }
00092   
00093   static complex<rational>
00094   GLUE_18 (const rational &arg_1, const complex<rational> &arg_2) {
00095     return arg_1 * arg_2;
00096   }
00097   
00098   static complex<rational>
00099   GLUE_19 (const complex<rational> &arg_1, const rational &arg_2) {
00100     return arg_1 * arg_2;
00101   }
00102   
00103   static complex<rational>
00104   GLUE_20 (const complex<rational> &arg_1, const complex<rational> &arg_2) {
00105     return arg_1 / arg_2;
00106   }
00107   
00108   static complex<rational>
00109   GLUE_21 (const rational &arg_1, const complex<rational> &arg_2) {
00110     return arg_1 / arg_2;
00111   }
00112   
00113   static complex<rational>
00114   GLUE_22 (const complex<rational> &arg_1, const rational &arg_2) {
00115     return arg_1 / arg_2;
00116   }
00117   
00118   static complex<generic>
00119   GLUE_23 (const complex<rational> &arg_1) {
00120     return as<complex<generic> > (arg_1);
00121   }
00122   
00123   void
00124   glue_complex_rational () {
00125     static bool done = false;
00126     if (done) return;
00127     done = true;
00128     call_glue (string ("glue_rational"));
00129     call_glue (string ("glue_complex_generic"));
00130     define_type<complex<rational> > (gen (lit ("Complex"), lit ("Rational")));
00131     define ("complex", GLUE_1);
00132     define ("complex", GLUE_2);
00133     define_converter ("upgrade", GLUE_3, PENALTY_HOMOMORPHISM);
00134     define ("Re", GLUE_4);
00135     define ("Im", GLUE_5);
00136     define ("conj", GLUE_6);
00137     define ("times_i", GLUE_7);
00138     define ("over_i", GLUE_8);
00139     define ("-", GLUE_9);
00140     define ("square", GLUE_10);
00141     define ("+", GLUE_11);
00142     define ("-", GLUE_12);
00143     define ("*", GLUE_13);
00144     define ("+", GLUE_14);
00145     define ("+", GLUE_15);
00146     define ("-", GLUE_16);
00147     define ("-", GLUE_17);
00148     define ("*", GLUE_18);
00149     define ("*", GLUE_19);
00150     define ("/", GLUE_20);
00151     define ("/", GLUE_21);
00152     define ("/", GLUE_22);
00153     define_converter (":>", GLUE_23, PENALTY_PROMOTE_GENERIC);
00154   }
00155 }
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines