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 <algebramix/polynomial.hpp> 00007 #include <algebramix/polynomial_polynomial.hpp> 00008 #include <algebramix/polynomial_integer.hpp> 00009 #include <algebramix/polynomial_rational.hpp> 00010 #include <algebramix/polynomial_complex.hpp> 00011 #include <algebramix/polynomial_schonhage.hpp> 00012 #include <algebramix/series.hpp> 00013 #include <algebramix/series_elementary.hpp> 00014 #include <algebramix/series_integer.hpp> 00015 #include <algebramix/series_rational.hpp> 00016 #include <algebramix/series_complex.hpp> 00017 #include <algebramix/series_sugar.hpp> 00018 #include <basix/tuple.hpp> 00019 #include <basix/routine.hpp> 00020 #include <basix/glue.hpp> 00021 00022 namespace mmx { 00023 template<typename C> polynomial<C> 00024 polynomial_reverse (const vector<C>& v) { 00025 return polynomial<C> (reverse (v)); } 00026 00027 template<typename C> polynomial<modular<modulus<C>, modular_local> > 00028 as_polynomial_modular (const polynomial<C>& f, const modulus<C>& p) { 00029 modular<modulus<C>, modular_local>::set_modulus (p); 00030 return as<polynomial<modular<modulus<C>, modular_local> > > (f); } 00031 00032 template<typename C> vector<generic> 00033 wrap_subresultants (const polynomial<C>& f, const polynomial<C>& g) { 00034 return as<vector<generic> > (subresultants (f, g)); } 00035 00036 } 00037 namespace mmx { POLYNOMIAL_GENERIC_USES_SCHONHAGE } 00038 #define series_shift_default(s,sh) shift (s, sh, mmx_bit_precision) 00039 00040 namespace mmx { 00041 static void 00042 GLUE_1 (const series<rational> &arg_1, const generic &arg_2) { 00043 set_variable_name (arg_1, arg_2); 00044 } 00045 00046 static void 00047 GLUE_2 (const series<rational> &arg_1, const int &arg_2) { 00048 set_output_order (arg_1, arg_2); 00049 } 00050 00051 static void 00052 GLUE_3 (const series<rational> &arg_1, const int &arg_2) { 00053 set_cancel_order (arg_1, arg_2); 00054 } 00055 00056 static void 00057 GLUE_4 (const series<rational> &arg_1, const bool &arg_2) { 00058 set_formula_output (arg_1, arg_2); 00059 } 00060 00061 static series<rational> 00062 GLUE_5 (const tuple<rational> &arg_1) { 00063 return series<rational > (as_vector (arg_1)); 00064 } 00065 00066 static series<rational> 00067 GLUE_6 (const rational &arg_1) { 00068 return series<rational > (arg_1); 00069 } 00070 00071 static series<rational> 00072 GLUE_7 (const polynomial<rational> &arg_1) { 00073 return series<rational > (arg_1); 00074 } 00075 00076 static iterator<generic> 00077 GLUE_8 (const series<rational> &arg_1) { 00078 return as<iterator<generic> > (iterate (arg_1)); 00079 } 00080 00081 static rational 00082 GLUE_9 (const series<rational> &arg_1, const int &arg_2) { 00083 return arg_1[arg_2]; 00084 } 00085 00086 static polynomial<rational> 00087 GLUE_10 (const series<rational> &arg_1, const int &arg_2, const int &arg_3) { 00088 return range (arg_1, arg_2, arg_3); 00089 } 00090 00091 static series<rational> 00092 GLUE_11 (const series<rational> &arg_1) { 00093 return -arg_1; 00094 } 00095 00096 static series<rational> 00097 GLUE_12 (const series<rational> &arg_1) { 00098 return square (arg_1); 00099 } 00100 00101 static series<rational> 00102 GLUE_13 (const series<rational> &arg_1, const series<rational> &arg_2) { 00103 return arg_1 + arg_2; 00104 } 00105 00106 static series<rational> 00107 GLUE_14 (const series<rational> &arg_1, const series<rational> &arg_2) { 00108 return arg_1 - arg_2; 00109 } 00110 00111 static series<rational> 00112 GLUE_15 (const series<rational> &arg_1, const series<rational> &arg_2) { 00113 return arg_1 * arg_2; 00114 } 00115 00116 static series<rational> 00117 GLUE_16 (const rational &arg_1, const series<rational> &arg_2) { 00118 return arg_1 + arg_2; 00119 } 00120 00121 static series<rational> 00122 GLUE_17 (const series<rational> &arg_1, const rational &arg_2) { 00123 return arg_1 + arg_2; 00124 } 00125 00126 static series<rational> 00127 GLUE_18 (const rational &arg_1, const series<rational> &arg_2) { 00128 return arg_1 - arg_2; 00129 } 00130 00131 static series<rational> 00132 GLUE_19 (const series<rational> &arg_1, const rational &arg_2) { 00133 return arg_1 - arg_2; 00134 } 00135 00136 static series<rational> 00137 GLUE_20 (const rational &arg_1, const series<rational> &arg_2) { 00138 return arg_1 * arg_2; 00139 } 00140 00141 static series<rational> 00142 GLUE_21 (const series<rational> &arg_1, const rational &arg_2) { 00143 return arg_1 * arg_2; 00144 } 00145 00146 static series<rational> 00147 GLUE_22 (const series<rational> &arg_1, const int &arg_2) { 00148 return binpow (arg_1, arg_2); 00149 } 00150 00151 static series<rational> 00152 GLUE_23 (const series<rational> &arg_1, const integer &arg_2) { 00153 return binpow (arg_1, arg_2); 00154 } 00155 00156 static series<rational> 00157 GLUE_24 (const series<rational> &arg_1) { 00158 return derive (arg_1); 00159 } 00160 00161 static series<rational> 00162 GLUE_25 (const series<rational> &arg_1) { 00163 return xderive (arg_1); 00164 } 00165 00166 static series<rational> 00167 GLUE_26 (const series<rational> &arg_1, const int &arg_2) { 00168 return dilate (arg_1, arg_2); 00169 } 00170 00171 static series<rational> 00172 GLUE_27 (const series<rational> &arg_1, const int &arg_2) { 00173 return lshiftz (arg_1, arg_2); 00174 } 00175 00176 static series<rational> 00177 GLUE_28 (const series<rational> &arg_1, const int &arg_2) { 00178 return rshiftz (arg_1, arg_2); 00179 } 00180 00181 static series<rational> 00182 GLUE_29 (const series<rational> &arg_1, const series<rational> &arg_2) { 00183 return arg_1 / arg_2; 00184 } 00185 00186 static series<rational> 00187 GLUE_30 (const rational &arg_1, const series<rational> &arg_2) { 00188 return arg_1 / arg_2; 00189 } 00190 00191 static series<rational> 00192 GLUE_31 (const series<rational> &arg_1, const rational &arg_2) { 00193 return arg_1 / arg_2; 00194 } 00195 00196 static series<rational> 00197 GLUE_32 (const series<rational> &arg_1, const series<rational> &arg_2) { 00198 return arg_1 / arg_2; 00199 } 00200 00201 static bool 00202 GLUE_33 (const series<rational> &arg_1, const series<rational> &arg_2) { 00203 return divides (arg_1, arg_2); 00204 } 00205 00206 static series<rational> 00207 GLUE_34 (const series<rational> &arg_1, const series<rational> &arg_2) { 00208 return gcd (arg_1, arg_2); 00209 } 00210 00211 static series<rational> 00212 GLUE_35 (const series<rational> &arg_1, const series<rational> &arg_2) { 00213 return lcm (arg_1, arg_2); 00214 } 00215 00216 static series<rational> 00217 GLUE_36 (const series<rational> &arg_1) { 00218 return integrate (arg_1); 00219 } 00220 00221 static series<rational> 00222 GLUE_37 (const series<rational> &arg_1, const series<rational> &arg_2) { 00223 return compose (arg_1, arg_2); 00224 } 00225 00226 static series<rational> 00227 GLUE_38 (const series<rational> &arg_1) { 00228 return reverse (arg_1); 00229 } 00230 00231 static series<rational> 00232 GLUE_39 (const series<rational> &arg_1, const rational &arg_2) { 00233 return q_difference (arg_1, arg_2); 00234 } 00235 00236 static series<rational> 00237 GLUE_40 (const series<rational> &arg_1, const rational &arg_2) { 00238 return series_shift_default (arg_1, arg_2); 00239 } 00240 00241 static series<rational> 00242 GLUE_41 (const series<rational> &arg_1, const rational &arg_2, const int &arg_3) { 00243 return shift (arg_1, arg_2, arg_3); 00244 } 00245 00246 static bool 00247 GLUE_42 (const series<rational> &arg_1, const series<rational> &arg_2) { 00248 return arg_1 <= arg_2; 00249 } 00250 00251 static bool 00252 GLUE_43 (const series<rational> &arg_1, const series<rational> &arg_2) { 00253 return arg_1 >= arg_2; 00254 } 00255 00256 static bool 00257 GLUE_44 (const series<rational> &arg_1, const series<rational> &arg_2) { 00258 return arg_1 < arg_2; 00259 } 00260 00261 static bool 00262 GLUE_45 (const series<rational> &arg_1, const series<rational> &arg_2) { 00263 return arg_1 > arg_2; 00264 } 00265 00266 static series<rational> 00267 GLUE_46 (const series<integer> &arg_1) { 00268 return as<series<rational> > (arg_1); 00269 } 00270 00271 static series<generic> 00272 GLUE_47 (const series<rational> &arg_1) { 00273 return as<series<generic> > (arg_1); 00274 } 00275 00276 static series<rational> 00277 GLUE_48 (const series<rational> &arg_1, const series<rational> &arg_2) { 00278 return pow (arg_1, arg_2); 00279 } 00280 00281 static series<rational> 00282 GLUE_49 (const series<rational> &arg_1) { 00283 return sqrt (arg_1); 00284 } 00285 00286 static series<rational> 00287 GLUE_50 (const series<rational> &arg_1) { 00288 return exp (arg_1); 00289 } 00290 00291 static series<rational> 00292 GLUE_51 (const series<rational> &arg_1) { 00293 return log (arg_1); 00294 } 00295 00296 static series<rational> 00297 GLUE_52 (const series<rational> &arg_1) { 00298 return cos (arg_1); 00299 } 00300 00301 static series<rational> 00302 GLUE_53 (const series<rational> &arg_1) { 00303 return sin (arg_1); 00304 } 00305 00306 static series<rational> 00307 GLUE_54 (const series<rational> &arg_1) { 00308 return tan (arg_1); 00309 } 00310 00311 static series<rational> 00312 GLUE_55 (const series<rational> &arg_1) { 00313 return acos (arg_1); 00314 } 00315 00316 static series<rational> 00317 GLUE_56 (const series<rational> &arg_1) { 00318 return asin (arg_1); 00319 } 00320 00321 static series<rational> 00322 GLUE_57 (const series<rational> &arg_1) { 00323 return atan (arg_1); 00324 } 00325 00326 static unknown<rational> 00327 GLUE_58 (const rational &arg_1) { 00328 return unknown<rational > (arg_1); 00329 } 00330 00331 static unknown<rational> 00332 GLUE_59 (const unknown<rational> &arg_1) { 00333 return -arg_1; 00334 } 00335 00336 static unknown<rational> 00337 GLUE_60 (const unknown<rational> &arg_1) { 00338 return square (arg_1); 00339 } 00340 00341 static unknown<rational> 00342 GLUE_61 (const unknown<rational> &arg_1, const unknown<rational> &arg_2) { 00343 return arg_1 + arg_2; 00344 } 00345 00346 static unknown<rational> 00347 GLUE_62 (const unknown<rational> &arg_1, const unknown<rational> &arg_2) { 00348 return arg_1 - arg_2; 00349 } 00350 00351 static unknown<rational> 00352 GLUE_63 (const rational &arg_1, const unknown<rational> &arg_2) { 00353 return arg_1 * arg_2; 00354 } 00355 00356 static unknown<rational> 00357 GLUE_64 (const unknown<rational> &arg_1, const rational &arg_2) { 00358 return arg_1 * arg_2; 00359 } 00360 00361 static unknown<rational> 00362 GLUE_65 (const unknown<rational> &arg_1, const unknown<rational> &arg_2) { 00363 return arg_1 * arg_2; 00364 } 00365 00366 static series<rational> 00367 GLUE_66 (const routine &arg_1, const rational &arg_2) { 00368 return fixed_point_series (arg_1, arg_2); 00369 } 00370 00371 static vector<generic> 00372 GLUE_67 (const routine &arg_1, const vector<rational> &arg_2) { 00373 return gen_fixed_point_vector_series (arg_1, arg_2); 00374 } 00375 00376 static series<rational> 00377 GLUE_68 (const routine &arg_1, const rational &arg_2) { 00378 return integrate_series (arg_1, arg_2); 00379 } 00380 00381 static vector<generic> 00382 GLUE_69 (const routine &arg_1, const vector<rational> &arg_2) { 00383 return gen_integrate_vector_series (arg_1, arg_2); 00384 } 00385 00386 static series<rational> 00387 GLUE_70 (const routine &arg_1, const rational &arg_2) { 00388 return implicit_series (arg_1, arg_2); 00389 } 00390 00391 static vector<generic> 00392 GLUE_71 (const routine &arg_1, const vector<rational> &arg_2) { 00393 return gen_implicit_vector_series (arg_1, arg_2); 00394 } 00395 00396 static void 00397 GLUE_72 (const series<complex<rational> > &arg_1, const generic &arg_2) { 00398 set_variable_name (arg_1, arg_2); 00399 } 00400 00401 static void 00402 GLUE_73 (const series<complex<rational> > &arg_1, const int &arg_2) { 00403 set_output_order (arg_1, arg_2); 00404 } 00405 00406 static void 00407 GLUE_74 (const series<complex<rational> > &arg_1, const int &arg_2) { 00408 set_cancel_order (arg_1, arg_2); 00409 } 00410 00411 static void 00412 GLUE_75 (const series<complex<rational> > &arg_1, const bool &arg_2) { 00413 set_formula_output (arg_1, arg_2); 00414 } 00415 00416 static series<complex<rational> > 00417 GLUE_76 (const tuple<complex<rational> > &arg_1) { 00418 return series<complex<rational> > (as_vector (arg_1)); 00419 } 00420 00421 static series<complex<rational> > 00422 GLUE_77 (const complex<rational> &arg_1) { 00423 return series<complex<rational> > (arg_1); 00424 } 00425 00426 static series<complex<rational> > 00427 GLUE_78 (const polynomial<complex<rational> > &arg_1) { 00428 return series<complex<rational> > (arg_1); 00429 } 00430 00431 static iterator<generic> 00432 GLUE_79 (const series<complex<rational> > &arg_1) { 00433 return as<iterator<generic> > (iterate (arg_1)); 00434 } 00435 00436 static complex<rational> 00437 GLUE_80 (const series<complex<rational> > &arg_1, const int &arg_2) { 00438 return arg_1[arg_2]; 00439 } 00440 00441 static polynomial<complex<rational> > 00442 GLUE_81 (const series<complex<rational> > &arg_1, const int &arg_2, const int &arg_3) { 00443 return range (arg_1, arg_2, arg_3); 00444 } 00445 00446 static series<complex<rational> > 00447 GLUE_82 (const series<complex<rational> > &arg_1) { 00448 return -arg_1; 00449 } 00450 00451 static series<complex<rational> > 00452 GLUE_83 (const series<complex<rational> > &arg_1) { 00453 return square (arg_1); 00454 } 00455 00456 static series<complex<rational> > 00457 GLUE_84 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00458 return arg_1 + arg_2; 00459 } 00460 00461 static series<complex<rational> > 00462 GLUE_85 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00463 return arg_1 - arg_2; 00464 } 00465 00466 static series<complex<rational> > 00467 GLUE_86 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00468 return arg_1 * arg_2; 00469 } 00470 00471 static series<complex<rational> > 00472 GLUE_87 (const complex<rational> &arg_1, const series<complex<rational> > &arg_2) { 00473 return arg_1 + arg_2; 00474 } 00475 00476 static series<complex<rational> > 00477 GLUE_88 (const series<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00478 return arg_1 + arg_2; 00479 } 00480 00481 static series<complex<rational> > 00482 GLUE_89 (const complex<rational> &arg_1, const series<complex<rational> > &arg_2) { 00483 return arg_1 - arg_2; 00484 } 00485 00486 static series<complex<rational> > 00487 GLUE_90 (const series<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00488 return arg_1 - arg_2; 00489 } 00490 00491 static series<complex<rational> > 00492 GLUE_91 (const complex<rational> &arg_1, const series<complex<rational> > &arg_2) { 00493 return arg_1 * arg_2; 00494 } 00495 00496 static series<complex<rational> > 00497 GLUE_92 (const series<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00498 return arg_1 * arg_2; 00499 } 00500 00501 static series<complex<rational> > 00502 GLUE_93 (const series<complex<rational> > &arg_1, const int &arg_2) { 00503 return binpow (arg_1, arg_2); 00504 } 00505 00506 static series<complex<rational> > 00507 GLUE_94 (const series<complex<rational> > &arg_1, const integer &arg_2) { 00508 return binpow (arg_1, arg_2); 00509 } 00510 00511 static series<complex<rational> > 00512 GLUE_95 (const series<complex<rational> > &arg_1) { 00513 return derive (arg_1); 00514 } 00515 00516 static series<complex<rational> > 00517 GLUE_96 (const series<complex<rational> > &arg_1) { 00518 return xderive (arg_1); 00519 } 00520 00521 static series<complex<rational> > 00522 GLUE_97 (const series<complex<rational> > &arg_1, const int &arg_2) { 00523 return dilate (arg_1, arg_2); 00524 } 00525 00526 static series<complex<rational> > 00527 GLUE_98 (const series<complex<rational> > &arg_1, const int &arg_2) { 00528 return lshiftz (arg_1, arg_2); 00529 } 00530 00531 static series<complex<rational> > 00532 GLUE_99 (const series<complex<rational> > &arg_1, const int &arg_2) { 00533 return rshiftz (arg_1, arg_2); 00534 } 00535 00536 static void 00537 GLUE_100 (const series<unknown<rational> > &arg_1, const generic &arg_2) { 00538 set_variable_name (arg_1, arg_2); 00539 } 00540 00541 static void 00542 GLUE_101 (const series<unknown<rational> > &arg_1, const int &arg_2) { 00543 set_output_order (arg_1, arg_2); 00544 } 00545 00546 static void 00547 GLUE_102 (const series<unknown<rational> > &arg_1, const int &arg_2) { 00548 set_cancel_order (arg_1, arg_2); 00549 } 00550 00551 static void 00552 GLUE_103 (const series<unknown<rational> > &arg_1, const bool &arg_2) { 00553 set_formula_output (arg_1, arg_2); 00554 } 00555 00556 static series<unknown<rational> > 00557 GLUE_104 (const tuple<unknown<rational> > &arg_1) { 00558 return series<unknown<rational> > (as_vector (arg_1)); 00559 } 00560 00561 static series<unknown<rational> > 00562 GLUE_105 (const unknown<rational> &arg_1) { 00563 return series<unknown<rational> > (arg_1); 00564 } 00565 00566 static iterator<generic> 00567 GLUE_106 (const series<unknown<rational> > &arg_1) { 00568 return as<iterator<generic> > (iterate (arg_1)); 00569 } 00570 00571 static unknown<rational> 00572 GLUE_107 (const series<unknown<rational> > &arg_1, const int &arg_2) { 00573 return arg_1[arg_2]; 00574 } 00575 00576 static series<unknown<rational> > 00577 GLUE_108 (const series<unknown<rational> > &arg_1) { 00578 return -arg_1; 00579 } 00580 00581 static series<unknown<rational> > 00582 GLUE_109 (const series<unknown<rational> > &arg_1) { 00583 return square (arg_1); 00584 } 00585 00586 static series<unknown<rational> > 00587 GLUE_110 (const series<unknown<rational> > &arg_1, const series<unknown<rational> > &arg_2) { 00588 return arg_1 + arg_2; 00589 } 00590 00591 static series<unknown<rational> > 00592 GLUE_111 (const series<unknown<rational> > &arg_1, const series<unknown<rational> > &arg_2) { 00593 return arg_1 - arg_2; 00594 } 00595 00596 static series<unknown<rational> > 00597 GLUE_112 (const series<unknown<rational> > &arg_1, const series<unknown<rational> > &arg_2) { 00598 return arg_1 * arg_2; 00599 } 00600 00601 static series<unknown<rational> > 00602 GLUE_113 (const unknown<rational> &arg_1, const series<unknown<rational> > &arg_2) { 00603 return arg_1 + arg_2; 00604 } 00605 00606 static series<unknown<rational> > 00607 GLUE_114 (const series<unknown<rational> > &arg_1, const unknown<rational> &arg_2) { 00608 return arg_1 + arg_2; 00609 } 00610 00611 static series<unknown<rational> > 00612 GLUE_115 (const unknown<rational> &arg_1, const series<unknown<rational> > &arg_2) { 00613 return arg_1 - arg_2; 00614 } 00615 00616 static series<unknown<rational> > 00617 GLUE_116 (const series<unknown<rational> > &arg_1, const unknown<rational> &arg_2) { 00618 return arg_1 - arg_2; 00619 } 00620 00621 static series<unknown<rational> > 00622 GLUE_117 (const unknown<rational> &arg_1, const series<unknown<rational> > &arg_2) { 00623 return arg_1 * arg_2; 00624 } 00625 00626 static series<unknown<rational> > 00627 GLUE_118 (const series<unknown<rational> > &arg_1, const unknown<rational> &arg_2) { 00628 return arg_1 * arg_2; 00629 } 00630 00631 static series<unknown<rational> > 00632 GLUE_119 (const series<unknown<rational> > &arg_1, const int &arg_2) { 00633 return binpow (arg_1, arg_2); 00634 } 00635 00636 static series<unknown<rational> > 00637 GLUE_120 (const series<unknown<rational> > &arg_1, const integer &arg_2) { 00638 return binpow (arg_1, arg_2); 00639 } 00640 00641 static series<unknown<rational> > 00642 GLUE_121 (const series<unknown<rational> > &arg_1) { 00643 return derive (arg_1); 00644 } 00645 00646 static series<unknown<rational> > 00647 GLUE_122 (const series<unknown<rational> > &arg_1) { 00648 return xderive (arg_1); 00649 } 00650 00651 static series<unknown<rational> > 00652 GLUE_123 (const series<unknown<rational> > &arg_1, const int &arg_2) { 00653 return dilate (arg_1, arg_2); 00654 } 00655 00656 static series<unknown<rational> > 00657 GLUE_124 (const series<unknown<rational> > &arg_1, const int &arg_2) { 00658 return lshiftz (arg_1, arg_2); 00659 } 00660 00661 static series<unknown<rational> > 00662 GLUE_125 (const series<unknown<rational> > &arg_1, const int &arg_2) { 00663 return rshiftz (arg_1, arg_2); 00664 } 00665 00666 static series<complex<rational> > 00667 GLUE_126 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00668 return arg_1 / arg_2; 00669 } 00670 00671 static series<complex<rational> > 00672 GLUE_127 (const complex<rational> &arg_1, const series<complex<rational> > &arg_2) { 00673 return arg_1 / arg_2; 00674 } 00675 00676 static series<complex<rational> > 00677 GLUE_128 (const series<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00678 return arg_1 / arg_2; 00679 } 00680 00681 static series<complex<rational> > 00682 GLUE_129 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00683 return arg_1 / arg_2; 00684 } 00685 00686 static bool 00687 GLUE_130 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00688 return divides (arg_1, arg_2); 00689 } 00690 00691 static series<complex<rational> > 00692 GLUE_131 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00693 return gcd (arg_1, arg_2); 00694 } 00695 00696 static series<complex<rational> > 00697 GLUE_132 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00698 return lcm (arg_1, arg_2); 00699 } 00700 00701 static series<complex<rational> > 00702 GLUE_133 (const series<complex<rational> > &arg_1) { 00703 return integrate (arg_1); 00704 } 00705 00706 static series<complex<rational> > 00707 GLUE_134 (const series<complex<rational> > &arg_1, const series<complex<rational> > &arg_2) { 00708 return compose (arg_1, arg_2); 00709 } 00710 00711 static series<complex<rational> > 00712 GLUE_135 (const series<complex<rational> > &arg_1) { 00713 return reverse (arg_1); 00714 } 00715 00716 static series<complex<rational> > 00717 GLUE_136 (const series<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00718 return q_difference (arg_1, arg_2); 00719 } 00720 00721 static series<complex<rational> > 00722 GLUE_137 (const series<complex<rational> > &arg_1, const complex<rational> &arg_2) { 00723 return series_shift_default (arg_1, arg_2); 00724 } 00725 00726 static series<complex<rational> > 00727 GLUE_138 (const series<complex<rational> > &arg_1, const complex<rational> &arg_2, const int &arg_3) { 00728 return shift (arg_1, arg_2, arg_3); 00729 } 00730 00731 static series<complex<rational> > 00732 GLUE_139 (const series<integer> &arg_1) { 00733 return as<series<complex<rational> > > (arg_1); 00734 } 00735 00736 static series<unknown<rational> > 00737 GLUE_140 (const series<integer> &arg_1) { 00738 return as<series<unknown<rational> > > (arg_1); 00739 } 00740 00741 static series<complex<rational> > 00742 GLUE_141 (const series<rational> &arg_1) { 00743 return as<series<complex<rational> > > (arg_1); 00744 } 00745 00746 static series<unknown<rational> > 00747 GLUE_142 (const series<rational> &arg_1) { 00748 return as<series<unknown<rational> > > (arg_1); 00749 } 00750 00751 static series<generic> 00752 GLUE_143 (const series<complex<rational> > &arg_1) { 00753 return as<series<generic> > (arg_1); 00754 } 00755 00756 static series<generic> 00757 GLUE_144 (const series<unknown<rational> > &arg_1) { 00758 return as<series<generic> > (arg_1); 00759 } 00760 00761 static series<complex<rational> > 00762 GLUE_145 (const routine &arg_1, const complex<rational> &arg_2) { 00763 return fixed_point_series (arg_1, arg_2); 00764 } 00765 00766 static vector<generic> 00767 GLUE_146 (const routine &arg_1, const vector<complex<rational> > &arg_2) { 00768 return gen_fixed_point_vector_series (arg_1, arg_2); 00769 } 00770 00771 static series<complex<rational> > 00772 GLUE_147 (const routine &arg_1, const complex<rational> &arg_2) { 00773 return integrate_series (arg_1, arg_2); 00774 } 00775 00776 static vector<generic> 00777 GLUE_148 (const routine &arg_1, const vector<complex<rational> > &arg_2) { 00778 return gen_integrate_vector_series (arg_1, arg_2); 00779 } 00780 00781 static series<complex<rational> > 00782 GLUE_149 (const routine &arg_1, const complex<rational> &arg_2) { 00783 return implicit_series (arg_1, arg_2); 00784 } 00785 00786 static vector<generic> 00787 GLUE_150 (const routine &arg_1, const vector<complex<rational> > &arg_2) { 00788 return gen_implicit_vector_series (arg_1, arg_2); 00789 } 00790 00791 void 00792 glue_series_rational () { 00793 static bool done = false; 00794 if (done) return; 00795 done = true; 00796 call_glue (string ("glue_polynomial_rational")); 00797 call_glue (string ("glue_series_integer")); 00798 define_type<series<rational> > (gen (lit ("Series"), lit ("Rational"))); 00799 define ("set_variable_name", GLUE_1); 00800 define ("set_output_order", GLUE_2); 00801 define ("set_cancel_order", GLUE_3); 00802 define ("set_formula_output", GLUE_4); 00803 define ("series", GLUE_5); 00804 define_converter ("upgrade", GLUE_6, PENALTY_INCLUSION); 00805 define_converter ("upgrade", GLUE_7, PENALTY_INCLUSION); 00806 define_converter (":>", GLUE_8, PENALTY_CAST); 00807 define (".[]", GLUE_9); 00808 define (".[]", GLUE_10); 00809 define ("-", GLUE_11); 00810 define ("square", GLUE_12); 00811 define ("+", GLUE_13); 00812 define ("-", GLUE_14); 00813 define ("*", GLUE_15); 00814 define ("+", GLUE_16); 00815 define ("+", GLUE_17); 00816 define ("-", GLUE_18); 00817 define ("-", GLUE_19); 00818 define ("*", GLUE_20); 00819 define ("*", GLUE_21); 00820 define ("^", GLUE_22); 00821 define ("^", GLUE_23); 00822 define ("derive", GLUE_24); 00823 define ("xderive", GLUE_25); 00824 define ("dilate", GLUE_26); 00825 define ("<<", GLUE_27); 00826 define (">>", GLUE_28); 00827 define ("/", GLUE_29); 00828 define ("/", GLUE_30); 00829 define ("/", GLUE_31); 00830 define ("div", GLUE_32); 00831 define ("divides?", GLUE_33); 00832 define ("gcd", GLUE_34); 00833 define ("lcm", GLUE_35); 00834 define ("integrate", GLUE_36); 00835 define ("@", GLUE_37); 00836 define ("reverse", GLUE_38); 00837 define ("q_difference", GLUE_39); 00838 define ("shift", GLUE_40); 00839 define ("shift", GLUE_41); 00840 define ("<=", GLUE_42); 00841 define (">=", GLUE_43); 00842 define ("<", GLUE_44); 00843 define (">", GLUE_45); 00844 define_converter (":>", GLUE_46, PENALTY_INCLUSION); 00845 define_converter (":>", GLUE_47, PENALTY_PROMOTE_GENERIC); 00846 define ("^", GLUE_48); 00847 define ("sqrt", GLUE_49); 00848 define ("exp", GLUE_50); 00849 define ("log", GLUE_51); 00850 define ("cos", GLUE_52); 00851 define ("sin", GLUE_53); 00852 define ("tan", GLUE_54); 00853 define ("arccos", GLUE_55); 00854 define ("arcsin", GLUE_56); 00855 define ("arctan", GLUE_57); 00856 define_type<unknown<rational> > (gen (lit ("Unknown"), lit ("Rational"))); 00857 define_converter ("upgrade", GLUE_58, PENALTY_INCLUSION); 00858 define ("-", GLUE_59); 00859 define ("square", GLUE_60); 00860 define ("+", GLUE_61); 00861 define ("-", GLUE_62); 00862 define ("*", GLUE_63); 00863 define ("*", GLUE_64); 00864 define ("*", GLUE_65); 00865 define ("fixed_point_series", GLUE_66); 00866 define ("fixed_point_series", GLUE_67); 00867 define ("integrate_series", GLUE_68); 00868 define ("integrate_series", GLUE_69); 00869 define ("implicit_series", GLUE_70); 00870 define ("implicit_series", GLUE_71); 00871 define_type<series<complex<rational> > > (gen (lit ("Series"), gen (lit ("Complex"), lit ("Rational")))); 00872 define_type<series<unknown<rational> > > (gen (lit ("Series"), gen (lit ("Unknown"), lit ("Rational")))); 00873 define ("set_variable_name", GLUE_72); 00874 define ("set_output_order", GLUE_73); 00875 define ("set_cancel_order", GLUE_74); 00876 define ("set_formula_output", GLUE_75); 00877 define ("series", GLUE_76); 00878 define_converter ("upgrade", GLUE_77, PENALTY_INCLUSION); 00879 define_converter ("upgrade", GLUE_78, PENALTY_INCLUSION); 00880 define_converter (":>", GLUE_79, PENALTY_CAST); 00881 define (".[]", GLUE_80); 00882 define (".[]", GLUE_81); 00883 define ("-", GLUE_82); 00884 define ("square", GLUE_83); 00885 define ("+", GLUE_84); 00886 define ("-", GLUE_85); 00887 define ("*", GLUE_86); 00888 define ("+", GLUE_87); 00889 define ("+", GLUE_88); 00890 define ("-", GLUE_89); 00891 define ("-", GLUE_90); 00892 define ("*", GLUE_91); 00893 define ("*", GLUE_92); 00894 define ("^", GLUE_93); 00895 define ("^", GLUE_94); 00896 define ("derive", GLUE_95); 00897 define ("xderive", GLUE_96); 00898 define ("dilate", GLUE_97); 00899 define ("<<", GLUE_98); 00900 define (">>", GLUE_99); 00901 define ("set_variable_name", GLUE_100); 00902 define ("set_output_order", GLUE_101); 00903 define ("set_cancel_order", GLUE_102); 00904 define ("set_formula_output", GLUE_103); 00905 define ("series", GLUE_104); 00906 define_converter ("upgrade", GLUE_105, PENALTY_INCLUSION); 00907 define_converter (":>", GLUE_106, PENALTY_CAST); 00908 define (".[]", GLUE_107); 00909 define ("-", GLUE_108); 00910 define ("square", GLUE_109); 00911 define ("+", GLUE_110); 00912 define ("-", GLUE_111); 00913 define ("*", GLUE_112); 00914 define ("+", GLUE_113); 00915 define ("+", GLUE_114); 00916 define ("-", GLUE_115); 00917 define ("-", GLUE_116); 00918 define ("*", GLUE_117); 00919 define ("*", GLUE_118); 00920 define ("^", GLUE_119); 00921 define ("^", GLUE_120); 00922 define ("derive", GLUE_121); 00923 define ("xderive", GLUE_122); 00924 define ("dilate", GLUE_123); 00925 define ("<<", GLUE_124); 00926 define (">>", GLUE_125); 00927 define ("/", GLUE_126); 00928 define ("/", GLUE_127); 00929 define ("/", GLUE_128); 00930 define ("div", GLUE_129); 00931 define ("divides?", GLUE_130); 00932 define ("gcd", GLUE_131); 00933 define ("lcm", GLUE_132); 00934 define ("integrate", GLUE_133); 00935 define ("@", GLUE_134); 00936 define ("reverse", GLUE_135); 00937 define ("q_difference", GLUE_136); 00938 define ("shift", GLUE_137); 00939 define ("shift", GLUE_138); 00940 define_converter (":>", GLUE_139, PENALTY_INCLUSION); 00941 define_converter (":>", GLUE_140, PENALTY_INCLUSION); 00942 define_converter (":>", GLUE_141, PENALTY_INCLUSION); 00943 define_converter (":>", GLUE_142, PENALTY_INCLUSION); 00944 define_converter (":>", GLUE_143, PENALTY_PROMOTE_GENERIC); 00945 define_converter (":>", GLUE_144, PENALTY_PROMOTE_GENERIC); 00946 define ("fixed_point_series", GLUE_145); 00947 define ("fixed_point_series", GLUE_146); 00948 define ("integrate_series", GLUE_147); 00949 define ("integrate_series", GLUE_148); 00950 define ("implicit_series", GLUE_149); 00951 define ("implicit_series", GLUE_150); 00952 } 00953 }