]> www.ginac.de Git - ginac.git/blobdiff - ginac/pseries.h
- first implementation of pattern matching
[ginac.git] / ginac / pseries.h
index 20005473baada848c5e8306a85bd4bb450bc0639..72586eaf96648cdff54627260afc8a1cc08c766d 100644 (file)
@@ -42,20 +42,19 @@ public:
 
        // functions overriding virtual functions from base classes
 public:
-       void print(std::ostream &os, unsigned upper_precedence = 0) const;
-       void printraw(std::ostream &os) const;
-       void printtree(std::ostream & os, unsigned indent) const;
+       void print(const print_context & c, unsigned level = 0) const;
+       unsigned precedence(void) const {return 38;} // for clarity just below add::precedence
        unsigned nops(void) const;
        ex op(int i) const;
        ex &let_op(int i);
-       int degree(const symbol &s) const;
-       int ldegree(const symbol &s) const;
-       ex coeff(const symbol &s, int n = 1) const;
-       ex collect(const symbol &s) const;
+       int degree(const ex &s) const;
+       int ldegree(const ex &s) const;
+       ex coeff(const ex &s, int n = 1) const;
+       ex collect(const ex &s, bool distributed = false) const;
        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:
@@ -63,10 +62,28 @@ protected:
 
        // non-virtual functions in this class
 public:
+       /** 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;
-       bool is_compatible_to(const pseries &other) const {return var.compare(other.var) == 0 && point.compare(other.point) == 0;}
+
+       /** 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;
@@ -82,8 +99,6 @@ protected:
 
        /** Expansion point */
        ex point;
-
-       static unsigned precedence;
 };
 
 /** Return a reference to the pseries object embedded in an expression.