- basic *duplicate() const;
- void print(ostream &os, unsigned upper_precedence=0) const;
- void printraw(ostream &os) const;
- unsigned nops(void) const;
- ex op(int i) const;
- ex &let_op(int i);
- int degree(symbol const &s) const;
- int ldegree(symbol const &s) const;
- ex coeff(symbol const &s, int const n=1) const;
- ex eval(int level=0) const;
- ex evalf(int level=0) const;
- ex normal(lst &sym_lst, lst &repl_lst, int level=0) const;
- ex diff(symbol const & s) const;
- ex subs(lst const & ls, lst const & lr) const;
-
- // non-virtual functions in this class
-public:
- ex convert_to_poly(bool no_order = false) const;
- bool is_compatible_to(const pseries &other) const {return var.compare(other.var) == 0 && point.compare(other.point) == 0;}
- bool is_zero(void) const {return seq.size() == 0;}
- ex add_series(const pseries &other) const;
- ex mul_const(const numeric &other) const;
- ex mul_series(const pseries &other) const;
- ex power_const(const numeric &p, int deg) const;
+ /** Get the expansion variable. */
+ ex get_var(void) const {return var;}
+
+ /** Get the expansion point. */
+ ex get_point(void) const {return point;}
+
+ /** Convert the pseries object to an ordinary polynomial.
+ *
+ * @param no_order flag: discard higher order terms */
+ ex convert_to_poly(bool no_order = false) const;
+
+ /** Check whether series is compatible to another series (expansion
+ * variable and point are the same. */
+ bool is_compatible_to(const pseries &other) const {return var.is_equal(other.var) && point.is_equal(other.point);}
+
+ /** Check whether series has the value zero. */
+ bool is_zero(void) const {return seq.size() == 0;}
+
+ /** Returns true if there is no order term, i.e. the series terminates and
+ * false otherwise. */
+ bool is_terminating(void) const;
+
+ ex add_series(const pseries &other) const;
+ ex mul_const(const numeric &other) const;
+ ex mul_series(const pseries &other) const;
+ ex power_const(const numeric &p, int deg) const;
+ pseries shift_exponents(int deg) const;