diff options
author | 2014-09-01 16:53:52 +0200 | |
---|---|---|
committer | 2014-09-01 16:53:52 +0200 | |
commit | fbb53b6cbb7f1a7cce2166c9df981b76fdd37f87 (patch) | |
tree | 7f7b6caf3f8fe09d5806a47c784fc56e04b05a32 /Eigen/src/SparseCore/ConservativeSparseSparseProduct.h | |
parent | 85c765957418cd2fd24b46ca3a14e6fcbad43f05 (diff) |
Fix sparse matrix times sparse vector.
Diffstat (limited to 'Eigen/src/SparseCore/ConservativeSparseSparseProduct.h')
-rw-r--r-- | Eigen/src/SparseCore/ConservativeSparseSparseProduct.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h b/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h index 815fdb6d8..535713ec5 100644 --- a/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +++ b/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h @@ -28,6 +28,8 @@ static void conservative_sparse_sparse_product_impl(const Lhs& lhs, const Rhs& r ei_declare_aligned_stack_constructed_variable(bool, mask, rows, 0); ei_declare_aligned_stack_constructed_variable(Scalar, values, rows, 0); ei_declare_aligned_stack_constructed_variable(Index, indices, rows, 0); + + std::memset(mask,0,sizeof(bool)*rows); // estimate the number of non zero entries // given a rhs column containing Y non zeros, we assume that the respective Y columns @@ -155,14 +157,14 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,ColMajor,C { // perform sorted insertion internal::conservative_sparse_sparse_product_impl<Lhs,Rhs,ColMajorMatrix>(lhs, rhs, resCol, true); - res.swap(resCol); + res = resCol.markAsRValue(); } else { // ressort to transpose to sort the entries internal::conservative_sparse_sparse_product_impl<Lhs,Rhs,ColMajorMatrix>(lhs, rhs, resCol, false); RowMajorMatrix resRow(resCol); - res = resRow; + res = resRow.markAsRValue(); } } }; |