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