From 0d7d5f1ae711d767e7e52eea241c49d5f756d264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 19 Jan 2022 15:06:43 +0100 Subject: [PATCH] In case of nested unary ops (e.g. log(log())), ensure that the definition of the external aux var references the internal aux var --- src/ExprNode.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ExprNode.cc b/src/ExprNode.cc index 2aaf58c7..540c19db 100644 --- a/src/ExprNode.cc +++ b/src/ExprNode.cc @@ -3544,15 +3544,15 @@ UnaryOpNode::substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_ } auto argsubst_shifted = argsubst->decreaseLeadsLags(index - base_index); + auto aux_def = buildSimilarUnaryOpNode(argsubst_shifted, datatree); int symb_id; if (auto vn = dynamic_cast(argsubst_shifted); !vn) - symb_id = datatree.symbol_table.addUnaryOpAuxiliaryVar(this->idx, dynamic_cast(rit->second), unary_op); + symb_id = datatree.symbol_table.addUnaryOpAuxiliaryVar(this->idx, aux_def, unary_op); else - symb_id = datatree.symbol_table.addUnaryOpAuxiliaryVar(this->idx, dynamic_cast(rit->second), unary_op, + symb_id = datatree.symbol_table.addUnaryOpAuxiliaryVar(this->idx, aux_def, unary_op, vn->symb_id, vn->lag); aux_var = datatree.AddVariable(symb_id, 0); - neweqs.push_back(datatree.AddEqual(aux_var, - dynamic_cast(rit->second))); + neweqs.push_back(datatree.AddEqual(aux_var, aux_def)); subst_table[rit->second] = dynamic_cast(aux_var); } else