@@ -1164,7 +1164,8 @@ void fpa2bv_converter::mk_rem(sort * s, expr_ref & x, expr_ref & y, expr_ref & r
1164
1164
SASSERT (m_bv_util.get_bv_size (rndd_exp) == ebits+2 );
1165
1165
SASSERT (m_bv_util.get_bv_size (y_exp_m1) == ebits);
1166
1166
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 ));
1168
1169
rndd_exp_eq_y_exp_m1 = m.mk_eq (rndd_sig_lz, m_bv_util.mk_numeral (2 , ebits+2 ));
1169
1170
dbg_decouple (" fpa2bv_rem_rndd_exp_eq_y_exp_m1" , rndd_exp_eq_y_exp_m1);
1170
1171
@@ -1177,7 +1178,8 @@ void fpa2bv_converter::mk_rem(sort * s, expr_ref & x, expr_ref & y, expr_ref & r
1177
1178
dbg_decouple (" fpa2bv_rem_y_sig_eq_rndd_sig" , y_sig_eq_rndd_sig);
1178
1179
1179
1180
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)),
1181
1183
m.mk_and (rndd_exp_eq_y_exp_m1, y_sig_eq_rndd_sig, m.mk_not (huge_div_is_even)));
1182
1184
dbg_decouple (" fpa2bv_rem_sub_cnd" , sub_cnd);
1183
1185
0 commit comments