Skip to content

Commit 423fb73

Browse files
author
Christoph M. Wintersteiger
committed
Fix for fp.rem. Pertains to #2381.
1 parent f22d6e3 commit 423fb73

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/ast/fpa/fpa2bv_converter.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,8 @@ void fpa2bv_converter::mk_rem(sort * s, expr_ref & x, expr_ref & y, expr_ref & r
11641164
SASSERT(m_bv_util.get_bv_size(rndd_exp) == ebits+2);
11651165
SASSERT(m_bv_util.get_bv_size(y_exp_m1) == ebits);
11661166

1167-
expr_ref rndd_exp_eq_y_exp_m1(m), y_sig_le_rndd_sig(m);
1167+
expr_ref rndd_exp_eq_y_exp(m), rndd_exp_eq_y_exp_m1(m), y_sig_le_rndd_sig(m);
1168+
rndd_exp_eq_y_exp = m.mk_eq(rndd_sig_lz, m_bv_util.mk_numeral(1, ebits+2));
11681169
rndd_exp_eq_y_exp_m1 = m.mk_eq(rndd_sig_lz, m_bv_util.mk_numeral(2, ebits+2));
11691170
dbg_decouple("fpa2bv_rem_rndd_exp_eq_y_exp_m1", rndd_exp_eq_y_exp_m1);
11701171

@@ -1177,7 +1178,8 @@ void fpa2bv_converter::mk_rem(sort * s, expr_ref & x, expr_ref & y, expr_ref & r
11771178
dbg_decouple("fpa2bv_rem_y_sig_eq_rndd_sig", y_sig_eq_rndd_sig);
11781179

11791180
expr_ref sub_cnd(m);
1180-
sub_cnd = m.mk_or(m.mk_and(rndd_exp_eq_y_exp_m1, y_sig_le_rndd_sig, m.mk_not(y_sig_eq_rndd_sig)),
1181+
sub_cnd = m.mk_or(m.mk_and(rndd_exp_eq_y_exp, y_sig_le_rndd_sig),
1182+
m.mk_and(rndd_exp_eq_y_exp_m1, y_sig_le_rndd_sig, m.mk_not(y_sig_eq_rndd_sig)),
11811183
m.mk_and(rndd_exp_eq_y_exp_m1, y_sig_eq_rndd_sig, m.mk_not(huge_div_is_even)));
11821184
dbg_decouple("fpa2bv_rem_sub_cnd", sub_cnd);
11831185

0 commit comments

Comments
 (0)