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