algebramix_doc 0.3
|
00001 00002 #include <numerix/integer.hpp> 00003 #include <numerix/rational.hpp> 00004 #include <numerix/complex.hpp> 00005 #include <basix/vector.hpp> 00006 #include <basix/tuple.hpp> 00007 #include <basix/alias.hpp> 00008 #include <basix/glue.hpp> 00009 00010 namespace mmx { 00011 static vector<rational> 00012 GLUE_1 (const tuple<rational> &arg_1) { 00013 return vector<rational > (as_vector (arg_1)); 00014 } 00015 00016 static vector<rational> 00017 GLUE_2 (const tuple<rational> &arg_1) { 00018 return vector<rational > (as_vector (arg_1)); 00019 } 00020 00021 static iterator<generic> 00022 GLUE_3 (const vector<rational> &arg_1) { 00023 return as<iterator<generic> > (iterate (arg_1)); 00024 } 00025 00026 static int 00027 GLUE_4 (const vector<rational> &arg_1) { 00028 return N (arg_1); 00029 } 00030 00031 static rational 00032 GLUE_5 (const vector<rational> &arg_1, const int &arg_2) { 00033 return arg_1[arg_2]; 00034 } 00035 00036 static alias<rational> 00037 GLUE_6 (const alias<vector<rational> > &arg_1, const int &arg_2) { 00038 return alias_access<rational > (arg_1, arg_2); 00039 } 00040 00041 static vector<rational> 00042 GLUE_7 (const vector<rational> &arg_1, const int &arg_2, const int &arg_3) { 00043 return range (arg_1, arg_2, arg_3); 00044 } 00045 00046 static vector<rational> 00047 GLUE_8 (const vector<rational> &arg_1) { 00048 return reverse (arg_1); 00049 } 00050 00051 static vector<rational> 00052 GLUE_9 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00053 return append (arg_1, arg_2); 00054 } 00055 00056 static alias<vector<rational> > 00057 GLUE_10 (const alias<vector<rational> > &arg_1, const vector<rational> &arg_2) { 00058 return alias_write (arg_1, arg_2); 00059 } 00060 00061 static vector<rational> 00062 GLUE_11 (const rational &arg_1, const vector<rational> &arg_2) { 00063 return cons (arg_1, arg_2); 00064 } 00065 00066 static rational 00067 GLUE_12 (const vector<rational> &arg_1) { 00068 return car (arg_1); 00069 } 00070 00071 static vector<rational> 00072 GLUE_13 (const vector<rational> &arg_1) { 00073 return cdr (arg_1); 00074 } 00075 00076 static bool 00077 GLUE_14 (const vector<rational> &arg_1) { 00078 return is_nil (arg_1); 00079 } 00080 00081 static bool 00082 GLUE_15 (const vector<rational> &arg_1) { 00083 return is_atom (arg_1); 00084 } 00085 00086 static vector<rational> 00087 GLUE_16 (const vector<rational> &arg_1, const rational &arg_2) { 00088 return insert (arg_1, arg_2); 00089 } 00090 00091 static int 00092 GLUE_17 (const vector<rational> &arg_1, const rational &arg_2) { 00093 return find (arg_1, arg_2); 00094 } 00095 00096 static bool 00097 GLUE_18 (const vector<rational> &arg_1, const rational &arg_2) { 00098 return contains (arg_1, arg_2); 00099 } 00100 00101 static vector<complex<rational> > 00102 GLUE_19 (const tuple<complex<rational> > &arg_1) { 00103 return vector<complex<rational> > (as_vector (arg_1)); 00104 } 00105 00106 static vector<complex<rational> > 00107 GLUE_20 (const tuple<complex<rational> > &arg_1) { 00108 return vector<complex<rational> > (as_vector (arg_1)); 00109 } 00110 00111 static iterator<generic> 00112 GLUE_21 (const vector<complex<rational> > &arg_1) { 00113 return as<iterator<generic> > (iterate (arg_1)); 00114 } 00115 00116 static int 00117 GLUE_22 (const vector<complex<rational> > &arg_1) { 00118 return N (arg_1); 00119 } 00120 00121 static complex<rational> 00122 GLUE_23 (const vector<complex<rational> > &arg_1, const int &arg_2) { 00123 return arg_1[arg_2]; 00124 } 00125 00126 static alias<complex<rational> > 00127 GLUE_24 (const alias<vector<complex<rational> > > &arg_1, const int &arg_2) { 00128 return alias_access<complex<rational> > (arg_1, arg_2); 00129 } 00130 00131 static vector<complex<rational> > 00132 GLUE_25 (const vector<complex<rational> > &arg_1, const int &arg_2, const int &arg_3) { 00133 return range (arg_1, arg_2, arg_3); 00134 } 00135 00136 static vector<complex<rational> > 00137 GLUE_26 (const vector<complex<rational> > &arg_1) { 00138 return reverse (arg_1); 00139 } 00140 00141 static vector<complex<rational> > 00142 GLUE_27 (const vector<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00143 return append (arg_1, arg_2); 00144 } 00145 00146 static alias<vector<complex<rational> > > 00147 GLUE_28 (const alias<vector<complex<rational> > > &arg_1, const vector<complex<rational> > &arg_2) { 00148 return alias_write (arg_1, arg_2); 00149 } 00150 00151 static vector<complex<rational> > 00152 GLUE_29 (const complex<rational> &arg_1, const vector<complex<rational> > &arg_2) { 00153 return cons (arg_1, arg_2); 00154 } 00155 00156 static complex<rational> 00157 GLUE_30 (const vector<complex<rational> > &arg_1) { 00158 return car (arg_1); 00159 } 00160 00161 static vector<complex<rational> > 00162 GLUE_31 (const vector<complex<rational> > &arg_1) { 00163 return cdr (arg_1); 00164 } 00165 00166 static bool 00167 GLUE_32 (const vector<complex<rational> > &arg_1) { 00168 return is_nil (arg_1); 00169 } 00170 00171 static bool 00172 GLUE_33 (const vector<complex<rational> > &arg_1) { 00173 return is_atom (arg_1); 00174 } 00175 00176 static vector<complex<rational> > 00177 GLUE_34 (const vector<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00178 return insert (arg_1, arg_2); 00179 } 00180 00181 static int 00182 GLUE_35 (const vector<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00183 return find (arg_1, arg_2); 00184 } 00185 00186 static bool 00187 GLUE_36 (const vector<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00188 return contains (arg_1, arg_2); 00189 } 00190 00191 static vector<rational> 00192 GLUE_37 (const vector<rational> &arg_1) { 00193 return -arg_1; 00194 } 00195 00196 static vector<rational> 00197 GLUE_38 (const vector<rational> &arg_1) { 00198 return square (arg_1); 00199 } 00200 00201 static vector<rational> 00202 GLUE_39 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00203 return arg_1 + arg_2; 00204 } 00205 00206 static vector<rational> 00207 GLUE_40 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00208 return arg_1 - arg_2; 00209 } 00210 00211 static vector<rational> 00212 GLUE_41 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00213 return arg_1 * arg_2; 00214 } 00215 00216 static vector<rational> 00217 GLUE_42 (const rational &arg_1, const vector<rational> &arg_2) { 00218 return arg_1 + arg_2; 00219 } 00220 00221 static vector<rational> 00222 GLUE_43 (const vector<rational> &arg_1, const rational &arg_2) { 00223 return arg_1 + arg_2; 00224 } 00225 00226 static vector<rational> 00227 GLUE_44 (const rational &arg_1, const vector<rational> &arg_2) { 00228 return arg_1 - arg_2; 00229 } 00230 00231 static vector<rational> 00232 GLUE_45 (const vector<rational> &arg_1, const rational &arg_2) { 00233 return arg_1 - arg_2; 00234 } 00235 00236 static vector<rational> 00237 GLUE_46 (const rational &arg_1, const vector<rational> &arg_2) { 00238 return arg_1 * arg_2; 00239 } 00240 00241 static vector<rational> 00242 GLUE_47 (const vector<rational> &arg_1, const rational &arg_2) { 00243 return arg_1 * arg_2; 00244 } 00245 00246 static rational 00247 GLUE_48 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00248 return dot (arg_1, arg_2); 00249 } 00250 00251 static rational 00252 GLUE_49 (const vector<rational> &arg_1) { 00253 return big_mul (arg_1); 00254 } 00255 00256 static rational 00257 GLUE_50 (const vector<rational> &arg_1) { 00258 return big_add (arg_1); 00259 } 00260 00261 static vector<rational> 00262 GLUE_51 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00263 return arg_1 / arg_2; 00264 } 00265 00266 static vector<rational> 00267 GLUE_52 (const rational &arg_1, const vector<rational> &arg_2) { 00268 return arg_1 / arg_2; 00269 } 00270 00271 static vector<rational> 00272 GLUE_53 (const vector<rational> &arg_1, const rational &arg_2) { 00273 return arg_1 / arg_2; 00274 } 00275 00276 static bool 00277 GLUE_54 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00278 return arg_1 <= arg_2; 00279 } 00280 00281 static bool 00282 GLUE_55 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00283 return arg_1 >= arg_2; 00284 } 00285 00286 static bool 00287 GLUE_56 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00288 return arg_1 < arg_2; 00289 } 00290 00291 static bool 00292 GLUE_57 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00293 return arg_1 > arg_2; 00294 } 00295 00296 static vector<rational> 00297 GLUE_58 (const vector<rational> &arg_1) { 00298 return abs (arg_1); 00299 } 00300 00301 static vector<rational> 00302 GLUE_59 (const vector<integer> &arg_1) { 00303 return as<vector<rational> > (arg_1); 00304 } 00305 00306 static vector<complex<rational> > 00307 GLUE_60 (const vector<integer> &arg_1) { 00308 return as<vector<complex<rational> > > (arg_1); 00309 } 00310 00311 static vector<generic> 00312 GLUE_61 (const vector<rational> &arg_1) { 00313 return as<vector<generic> > (arg_1); 00314 } 00315 00316 static vector<complex<rational> > 00317 GLUE_62 (const vector<rational> &arg_1) { 00318 return as<vector<complex<rational> > > (arg_1); 00319 } 00320 00321 static vector<generic> 00322 GLUE_63 (const vector<complex<rational> > &arg_1) { 00323 return as<vector<generic> > (arg_1); 00324 } 00325 00326 static vector<complex<rational> > 00327 GLUE_64 (const vector<complex<rational> > &arg_1) { 00328 return -arg_1; 00329 } 00330 00331 static vector<complex<rational> > 00332 GLUE_65 (const vector<complex<rational> > &arg_1) { 00333 return square (arg_1); 00334 } 00335 00336 static vector<complex<rational> > 00337 GLUE_66 (const vector<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00338 return arg_1 + arg_2; 00339 } 00340 00341 static vector<complex<rational> > 00342 GLUE_67 (const vector<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00343 return arg_1 - arg_2; 00344 } 00345 00346 static vector<complex<rational> > 00347 GLUE_68 (const vector<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00348 return arg_1 * arg_2; 00349 } 00350 00351 static vector<complex<rational> > 00352 GLUE_69 (const complex<rational> &arg_1, const vector<complex<rational> > &arg_2) { 00353 return arg_1 + arg_2; 00354 } 00355 00356 static vector<complex<rational> > 00357 GLUE_70 (const vector<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00358 return arg_1 + arg_2; 00359 } 00360 00361 static vector<complex<rational> > 00362 GLUE_71 (const complex<rational> &arg_1, const vector<complex<rational> > &arg_2) { 00363 return arg_1 - arg_2; 00364 } 00365 00366 static vector<complex<rational> > 00367 GLUE_72 (const vector<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00368 return arg_1 - arg_2; 00369 } 00370 00371 static vector<complex<rational> > 00372 GLUE_73 (const complex<rational> &arg_1, const vector<complex<rational> > &arg_2) { 00373 return arg_1 * arg_2; 00374 } 00375 00376 static vector<complex<rational> > 00377 GLUE_74 (const vector<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00378 return arg_1 * arg_2; 00379 } 00380 00381 static complex<rational> 00382 GLUE_75 (const vector<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00383 return dot (arg_1, arg_2); 00384 } 00385 00386 static complex<rational> 00387 GLUE_76 (const vector<complex<rational> > &arg_1) { 00388 return big_mul (arg_1); 00389 } 00390 00391 static complex<rational> 00392 GLUE_77 (const vector<complex<rational> > &arg_1) { 00393 return big_add (arg_1); 00394 } 00395 00396 static vector<complex<rational> > 00397 GLUE_78 (const vector<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00398 return arg_1 / arg_2; 00399 } 00400 00401 static vector<complex<rational> > 00402 GLUE_79 (const complex<rational> &arg_1, const vector<complex<rational> > &arg_2) { 00403 return arg_1 / arg_2; 00404 } 00405 00406 static vector<complex<rational> > 00407 GLUE_80 (const vector<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00408 return arg_1 / arg_2; 00409 } 00410 00411 void 00412 glue_vector_rational () { 00413 static bool done = false; 00414 if (done) return; 00415 done = true; 00416 call_glue (string ("glue_complex_rational")); 00417 call_glue (string ("glue_vector_integer")); 00418 define_type<vector<rational> > (gen (lit ("Vector"), lit ("Rational"))); 00419 define_type<vector<complex<rational> > > (gen (lit ("Vector"), gen (lit ("Complex"), lit ("Rational")))); 00420 define ("vector", GLUE_1); 00421 define ("[]", GLUE_2); 00422 define_converter (":>", GLUE_3, PENALTY_CAST); 00423 define ("#", GLUE_4); 00424 define (".[]", GLUE_5); 00425 define (".[]", GLUE_6); 00426 define (".[]", GLUE_7); 00427 define ("reverse", GLUE_8); 00428 define ("><", GLUE_9); 00429 define ("<<", GLUE_10); 00430 define ("cons", GLUE_11); 00431 define ("car", GLUE_12); 00432 define ("cdr", GLUE_13); 00433 define ("nil?", GLUE_14); 00434 define ("atom?", GLUE_15); 00435 define ("insert", GLUE_16); 00436 define ("find", GLUE_17); 00437 define ("contains?", GLUE_18); 00438 define ("vector", GLUE_19); 00439 define ("[]", GLUE_20); 00440 define_converter (":>", GLUE_21, PENALTY_CAST); 00441 define ("#", GLUE_22); 00442 define (".[]", GLUE_23); 00443 define (".[]", GLUE_24); 00444 define (".[]", GLUE_25); 00445 define ("reverse", GLUE_26); 00446 define ("><", GLUE_27); 00447 define ("<<", GLUE_28); 00448 define ("cons", GLUE_29); 00449 define ("car", GLUE_30); 00450 define ("cdr", GLUE_31); 00451 define ("nil?", GLUE_32); 00452 define ("atom?", GLUE_33); 00453 define ("insert", GLUE_34); 00454 define ("find", GLUE_35); 00455 define ("contains?", GLUE_36); 00456 define ("-", GLUE_37); 00457 define ("square", GLUE_38); 00458 define ("+", GLUE_39); 00459 define ("-", GLUE_40); 00460 define ("*", GLUE_41); 00461 define ("+", GLUE_42); 00462 define ("+", GLUE_43); 00463 define ("-", GLUE_44); 00464 define ("-", GLUE_45); 00465 define ("*", GLUE_46); 00466 define ("*", GLUE_47); 00467 define ("dot", GLUE_48); 00468 define ("big_mul", GLUE_49); 00469 define ("big_add", GLUE_50); 00470 define ("/", GLUE_51); 00471 define ("/", GLUE_52); 00472 define ("/", GLUE_53); 00473 define ("<=", GLUE_54); 00474 define (">=", GLUE_55); 00475 define ("<", GLUE_56); 00476 define (">", GLUE_57); 00477 define ("abs", GLUE_58); 00478 define_converter (":>", GLUE_59, PENALTY_INCLUSION); 00479 define_converter (":>", GLUE_60, PENALTY_HOMOMORPHISM); 00480 define_converter (":>", GLUE_61, PENALTY_PROMOTE_GENERIC); 00481 define_converter (":>", GLUE_62, PENALTY_HOMOMORPHISM); 00482 define_converter (":>", GLUE_63, PENALTY_PROMOTE_GENERIC); 00483 define ("-", GLUE_64); 00484 define ("square", GLUE_65); 00485 define ("+", GLUE_66); 00486 define ("-", GLUE_67); 00487 define ("*", GLUE_68); 00488 define ("+", GLUE_69); 00489 define ("+", GLUE_70); 00490 define ("-", GLUE_71); 00491 define ("-", GLUE_72); 00492 define ("*", GLUE_73); 00493 define ("*", GLUE_74); 00494 define ("dot", GLUE_75); 00495 define ("big_mul", GLUE_76); 00496 define ("big_add", GLUE_77); 00497 define ("/", GLUE_78); 00498 define ("/", GLUE_79); 00499 define ("/", GLUE_80); 00500 } 00501 }