numerix_doc 0.4
|
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 }