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.
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);
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: