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/int.hpp> 00007 #include <algebramix/vector_unrolled.hpp> 00008 #include <algebramix/vector_simd.hpp> 00009 #include <algebramix/permutation.hpp> 00010 #include <basix/row_tuple.hpp> 00011 #include <algebramix/matrix.hpp> 00012 #include <algebramix/matrix_ring_naive.hpp> 00013 #include <algebramix/matrix_integer.hpp> 00014 #include <algebramix/matrix_quotient.hpp> 00015 #include <algebramix/matrix_complex.hpp> 00016 #include <basix/tuple.hpp> 00017 #include <basix/alias.hpp> 00018 #include <basix/glue.hpp> 00019 00020 #define int_literal(x) as_int (as_string (x)) 00021 #define identity_matrix_integer identity_matrix<integer> 00022 #define hilbert_matrix_rational hilbert_matrix<rational> 00023 00024 namespace mmx { 00025 template<typename C> matrix<C> 00026 matrix_new (const vector<row_tuple<C> >& t) { 00027 if (N(t) == 0) return matrix<C> (); 00028 nat i, j, rows= N(t), cols= N(t[0]); 00029 C dummy= 0; 00030 matrix<C> r (dummy, rows, cols); 00031 for (i=0; i<rows; i++) { 00032 ASSERT (N(t[i]) == cols, "unequal row lengths"); 00033 for (j=0; j<cols; j++) 00034 r(i,j)= t[i][j]; 00035 } 00036 return r; 00037 } 00038 00039 template<typename C> matrix<C> 00040 matrix_new (const vector<C>& t) { 00041 nat j, rows= 1, cols= N(t); 00042 C dummy= 0; 00043 matrix<C> r (dummy, rows, cols); 00044 for (j=0; j<cols; j++) 00045 r(0,j)= t[j]; 00046 return r; 00047 } 00048 00049 template<typename C> vector<generic> 00050 wrap_column_reduced_echelon_with_permutation (const matrix<C>& m) { 00051 permutation permut; 00052 generic tp=as<generic> (column_reduced_echelon (m, permut)); 00053 return vec (tp, as<generic> (permut)); 00054 } 00055 00056 template<typename C> vector<generic> 00057 wrap_column_reduced_echelon_with_transform (const matrix<C>& m) { 00058 matrix<C> k; 00059 generic tp=as<generic> (column_reduced_echelon (m, k)); 00060 return vec (tp, as<generic> (k)); 00061 } 00062 00063 template<typename C> vector<generic> 00064 wrap_row_reduced_echelon_with_transform (const matrix<C>& m) { 00065 matrix<C> k; 00066 generic tp=as<generic> (row_reduced_echelon (m, k)); 00067 return vec (tp, as<generic> (k)); 00068 } 00069 } 00070 00071 00072 namespace mmx { 00073 static vector<rational> 00074 GLUE_1 (const vector<int> &arg_1) { 00075 return as<vector<rational> > (arg_1); 00076 } 00077 00078 static vector<complex<rational> > 00079 GLUE_2 (const vector<int> &arg_1) { 00080 return as<vector<complex<rational> > > (arg_1); 00081 } 00082 00083 static matrix<rational> 00084 GLUE_3 (const int &arg_1) { 00085 return hilbert_matrix_rational (arg_1); 00086 } 00087 00088 static row_tuple<rational> 00089 GLUE_4 (const tuple<rational> &arg_1) { 00090 return row_tuple<rational > (as_vector (arg_1)); 00091 } 00092 00093 static matrix<rational> 00094 GLUE_5 (const tuple<rational> &arg_1) { 00095 return matrix_new (as_vector (arg_1)); 00096 } 00097 00098 static matrix<rational> 00099 GLUE_6 (const tuple<row_tuple<rational> > &arg_1) { 00100 return matrix_new (as_vector (arg_1)); 00101 } 00102 00103 static matrix<rational> 00104 GLUE_7 (const tuple<row_tuple<rational> > &arg_1) { 00105 return matrix_new (as_vector (arg_1)); 00106 } 00107 00108 static int 00109 GLUE_8 (const matrix<rational> &arg_1) { 00110 return N (arg_1); 00111 } 00112 00113 static int 00114 GLUE_9 (const matrix<rational> &arg_1) { 00115 return rows (arg_1); 00116 } 00117 00118 static int 00119 GLUE_10 (const matrix<rational> &arg_1) { 00120 return cols (arg_1); 00121 } 00122 00123 static rational 00124 GLUE_11 (const matrix<rational> &arg_1, const int &arg_2, const int &arg_3) { 00125 return arg_1 (arg_2, arg_3); 00126 } 00127 00128 static alias<rational> 00129 GLUE_12 (const alias<matrix<rational> > &arg_1, const int &arg_2, const int &arg_3) { 00130 return alias_access<rational > (arg_1, arg_2, arg_3); 00131 } 00132 00133 static matrix<rational> 00134 GLUE_13 (const matrix<rational> &arg_1, const int &arg_2, const int &arg_3, const int &arg_4, const int &arg_5) { 00135 return range (arg_1, arg_2, arg_3, arg_4, arg_5); 00136 } 00137 00138 static vector<rational> 00139 GLUE_14 (const matrix<rational> &arg_1, const int &arg_2) { 00140 return row (arg_1, arg_2); 00141 } 00142 00143 static vector<rational> 00144 GLUE_15 (const matrix<rational> &arg_1, const int &arg_2) { 00145 return column (arg_1, arg_2); 00146 } 00147 00148 static matrix<rational> 00149 GLUE_16 (const matrix<rational> &arg_1) { 00150 return transpose (arg_1); 00151 } 00152 00153 static matrix<rational> 00154 GLUE_17 (const matrix<rational> &arg_1, const matrix<rational> &arg_2) { 00155 return horizontal_join (arg_1, arg_2); 00156 } 00157 00158 static matrix<rational> 00159 GLUE_18 (const matrix<rational> &arg_1, const matrix<rational> &arg_2) { 00160 return vertical_join (arg_1, arg_2); 00161 } 00162 00163 static row_tuple<complex<rational> > 00164 GLUE_19 (const tuple<complex<rational> > &arg_1) { 00165 return row_tuple<complex<rational> > (as_vector (arg_1)); 00166 } 00167 00168 static matrix<complex<rational> > 00169 GLUE_20 (const tuple<complex<rational> > &arg_1) { 00170 return matrix_new (as_vector (arg_1)); 00171 } 00172 00173 static matrix<complex<rational> > 00174 GLUE_21 (const tuple<row_tuple<complex<rational> > > &arg_1) { 00175 return matrix_new (as_vector (arg_1)); 00176 } 00177 00178 static matrix<complex<rational> > 00179 GLUE_22 (const tuple<row_tuple<complex<rational> > > &arg_1) { 00180 return matrix_new (as_vector (arg_1)); 00181 } 00182 00183 static int 00184 GLUE_23 (const matrix<complex<rational> > &arg_1) { 00185 return N (arg_1); 00186 } 00187 00188 static int 00189 GLUE_24 (const matrix<complex<rational> > &arg_1) { 00190 return rows (arg_1); 00191 } 00192 00193 static int 00194 GLUE_25 (const matrix<complex<rational> > &arg_1) { 00195 return cols (arg_1); 00196 } 00197 00198 static complex<rational> 00199 GLUE_26 (const matrix<complex<rational> > &arg_1, const int &arg_2, const int &arg_3) { 00200 return arg_1 (arg_2, arg_3); 00201 } 00202 00203 static alias<complex<rational> > 00204 GLUE_27 (const alias<matrix<complex<rational> > > &arg_1, const int &arg_2, const int &arg_3) { 00205 return alias_access<complex<rational> > (arg_1, arg_2, arg_3); 00206 } 00207 00208 static matrix<complex<rational> > 00209 GLUE_28 (const matrix<complex<rational> > &arg_1, const int &arg_2, const int &arg_3, const int &arg_4, const int &arg_5) { 00210 return range (arg_1, arg_2, arg_3, arg_4, arg_5); 00211 } 00212 00213 static vector<complex<rational> > 00214 GLUE_29 (const matrix<complex<rational> > &arg_1, const int &arg_2) { 00215 return row (arg_1, arg_2); 00216 } 00217 00218 static vector<complex<rational> > 00219 GLUE_30 (const matrix<complex<rational> > &arg_1, const int &arg_2) { 00220 return column (arg_1, arg_2); 00221 } 00222 00223 static matrix<complex<rational> > 00224 GLUE_31 (const matrix<complex<rational> > &arg_1) { 00225 return transpose (arg_1); 00226 } 00227 00228 static matrix<complex<rational> > 00229 GLUE_32 (const matrix<complex<rational> > &arg_1, const matrix<complex<rational> > &arg_2) { 00230 return horizontal_join (arg_1, arg_2); 00231 } 00232 00233 static matrix<complex<rational> > 00234 GLUE_33 (const matrix<complex<rational> > &arg_1, const matrix<complex<rational> > &arg_2) { 00235 return vertical_join (arg_1, arg_2); 00236 } 00237 00238 static matrix<rational> 00239 GLUE_34 (const rational &arg_1, const int &arg_2, const int &arg_3) { 00240 return fill_matrix (arg_1, arg_2, arg_3); 00241 } 00242 00243 static matrix<rational> 00244 GLUE_35 (const rational &arg_1, const int &arg_2) { 00245 return jordan_matrix (arg_1, arg_2); 00246 } 00247 00248 static matrix<rational> 00249 GLUE_36 (const vector<rational> &arg_1) { 00250 return toeplitz_matrix (arg_1); 00251 } 00252 00253 static matrix<rational> 00254 GLUE_37 (const vector<rational> &arg_1) { 00255 return hankel_matrix (arg_1); 00256 } 00257 00258 static matrix<rational> 00259 GLUE_38 (const vector<rational> &arg_1, const vector<rational> &arg_2) { 00260 return tensor_matrix (arg_1, arg_2); 00261 } 00262 00263 static matrix<rational> 00264 GLUE_39 (const vector<rational> &arg_1) { 00265 return vandermonde (arg_1); 00266 } 00267 00268 static matrix<rational> 00269 GLUE_40 (const matrix<rational> &arg_1) { 00270 return -arg_1; 00271 } 00272 00273 static matrix<rational> 00274 GLUE_41 (const matrix<rational> &arg_1) { 00275 return square (arg_1); 00276 } 00277 00278 static matrix<rational> 00279 GLUE_42 (const matrix<rational> &arg_1, const matrix<rational> &arg_2) { 00280 return arg_1 + arg_2; 00281 } 00282 00283 static matrix<rational> 00284 GLUE_43 (const matrix<rational> &arg_1, const matrix<rational> &arg_2) { 00285 return arg_1 - arg_2; 00286 } 00287 00288 static matrix<rational> 00289 GLUE_44 (const matrix<rational> &arg_1, const matrix<rational> &arg_2) { 00290 return arg_1 * arg_2; 00291 } 00292 00293 static matrix<rational> 00294 GLUE_45 (const rational &arg_1, const matrix<rational> &arg_2) { 00295 return arg_1 + arg_2; 00296 } 00297 00298 static matrix<rational> 00299 GLUE_46 (const matrix<rational> &arg_1, const rational &arg_2) { 00300 return arg_1 + arg_2; 00301 } 00302 00303 static matrix<rational> 00304 GLUE_47 (const rational &arg_1, const matrix<rational> &arg_2) { 00305 return arg_1 - arg_2; 00306 } 00307 00308 static matrix<rational> 00309 GLUE_48 (const matrix<rational> &arg_1, const rational &arg_2) { 00310 return arg_1 - arg_2; 00311 } 00312 00313 static matrix<rational> 00314 GLUE_49 (const rational &arg_1, const matrix<rational> &arg_2) { 00315 return arg_1 * arg_2; 00316 } 00317 00318 static matrix<rational> 00319 GLUE_50 (const matrix<rational> &arg_1, const rational &arg_2) { 00320 return arg_1 * arg_2; 00321 } 00322 00323 static vector<rational> 00324 GLUE_51 (const matrix<rational> &arg_1, const vector<rational> &arg_2) { 00325 return arg_1 * arg_2; 00326 } 00327 00328 static vector<rational> 00329 GLUE_52 (const vector<rational> &arg_1, const matrix<rational> &arg_2) { 00330 return arg_1 * arg_2; 00331 } 00332 00333 static matrix<rational> 00334 GLUE_53 (const rational &arg_1, const matrix<rational> &arg_2) { 00335 return arg_1 / arg_2; 00336 } 00337 00338 static matrix<rational> 00339 GLUE_54 (const matrix<rational> &arg_1, const rational &arg_2) { 00340 return arg_1 / arg_2; 00341 } 00342 00343 static matrix<rational> 00344 GLUE_55 (const matrix<rational> &arg_1, const matrix<rational> &arg_2) { 00345 return krylov (arg_1, arg_2); 00346 } 00347 00348 static rational 00349 GLUE_56 (const matrix<rational> &arg_1) { 00350 return det (arg_1); 00351 } 00352 00353 static matrix<rational> 00354 GLUE_57 (const matrix<rational> &arg_1) { 00355 return row_echelon (arg_1); 00356 } 00357 00358 static matrix<rational> 00359 GLUE_58 (const matrix<rational> &arg_1) { 00360 return column_echelon (arg_1); 00361 } 00362 00363 static matrix<rational> 00364 GLUE_59 (const matrix<rational> &arg_1) { 00365 return row_reduced_echelon (arg_1); 00366 } 00367 00368 static matrix<rational> 00369 GLUE_60 (const matrix<rational> &arg_1) { 00370 return column_reduced_echelon (arg_1); 00371 } 00372 00373 static vector<generic> 00374 GLUE_61 (const matrix<rational> &arg_1) { 00375 return wrap_row_reduced_echelon_with_transform (arg_1); 00376 } 00377 00378 static vector<generic> 00379 GLUE_62 (const matrix<rational> &arg_1) { 00380 return wrap_column_reduced_echelon_with_transform (arg_1); 00381 } 00382 00383 static vector<generic> 00384 GLUE_63 (const matrix<rational> &arg_1) { 00385 return wrap_column_reduced_echelon_with_permutation (arg_1); 00386 } 00387 00388 static matrix<rational> 00389 GLUE_64 (const matrix<rational> &arg_1) { 00390 return kernel (arg_1); 00391 } 00392 00393 static matrix<rational> 00394 GLUE_65 (const matrix<rational> &arg_1) { 00395 return image (arg_1); 00396 } 00397 00398 static int 00399 GLUE_66 (const matrix<rational> &arg_1) { 00400 return rank (arg_1); 00401 } 00402 00403 static matrix<rational> 00404 GLUE_67 (const matrix<rational> &arg_1) { 00405 return invert (arg_1); 00406 } 00407 00408 static matrix<rational> 00409 GLUE_68 (const matrix<rational> &arg_1) { 00410 return abs (arg_1); 00411 } 00412 00413 static row_tuple<rational> 00414 GLUE_69 (const row_tuple<integer> &arg_1) { 00415 return as<row_tuple<rational> > (arg_1); 00416 } 00417 00418 static matrix<rational> 00419 GLUE_70 (const matrix<integer> &arg_1) { 00420 return as<matrix<rational> > (arg_1); 00421 } 00422 00423 static row_tuple<complex<rational> > 00424 GLUE_71 (const row_tuple<integer> &arg_1) { 00425 return as<row_tuple<complex<rational> > > (arg_1); 00426 } 00427 00428 static matrix<complex<rational> > 00429 GLUE_72 (const matrix<integer> &arg_1) { 00430 return as<matrix<complex<rational> > > (arg_1); 00431 } 00432 00433 static row_tuple<generic> 00434 GLUE_73 (const row_tuple<rational> &arg_1) { 00435 return as<row_tuple<generic> > (arg_1); 00436 } 00437 00438 static matrix<generic> 00439 GLUE_74 (const matrix<rational> &arg_1) { 00440 return as<matrix<generic> > (arg_1); 00441 } 00442 00443 static row_tuple<complex<rational> > 00444 GLUE_75 (const row_tuple<rational> &arg_1) { 00445 return as<row_tuple<complex<rational> > > (arg_1); 00446 } 00447 00448 static matrix<complex<rational> > 00449 GLUE_76 (const matrix<rational> &arg_1) { 00450 return as<matrix<complex<rational> > > (arg_1); 00451 } 00452 00453 static row_tuple<generic> 00454 GLUE_77 (const row_tuple<complex<rational> > &arg_1) { 00455 return as<row_tuple<generic> > (arg_1); 00456 } 00457 00458 static matrix<generic> 00459 GLUE_78 (const matrix<complex<rational> > &arg_1) { 00460 return as<matrix<generic> > (arg_1); 00461 } 00462 00463 static matrix<complex<rational> > 00464 GLUE_79 (const complex<rational> &arg_1, const int &arg_2, const int &arg_3) { 00465 return fill_matrix (arg_1, arg_2, arg_3); 00466 } 00467 00468 static matrix<complex<rational> > 00469 GLUE_80 (const complex<rational> &arg_1, const int &arg_2) { 00470 return jordan_matrix (arg_1, arg_2); 00471 } 00472 00473 static matrix<complex<rational> > 00474 GLUE_81 (const vector<complex<rational> > &arg_1) { 00475 return toeplitz_matrix (arg_1); 00476 } 00477 00478 static matrix<complex<rational> > 00479 GLUE_82 (const vector<complex<rational> > &arg_1) { 00480 return hankel_matrix (arg_1); 00481 } 00482 00483 static matrix<complex<rational> > 00484 GLUE_83 (const vector<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00485 return tensor_matrix (arg_1, arg_2); 00486 } 00487 00488 static matrix<complex<rational> > 00489 GLUE_84 (const vector<complex<rational> > &arg_1) { 00490 return vandermonde (arg_1); 00491 } 00492 00493 static matrix<complex<rational> > 00494 GLUE_85 (const matrix<complex<rational> > &arg_1) { 00495 return -arg_1; 00496 } 00497 00498 static matrix<complex<rational> > 00499 GLUE_86 (const matrix<complex<rational> > &arg_1) { 00500 return square (arg_1); 00501 } 00502 00503 static matrix<complex<rational> > 00504 GLUE_87 (const matrix<complex<rational> > &arg_1, const matrix<complex<rational> > &arg_2) { 00505 return arg_1 + arg_2; 00506 } 00507 00508 static matrix<complex<rational> > 00509 GLUE_88 (const matrix<complex<rational> > &arg_1, const matrix<complex<rational> > &arg_2) { 00510 return arg_1 - arg_2; 00511 } 00512 00513 static matrix<complex<rational> > 00514 GLUE_89 (const matrix<complex<rational> > &arg_1, const matrix<complex<rational> > &arg_2) { 00515 return arg_1 * arg_2; 00516 } 00517 00518 static matrix<complex<rational> > 00519 GLUE_90 (const complex<rational> &arg_1, const matrix<complex<rational> > &arg_2) { 00520 return arg_1 + arg_2; 00521 } 00522 00523 static matrix<complex<rational> > 00524 GLUE_91 (const matrix<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00525 return arg_1 + arg_2; 00526 } 00527 00528 static matrix<complex<rational> > 00529 GLUE_92 (const complex<rational> &arg_1, const matrix<complex<rational> > &arg_2) { 00530 return arg_1 - arg_2; 00531 } 00532 00533 static matrix<complex<rational> > 00534 GLUE_93 (const matrix<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00535 return arg_1 - arg_2; 00536 } 00537 00538 static matrix<complex<rational> > 00539 GLUE_94 (const complex<rational> &arg_1, const matrix<complex<rational> > &arg_2) { 00540 return arg_1 * arg_2; 00541 } 00542 00543 static matrix<complex<rational> > 00544 GLUE_95 (const matrix<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00545 return arg_1 * arg_2; 00546 } 00547 00548 static vector<complex<rational> > 00549 GLUE_96 (const matrix<complex<rational> > &arg_1, const vector<complex<rational> > &arg_2) { 00550 return arg_1 * arg_2; 00551 } 00552 00553 static vector<complex<rational> > 00554 GLUE_97 (const vector<complex<rational> > &arg_1, const matrix<complex<rational> > &arg_2) { 00555 return arg_1 * arg_2; 00556 } 00557 00558 static matrix<complex<rational> > 00559 GLUE_98 (const complex<rational> &arg_1, const matrix<complex<rational> > &arg_2) { 00560 return arg_1 / arg_2; 00561 } 00562 00563 static matrix<complex<rational> > 00564 GLUE_99 (const matrix<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00565 return arg_1 / arg_2; 00566 } 00567 00568 static matrix<complex<rational> > 00569 GLUE_100 (const matrix<complex<rational> > &arg_1, const matrix<complex<rational> > &arg_2) { 00570 return krylov (arg_1, arg_2); 00571 } 00572 00573 static complex<rational> 00574 GLUE_101 (const matrix<complex<rational> > &arg_1) { 00575 return det (arg_1); 00576 } 00577 00578 static matrix<complex<rational> > 00579 GLUE_102 (const matrix<complex<rational> > &arg_1) { 00580 return row_echelon (arg_1); 00581 } 00582 00583 static matrix<complex<rational> > 00584 GLUE_103 (const matrix<complex<rational> > &arg_1) { 00585 return column_echelon (arg_1); 00586 } 00587 00588 static matrix<complex<rational> > 00589 GLUE_104 (const matrix<complex<rational> > &arg_1) { 00590 return row_reduced_echelon (arg_1); 00591 } 00592 00593 static matrix<complex<rational> > 00594 GLUE_105 (const matrix<complex<rational> > &arg_1) { 00595 return column_reduced_echelon (arg_1); 00596 } 00597 00598 static vector<generic> 00599 GLUE_106 (const matrix<complex<rational> > &arg_1) { 00600 return wrap_row_reduced_echelon_with_transform (arg_1); 00601 } 00602 00603 static vector<generic> 00604 GLUE_107 (const matrix<complex<rational> > &arg_1) { 00605 return wrap_column_reduced_echelon_with_transform (arg_1); 00606 } 00607 00608 static vector<generic> 00609 GLUE_108 (const matrix<complex<rational> > &arg_1) { 00610 return wrap_column_reduced_echelon_with_permutation (arg_1); 00611 } 00612 00613 static matrix<complex<rational> > 00614 GLUE_109 (const matrix<complex<rational> > &arg_1) { 00615 return kernel (arg_1); 00616 } 00617 00618 static matrix<complex<rational> > 00619 GLUE_110 (const matrix<complex<rational> > &arg_1) { 00620 return image (arg_1); 00621 } 00622 00623 static int 00624 GLUE_111 (const matrix<complex<rational> > &arg_1) { 00625 return rank (arg_1); 00626 } 00627 00628 static matrix<complex<rational> > 00629 GLUE_112 (const matrix<complex<rational> > &arg_1) { 00630 return invert (arg_1); 00631 } 00632 00633 void 00634 glue_matrix_rational () { 00635 static bool done = false; 00636 if (done) return; 00637 done = true; 00638 call_glue (string ("glue_vector_rational")); 00639 call_glue (string ("glue_matrix_integer")); 00640 define_converter (":>", GLUE_1, PENALTY_CAST); 00641 define_converter (":>", GLUE_2, PENALTY_CAST); 00642 define_type<row_tuple<rational> > (gen (lit ("Row"), lit ("Rational"))); 00643 define_type<row_tuple<complex<rational> > > (gen (lit ("Row"), gen (lit ("Complex"), lit ("Rational")))); 00644 define_type<matrix<rational> > (gen (lit ("Matrix"), lit ("Rational"))); 00645 define_type<matrix<complex<rational> > > (gen (lit ("Matrix"), gen (lit ("Complex"), lit ("Rational")))); 00646 define ("hilbert_matrix", GLUE_3); 00647 define ("(.)", GLUE_4); 00648 define ("matrix", GLUE_5); 00649 define ("matrix", GLUE_6); 00650 define ("[]", GLUE_7); 00651 define ("#", GLUE_8); 00652 define ("rows", GLUE_9); 00653 define ("columns", GLUE_10); 00654 define (".[]", GLUE_11); 00655 define (".[]", GLUE_12); 00656 define (".[]", GLUE_13); 00657 define ("row", GLUE_14); 00658 define ("column", GLUE_15); 00659 define ("transpose", GLUE_16); 00660 define ("horizontal_join", GLUE_17); 00661 define ("vertical_join", GLUE_18); 00662 define ("(.)", GLUE_19); 00663 define ("matrix", GLUE_20); 00664 define ("matrix", GLUE_21); 00665 define ("[]", GLUE_22); 00666 define ("#", GLUE_23); 00667 define ("rows", GLUE_24); 00668 define ("columns", GLUE_25); 00669 define (".[]", GLUE_26); 00670 define (".[]", GLUE_27); 00671 define (".[]", GLUE_28); 00672 define ("row", GLUE_29); 00673 define ("column", GLUE_30); 00674 define ("transpose", GLUE_31); 00675 define ("horizontal_join", GLUE_32); 00676 define ("vertical_join", GLUE_33); 00677 define ("fill_matrix", GLUE_34); 00678 define ("jordan_matrix", GLUE_35); 00679 define ("toeplitz_matrix", GLUE_36); 00680 define ("hankel_matrix", GLUE_37); 00681 define ("tensor_matrix", GLUE_38); 00682 define ("vandermonde", GLUE_39); 00683 define ("-", GLUE_40); 00684 define ("square", GLUE_41); 00685 define ("+", GLUE_42); 00686 define ("-", GLUE_43); 00687 define ("*", GLUE_44); 00688 define ("+", GLUE_45); 00689 define ("+", GLUE_46); 00690 define ("-", GLUE_47); 00691 define ("-", GLUE_48); 00692 define ("*", GLUE_49); 00693 define ("*", GLUE_50); 00694 define ("*", GLUE_51); 00695 define ("*", GLUE_52); 00696 define ("/", GLUE_53); 00697 define ("/", GLUE_54); 00698 define ("krylov", GLUE_55); 00699 define ("det", GLUE_56); 00700 define ("row_echelon", GLUE_57); 00701 define ("column_echelon", GLUE_58); 00702 define ("row_reduced_echelon", GLUE_59); 00703 define ("column_reduced_echelon", GLUE_60); 00704 define ("row_reduced_echelon_with_transform", GLUE_61); 00705 define ("column_reduced_echelon_with_transform", GLUE_62); 00706 define ("column_reduced_echelon_with_permutation", GLUE_63); 00707 define ("ker", GLUE_64); 00708 define ("im", GLUE_65); 00709 define ("rank", GLUE_66); 00710 define ("invert", GLUE_67); 00711 define ("abs", GLUE_68); 00712 define_converter (":>", GLUE_69, PENALTY_INCLUSION); 00713 define_converter (":>", GLUE_70, PENALTY_INCLUSION); 00714 define_converter (":>", GLUE_71, PENALTY_INCLUSION); 00715 define_converter (":>", GLUE_72, PENALTY_INCLUSION); 00716 define_converter (":>", GLUE_73, PENALTY_PROMOTE_GENERIC); 00717 define_converter (":>", GLUE_74, PENALTY_PROMOTE_GENERIC); 00718 define_converter (":>", GLUE_75, PENALTY_INCLUSION); 00719 define_converter (":>", GLUE_76, PENALTY_INCLUSION); 00720 define_converter (":>", GLUE_77, PENALTY_PROMOTE_GENERIC); 00721 define_converter (":>", GLUE_78, PENALTY_PROMOTE_GENERIC); 00722 define ("fill_matrix", GLUE_79); 00723 define ("jordan_matrix", GLUE_80); 00724 define ("toeplitz_matrix", GLUE_81); 00725 define ("hankel_matrix", GLUE_82); 00726 define ("tensor_matrix", GLUE_83); 00727 define ("vandermonde", GLUE_84); 00728 define ("-", GLUE_85); 00729 define ("square", GLUE_86); 00730 define ("+", GLUE_87); 00731 define ("-", GLUE_88); 00732 define ("*", GLUE_89); 00733 define ("+", GLUE_90); 00734 define ("+", GLUE_91); 00735 define ("-", GLUE_92); 00736 define ("-", GLUE_93); 00737 define ("*", GLUE_94); 00738 define ("*", GLUE_95); 00739 define ("*", GLUE_96); 00740 define ("*", GLUE_97); 00741 define ("/", GLUE_98); 00742 define ("/", GLUE_99); 00743 define ("krylov", GLUE_100); 00744 define ("det", GLUE_101); 00745 define ("row_echelon", GLUE_102); 00746 define ("column_echelon", GLUE_103); 00747 define ("row_reduced_echelon", GLUE_104); 00748 define ("column_reduced_echelon", GLUE_105); 00749 define ("row_reduced_echelon_with_transform", GLUE_106); 00750 define ("column_reduced_echelon_with_transform", GLUE_107); 00751 define ("column_reduced_echelon_with_permutation", GLUE_108); 00752 define ("ker", GLUE_109); 00753 define ("im", GLUE_110); 00754 define ("rank", GLUE_111); 00755 define ("invert", GLUE_112); 00756 } 00757 }