3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-13 12:28:44 +00:00

fixes in gomory cut

Signed-off-by: Lev <levnach@hotmail.com>
This commit is contained in:
Lev 2018-09-15 17:46:16 -07:00
parent 8c122ba9bd
commit 34bdea750c

View file

@ -55,18 +55,14 @@ class gomory::imp {
mpq new_a;
mpq one_minus_fj = 1 - fj;
if (at_lower(j)) {
mpq fj_over_one_min_f0 = fj / one_minus_f0;
mpq one_minus_fj_over_f0 = one_minus_fj / f0;
new_a = fj_over_one_min_f0 < one_minus_fj_over_f0? fj_over_one_min_f0 : one_minus_fj_over_f0;
new_a = fj < one_minus_f0? fj / one_minus_f0 : one_minus_fj / f0;
m_k.addmul(new_a, lower_bound(j).x);
m_ex.push_justification(column_lower_bound_constraint(j), new_a);
}
else {
mpq fj_over_f0 = fj / f0;
mpq one_minus_fj_over_one_minus_f0 = one_minus_fj / one_minus_f0;
lp_assert(at_upper(j));
// the upper terms are inverted - therefore we have -
new_a = - (fj_over_f0 < one_minus_fj_over_one_minus_f0? fj_over_f0 : one_minus_fj_over_one_minus_f0);
new_a = - (fj < f0? fj / f0 : one_minus_fj / one_minus_f0);
m_k.addmul(new_a, upper_bound(j).x);
m_ex.push_justification(column_upper_bound_constraint(j), new_a);
}