From 99176cca60efb8d7f4ce1bfc48e1e990a6276ad5 Mon Sep 17 00:00:00 2001 From: "Christoph M. Wintersteiger" Date: Mon, 18 Jan 2016 18:00:04 +0000 Subject: [PATCH 1/2] Bugfix for FP model converter. --- src/tactic/fpa/fpa2bv_model_converter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tactic/fpa/fpa2bv_model_converter.cpp b/src/tactic/fpa/fpa2bv_model_converter.cpp index 799083a5f..a41b92b2d 100644 --- a/src/tactic/fpa/fpa2bv_model_converter.cpp +++ b/src/tactic/fpa/fpa2bv_model_converter.cpp @@ -384,7 +384,7 @@ void fpa2bv_model_converter::convert(model * bv_mdl, model * float_mdl) { if (!seen.contains(f)) { TRACE("fpa2bv_mc", tout << "Keeping: " << mk_ismt2_pp(f, m) << std::endl;); - func_interp * val = bv_mdl->get_func_interp(f); + func_interp * val = bv_mdl->get_func_interp(f)->copy(); float_mdl->register_decl(f, val); } } From 4dba5270ad42e632592b484cbae9a17901a81fc1 Mon Sep 17 00:00:00 2001 From: "Christoph M. Wintersteiger" Date: Mon, 18 Jan 2016 18:09:29 +0000 Subject: [PATCH 2/2] Efficiency fix for fp.div. --- src/ast/fpa/fpa2bv_converter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ast/fpa/fpa2bv_converter.cpp b/src/ast/fpa/fpa2bv_converter.cpp index 863d1d8db..1d66b793d 100644 --- a/src/ast/fpa/fpa2bv_converter.cpp +++ b/src/ast/fpa/fpa2bv_converter.cpp @@ -923,7 +923,8 @@ void fpa2bv_converter::mk_div(func_decl * f, unsigned num, expr * const * args, m_bv_util.mk_bv_sub(b_exp_ext, b_lz_ext)); expr_ref quotient(m); - quotient = m.mk_app(m_bv_util.get_fid(), OP_BUDIV, a_sig_ext, b_sig_ext); + // b_sig_ext can't be 0 here, so it's safe to use OP_BUDIV_I + quotient = m.mk_app(m_bv_util.get_fid(), OP_BUDIV_I, a_sig_ext, b_sig_ext); dbg_decouple("fpa2bv_div_quotient", quotient);