[PPL-devel] [GIT] ppl/ppl(sparse_matrices): PIP_Problem: add another version of static function neg_assign_row(), optimized for sparse rows.

Marco Poletti poletti.marco at gmail.com
Tue Mar 9 22:16:06 CET 2010


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

Author: Marco Poletti <poletti.marco at gmail.com>
Date:   Tue Mar  9 22:15:56 2010 +0100

PIP_Problem: add another version of static function neg_assign_row(), optimized for sparse rows.

---

 src/PIP_Tree.cc |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index c14f369..9583548 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -203,7 +203,8 @@ merge_assign(PIP_Tree_Node::matrix_type& x,
   }
 }
 
-// Assigns to row x the negation of row y.
+#ifndef USE_PPL_SPARSE_MATRIX
+
 inline void
 neg_assign_row(PIP_Tree_Node::matrix_row_reference_type x,
                PIP_Tree_Node::matrix_row_const_reference_type y) {
@@ -211,6 +212,21 @@ neg_assign_row(PIP_Tree_Node::matrix_row_reference_type x,
     neg_assign(x[i], y[i]);
 }
 
+#else
+
+// Assigns to row x the negation of row y.
+inline void
+neg_assign_row(PIP_Tree_Node::matrix_row_reference_type x,
+               PIP_Tree_Node::matrix_row_const_reference_type y) {
+  x = y;
+  PIP_Tree_Node::matrix_row_iterator i = x.begin();
+  PIP_Tree_Node::matrix_row_iterator i_end = x.end();
+  for ( ; i!=i_end; ++i)
+    neg_assign((*i).second);
+}
+
+#endif // !defined(USE_PPL_SPARSE_MATRIX)
+
 // Given context row \p y and denominator \p den,
 // to be interpreted as expression expr = y / den,
 // assigns to context row \p x a new value such that




More information about the PPL-devel mailing list