From: Christian Bauer Date: Mon, 27 May 2002 20:47:10 +0000 (+0000) Subject: implemented relational::subs() X-Git-Tag: release_1-0-9~3 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=759fd0ecbd27c082d89d69a5f77a71eef046f96a implemented relational::subs() --- diff --git a/ginac/relational.cpp b/ginac/relational.cpp index 158c4161..bd3b6442 100644 --- a/ginac/relational.cpp +++ b/ginac/relational.cpp @@ -183,6 +183,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, bool no_pattern) const +{ + const ex & subsed_lh = lh.subs(ls, lr, no_pattern); + const ex & subsed_rh = rh.subs(ls, lr, no_pattern); + + 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, no_pattern); + else + return basic::subs(ls, lr, no_pattern); +} + ex relational::simplify_ncmul(const exvector & v) const { return lh.simplify_ncmul(v); diff --git a/ginac/relational.h b/ginac/relational.h index 089b9310..779b1fe8 100644 --- a/ginac/relational.h +++ b/ginac/relational.h @@ -57,6 +57,7 @@ public: unsigned nops() const; ex & let_op(int i); ex eval(int level=0) const; + ex subs(const lst & ls, const lst & lr, bool no_pattern = false) const; ex simplify_ncmul(const exvector & v) const; protected: