[PPL-devel] [GIT] ppl/ppl(sparse_matrices): PIP_Solution_Node: optimize solve() method for sparse matrices.
Marco Poletti
poletti.marco at gmail.com
Tue May 11 08:59:13 CEST 2010
Module: ppl/ppl
Branch: sparse_matrices
Commit: 44c4824bb28d3d9c8bc263dd11e8ce2741e3396e
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=44c4824bb28d3d9c8bc263dd11e8ce2741e3396e
Author: Marco Poletti <poletti.marco at 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];
More information about the PPL-devel
mailing list