[GIT] ppl/ppl(master): Avoid unnecessary unbounded precision value in floating point steepest edge .

Module: ppl/ppl Branch: master Commit: fbd07c16deb6fa87b4cc8995a548cb53e1a1916b URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=fbd07c16deb6f...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Mon May 11 13:49:40 2009 +0200
Avoid unnecessary unbounded precision value in floating point steepest edge.
---
src/MIP_Problem.cc | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/MIP_Problem.cc b/src/MIP_Problem.cc index 132912b..e26afe6 100644 --- a/src/MIP_Problem.cc +++ b/src/MIP_Problem.cc @@ -857,12 +857,13 @@ PPL::MIP_Problem::process_pending_constraints() {
PPL::dimension_type PPL::MIP_Problem::steepest_edge_float_entering_index() const { - PPL_DIRTY_TEMP0(mpq_class, real_coeff); const dimension_type tableau_num_rows = tableau.num_rows(); assert(tableau_num_rows == base.size()); double challenger_num = 0.0; double challenger_den = 0.0; double current_value = 0.0; + double float_tableau_value = 0.0; + double float_tableau_denum = 0.0; dimension_type entering_index = 0; const int cost_sign = sgn(working_cost[working_cost.size() - 1]); for (dimension_type j = tableau.num_columns() - 1; j-- > 1; ) { @@ -880,10 +881,9 @@ PPL::MIP_Problem::steepest_edge_float_entering_index() const { const Coefficient& tableau_ij = tableau_i[j]; if (tableau_ij != 0) { assert(tableau_i[base[i]] != 0); - assign_r(real_coeff.get_num(), tableau_ij, ROUND_NOT_NEEDED); - assign_r(real_coeff.get_den(), tableau_i[base[i]], ROUND_NOT_NEEDED); - real_coeff.canonicalize(); - double float_tableau_value = real_coeff.get_d(); + assign_r(float_tableau_value, tableau_ij, ROUND_IGNORE); + assign_r(float_tableau_denum, tableau_i[base[i]], ROUND_IGNORE); + float_tableau_value /= float_tableau_denum; challenger_den += float_tableau_value * float_tableau_value; } }
participants (1)
-
Enea Zaffanella