[GIT] ppl/ppl(sparse_matrices): PIP_Solution_Node: fix regression in solve( ), partially reverting commit d7f564.

Module: ppl/ppl Branch: sparse_matrices Commit: d043b85fec828b0bc79f711703c3e2298354e08d URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=d043b85fec828...
Author: Marco Poletti poletti.marco@gmail.com Date: Tue Mar 16 13:44:05 2010 +0100
PIP_Solution_Node: fix regression in solve(), partially reverting commit d7f564.
---
src/PIP_Tree.cc | 22 +++++++++------------- 1 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc index 469386f..e448c5b 100644 --- a/src/PIP_Tree.cc +++ b/src/PIP_Tree.cc @@ -2781,20 +2781,16 @@ PIP_Solution_Node::solve(const PIP_Problem& pip, if (s_pivot_pj != pivot_den) { for (dimension_type i = num_rows; i-- > 0; ) { matrix_row_reference_type s_i = tableau.s[i]; - matrix_row_iterator itr = s_i.find(pj); - if (itr != s_i.end()) { - Coefficient& s_i_pj = (*itr).second; - product = s_i_pj * pivot_den; - if (product % s_pivot_pj != 0) { - // As above, perform matrix scaling. - gcd_assign(gcd, product, s_pivot_pj); - exact_div_assign(scale_factor, s_pivot_pj, gcd); - tableau.scale(scale_factor); - product *= scale_factor; - } - PPL_ASSERT(product % s_pivot_pj == 0); - exact_div_assign(s_i_pj, product, s_pivot_pj); + product = s_i[pj] * pivot_den; + if (product % s_pivot_pj != 0) { + // As above, perform matrix scaling. + gcd_assign(gcd, product, s_pivot_pj); + exact_div_assign(scale_factor, s_pivot_pj, gcd); + tableau.scale(scale_factor); + product *= scale_factor; } + PPL_ASSERT(product % s_pivot_pj == 0); + exact_div_assign(s_i[pj], product, s_pivot_pj); } }
participants (1)
-
Marco Poletti