[GIT] ppl/ppl(sparse_matrices): PIP_Solution_Node: optimize solve() method for sparse matrices.

Module: ppl/ppl Branch: sparse_matrices Commit: 44c4824bb28d3d9c8bc263dd11e8ce2741e3396e URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=44c4824bb28d3...
Author: Marco Poletti poletti.marco@gmail.com Date: Mon May 10 21:32:55 2010 +0200
PIP_Solution_Node: optimize solve() method for sparse matrices.
---
src/PIP_Tree.cc | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc index b6683c8..57f1eb0 100644 --- a/src/PIP_Tree.cc +++ b/src/PIP_Tree.cc @@ -2767,8 +2767,10 @@ PIP_Solution_Node::solve(const PIP_Problem& pip, } PPL_ASSERT(product % s_pivot_pj == 0); exact_div_assign(product, product, s_pivot_pj); - s_i.find_create_hint_assign(j->first, itr); - itr->second -= product; + if (product != 0) { + s_i.find_create_hint_assign(j->first, itr); + itr->second -= product; + } } } } @@ -2793,7 +2795,8 @@ PIP_Solution_Node::solve(const PIP_Problem& pip, } PPL_ASSERT(product % s_pivot_pj == 0); exact_div_assign(product, product, s_pivot_pj); - s_i[j->first] -= product; + if (product != 0) + s_i[j->first] -= product; } } } @@ -2868,8 +2871,10 @@ PIP_Solution_Node::solve(const PIP_Problem& pip, } PPL_ASSERT(product % s_pivot_pj == 0); exact_div_assign(product, product, s_pivot_pj); - t_i.find_create_hint_assign(j->first, k); - k->second -= product; + if (product != 0) { + t_i.find_create_hint_assign(j->first, k); + k->second -= product; + }
// Update row sign. Row_Sign& sign_i = sign[i]; @@ -2912,7 +2917,8 @@ PIP_Solution_Node::solve(const PIP_Problem& pip, } PPL_ASSERT(product % s_pivot_pj == 0); exact_div_assign(product, product, s_pivot_pj); - t_i[j->first] -= product; + if (product != 0) + t_i[j->first] -= product;
// Update row sign. Row_Sign& sign_i = sign[i];
participants (1)
-
Marco Poletti