[PPL-devel] [GIT] ppl/ppl(sparse_matrices): Prefer neg_assign to the use of unary minus on Coefficient objects.

Enea Zaffanella zaffanella at cs.unipr.it
Fri Sep 17 20:59:48 CEST 2010


Module: ppl/ppl
Branch: sparse_matrices
Commit: f1b3b29529f9602a0ea7e36b7a5ae62518e125dc
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=f1b3b29529f9602a0ea7e36b7a5ae62518e125dc

Author: Enea Zaffanella <zaffanella at cs.unipr.it>
Date:   Fri Sep 17 16:35:35 2010 +0200

Prefer neg_assign to the use of unary minus on Coefficient objects.
Use add_mul_assign even in code only activated during debugging.

---

 src/MIP_Problem.cc |    6 +++---
 src/PIP_Tree.cc    |   10 +++++-----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/MIP_Problem.cc b/src/MIP_Problem.cc
index 33ead88..78e5ff1 100644
--- a/src/MIP_Problem.cc
+++ b/src/MIP_Problem.cc
@@ -1730,12 +1730,12 @@ PPL::MIP_Problem::compute_generator() const {
         Coefficient_traits::const_reference t_row_split_var
           = t_row.get(split_var);
         if (t_row_split_var > 0) {
-          split_num = -t_row.get(0);
+          neg_assign(split_num, t_row.get(0));
           split_den = t_row_split_var;
         }
         else {
           split_num = t_row.get(0);
-          split_den = -t_row_split_var;
+          neg_assign(split_den, t_row_split_var);
         }
         // We compute the lcm to compute subsequently the difference
         // between the 2 variables.
@@ -1808,7 +1808,7 @@ PPL::MIP_Problem::second_phase() {
     const dimension_type split_var = mapping[i].second;
     working_cost[original_var] = new_cost[i];
     if (mapping[i].second != 0)
-      working_cost[split_var] = - new_cost[i];
+      neg_assign(working_cost[split_var], new_cost[i]);
   }
   // Here the first phase problem succeeded with optimum value zero.
   // Express the old cost function in terms of the computed base.
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index a5af8f7..2e102d4 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -2691,7 +2691,7 @@ PIP_Solution_Node::solve(const PIP_Problem& pip,
         dimension_type j = 1;
         for (Variables_Set::const_iterator p = all_params.begin(),
                p_end = all_params.end(); p != p_end; ++p, ++j)
-          expr += t_test.get(j) * Variable(*p);
+          add_mul_assign(expr, t_test.get(j), Variable(*p));
         using namespace IO_Operators;
         std::cerr << "Found mixed parameter sign row: " << best_i << ".\n"
                   << "Solution depends on sign of parameter "
@@ -3108,8 +3108,8 @@ PIP_Solution_Node::generate_cut(const dimension_type index,
         Linear_Expression expr1(ctx1.get(0));
         Linear_Expression expr2(ctx2.get(0));
         for (dimension_type j = 1; j <= num_params; ++j, ++p) {
-          expr1 += ctx1.get(j) * Variable(*p);
-          expr2 += ctx2.get(j) * Variable(*p);
+          add_mul_assign(expr1, ctx1.get(j), Variable(*p));
+          add_mul_assign(expr2, ctx2.get(j), Variable(*p));
         }
         std::cout << "Inserting into context: "
                   << Constraint(expr1 >= 0) << " ; "
@@ -3158,9 +3158,9 @@ PIP_Solution_Node::generate_cut(const dimension_type index,
     dimension_type si = 0;
     for (dimension_type j = 0; j < space_dimension; ++j) {
       if (parameters.count(j) == 1)
-        expr += cut_t.get(ti++) * Variable(j);
+        add_mul_assign(expr, cut_t.get(ti++), Variable(j));
       else
-        expr += cut_s.get(si++) * Variable(j);
+        add_mul_assign(expr, cut_s.get(si++), Variable(j));
     }
     std::cout << "Adding cut: "
               << Constraint(expr + cut_t.get(0) >= 0)




More information about the PPL-devel mailing list