X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Fpseries.h;h=f2fc759137274c847299f77d976802148871b760;hb=759fd0ecbd27c082d89d69a5f77a71eef046f96a;hp=18baed39f36461792a5849110762f46475a4cded;hpb=e78622a06f749a124b007aa7b969de02fcc9c3d2;p=ginac.git diff --git a/ginac/pseries.h b/ginac/pseries.h index 18baed39..f2fc7591 100644 --- a/ginac/pseries.h +++ b/ginac/pseries.h @@ -3,7 +3,7 @@ * Interface to class for extended truncated power series. */ /* - * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,7 +54,7 @@ public: ex eval(int level=0) const; ex evalf(int level=0) const; ex series(const relational & r, int order, unsigned options = 0) const; - ex subs(const lst & ls, const lst & lr) const; + ex subs(const lst & ls, const lst & lr, bool no_pattern = false) const; ex normal(lst &sym_lst, lst &repl_lst, int level = 0) const; ex expand(unsigned options = 0) const; protected: @@ -101,16 +101,13 @@ protected: ex point; }; -/** Return a reference to the pseries object embedded in an expression. - * The result is undefined if the expression does not contain a pseries - * object at its top level. - * - * @param e expression - * @return reference to pseries object - * @see is_ex_of_type */ -inline const pseries &ex_to_pseries(const ex &e) + +// utility functions + +/** Specialization of is_exactly_a(obj) for pseries objects. */ +template<> inline bool is_exactly_a(const basic & obj) { - return static_cast(*e.bp); + return obj.tinfo()==TINFO_pseries; } /** Convert the pseries object embedded in an expression to an ordinary @@ -119,11 +116,11 @@ inline const pseries &ex_to_pseries(const ex &e) * * @param e expression * @return polynomial expression - * @see is_ex_of_type + * @see is_a<> * @see pseries::convert_to_poly */ inline ex series_to_poly(const ex &e) { - return (static_cast(*e.bp).convert_to_poly(true)); + return (ex_to(e).convert_to_poly(true)); } inline bool is_terminating(const pseries & s)