diff --git a/src/ExprNode.cc b/src/ExprNode.cc index 2aaf58c70ee6d58331023253208075ba0d16c27d..540c19db80f4ab346a6bc182b6e0f155a1cbd31b 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<VariableNode *>(argsubst_shifted); !vn) - symb_id = datatree.symbol_table.addUnaryOpAuxiliaryVar(this->idx, dynamic_cast<UnaryOpNode *>(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<UnaryOpNode *>(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<UnaryOpNode *>(rit->second))); + neweqs.push_back(datatree.AddEqual(aux_var, aux_def)); subst_table[rit->second] = dynamic_cast<VariableNode *>(aux_var); } else