From 50275f3588b67a5a52eebeb8c6ff17529aff085d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Wed, 11 Dec 2019 19:08:01 +0100 Subject: [PATCH] Simplify x-(-y) in x+y --- src/DataTree.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/DataTree.cc b/src/DataTree.cc index af09e30c..3574b557 100644 --- a/src/DataTree.cc +++ b/src/DataTree.cc @@ -210,6 +210,11 @@ DataTree::AddMinus(expr_t iArg1, expr_t iArg2) if (iArg1 == iArg2) return Zero; + // Simplify x-(-y) in x+y + if (auto uarg2 = dynamic_cast<UnaryOpNode *>(iArg2); + uarg2 && uarg2->op_code == UnaryOpcode::uminus) + return AddPlus(iArg1, uarg2->arg); + return AddBinaryOp(iArg1, BinaryOpcode::minus, iArg2); } -- GitLab