[GIT] ppl/ppl(pip): Corrected capacity mismatch bug in PIP_Solution_Node:: solve().

Module: ppl/ppl Branch: pip Commit: 07cdb790656ae87064b7633b0f9b3bdd3e85b446 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=07cdb790656ae...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Sat Jan 30 21:37:50 2010 +0100
Corrected capacity mismatch bug in PIP_Solution_Node::solve().
---
src/PIP_Tree.cc | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc index 3e42b9f..8cf8d29 100644 --- a/src/PIP_Tree.cc +++ b/src/PIP_Tree.cc @@ -1605,8 +1605,10 @@ PIP_Solution_Node::solve(PIP_Tree_Node*& parent_ref, var_column[j_] = var_i;
/* create the identity matrix row corresponding to basic variable j_ */ - Row prs(num_vars, tableau.s_capacity(), Row::Flags()); - Row prt(num_params, tableau.t_capacity(), Row::Flags()); + tableau.s.add_zero_rows(1, Row::Flags()); + Row& prs = tableau.s[num_rows]; + tableau.t.add_zero_rows(1, Row::Flags()); + Row& prt = tableau.t[num_rows]; prs[j_] = tableau.get_denominator(); /* swap it with pivot row which would become identity after pivoting */ prs.swap(tableau.s[i_]); @@ -1681,6 +1683,10 @@ PIP_Solution_Node::solve(PIP_Tree_Node*& parent_ref, } }
+ // Drop rows previously added at end of tableau. + tableau.s.erase_to_end(num_rows); + tableau.t.erase_to_end(num_rows); + /* compute column s[*][j_] : s[k][j_] /= sij */ if (sij != sij_denom) { // Update column only if pivot != 1
participants (1)
-
Enea Zaffanella