]> www.ginac.de Git - ginac.git/commitdiff
implemented relational::subs()
authorChristian Bauer <Christian.Bauer@uni-mainz.de>
Wed, 18 Jun 2003 19:05:08 +0000 (19:05 +0000)
committerChristian Bauer <Christian.Bauer@uni-mainz.de>
Wed, 18 Jun 2003 19:05:08 +0000 (19:05 +0000)
NEWS
ginac/relational.cpp
ginac/relational.h

diff --git a/NEWS b/NEWS
index 59ba650a1b4610730059d8db049d27b6032888ab..aa9c8f171ae97adbbcc0f4da6ed4e3c2571ef111 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,8 @@ This file records noteworthy changes.
 1.1.1 (<date>)
 * lst (and exprseq) provide iterators for read-only element access. For
   sequential access this is one order faster than using op().
+* Implemented relational::subs() (this was done in 1.0.9 but inadvertently
+  omitted from the 1.1 branch).
 
 1.1.0 (3 April 2003)
 * Removed deprecated macros is_ex_a, is_ex_exactly_a and friends for good.
index 24fd7a05a0d8c67606bf5475bf871d0706258f5f..e4696b88b4630c3bcc8837d1517fd6c3f616215d 100644 (file)
@@ -188,6 +188,17 @@ ex relational::eval(int level) const
        return (new relational(lh.eval(level-1),rh.eval(level-1),o))->setflag(status_flags::dynallocated | status_flags::evaluated);
 }
 
+ex relational::subs(const lst & ls, const lst & lr, unsigned options) const
+{
+       const ex & subsed_lh = lh.subs(ls, lr, options);
+       const ex & subsed_rh = rh.subs(ls, lr, options);
+
+       if (!are_ex_trivially_equal(lh, subsed_lh) || !are_ex_trivially_equal(rh, subsed_rh))
+               return relational(subsed_lh, subsed_rh, o).basic::subs(ls, lr, options);
+       else
+               return basic::subs(ls, lr, options);
+}
+
 ex relational::eval_ncmul(const exvector & v) const
 {
        return lh.eval_ncmul(v);
index c8044f581bdd9728a17e4aec4e83671cf6670aa8..ed3dbff6abba7b13ee61d3980527ef8b84805f2f 100644 (file)
@@ -57,6 +57,7 @@ public:
        size_t nops() const;
        ex op(size_t i) const;
        ex map(map_function & f) const;
+       ex subs(const lst & ls, const lst & lr, unsigned options = 0) const;
        ex eval(int level=0) const;
 
 protected: