]> www.ginac.de Git - ginac.git/blobdiff - ginac/relational.cpp
- prepared for 1.0.13 release
[ginac.git] / ginac / relational.cpp
index 484799d45bd9b7a1a9065e85fab2575c4f7d7373..d779c632bd49e5bbf8b5bb236deb2b6980c74c01 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of relations between expressions */
 
 /*
- *  GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 Johannes Gutenberg University Mainz, Germany
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -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);