Browse Source

minor fixes to Eigen adapter

Former-commit-id: 9095bbc9d4
tempestpy_adaptions
dehnert 8 years ago
parent
commit
ec640c12b7
  1. 24
      src/adapters/EigenAdapter.cpp
  2. 15
      src/adapters/EigenAdapter.h

24
src/adapters/EigenAdapter.cpp

@ -1 +1,25 @@
#include "src/adapters/EigenAdapter.h"
namespace storm {
namespace adapters {
template<typename ValueType>
static std::unique_ptr<Eigen::SparseMatrix<ValueType>> toEigenSparseMatrix(storm::storage::SparseMatrix<ValueType> const& matrix) {
// Build a list of triplets and let Eigen care about the insertion.
std::vector<Eigen::Triplet<ValueType>> triplets;
triplets.reserve(matrix.getNonzeroEntryCount());
for (uint64_t row = 0; row < matrix.getRowCount(); ++row) {
for (auto const& element : matrix.getRow(row)) {
triplets.emplace_back(row, element.getColumn(), element.getValue());
}
}
std::unique_ptr<Eigen::SparseMatrix<ValueType>> result = std::make_unique<Eigen::SparseMatrix<ValueType>>(matrix.getRowCount(), matrix.getColumnCount());
result->setFromTriplets(triplets.begin(), triplets.end());
return result;
}
template std::unique_ptr<Eigen::SparseMatrix<double>> toEigenSparseMatrix(storm::storage::SparseMatrix<double> const& matrix);
}
}

15
src/adapters/EigenAdapter.h

@ -16,20 +16,7 @@ namespace storm {
* @return A pointer to a row-major sparse matrix in gmm++ format.
*/
template<class ValueType>
static std::unique_ptr<Eigen::SparseMatrix<ValueType>> toEigenSparseMatrix(storm::storage::SparseMatrix<ValueType> const& matrix) {
std::vector<Eigen::Triplet<ValueType>> triplets;
triplets.reserve(matrix.getNonzeroEntryCount());
for (uint64_t row = 0; row < matrix.getRowCount(); ++row) {
for (auto const& element : matrix.getRow(row)) {
triplets.emplace_back(row, element.getColumn(), element.getValue());
}
}
std::unique_ptr<Eigen::SparseMatrix<ValueType>> result = std::make_unique<Eigen::SparseMatrix<ValueType>>(matrix.getRowCount(), matrix.getColumnCount());
result->setFromTriplets(triplets.begin(), triplets.end());
return result;
}
static std::unique_ptr<Eigen::SparseMatrix<ValueType>> toEigenSparseMatrix(storm::storage::SparseMatrix<ValueType> const& matrix);
};
}
Loading…
Cancel
Save