blob: cc6ee3a9df07c9808294e2c91ce4fff2fcb7552e [file]
// SPDX-FileCopyrightText: 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
// SPDX-FileCopyrightText: The Eigen Authors
// SPDX-License-Identifier: MPL-2.0
#ifndef EIGEN_SPARSE_TEST_HELPERS_H
#define EIGEN_SPARSE_TEST_HELPERS_H
#include <type_traits>
#include <Eigen/SparseCore>
namespace Eigen {
template <typename T, std::enable_if_t<(T::Flags & RowMajorBit) != 0, int> = 0>
auto innervec(T& matrix, Index index) -> decltype(matrix.row(index)) {
return matrix.row(index);
}
template <typename T, std::enable_if_t<(T::Flags & RowMajorBit) == 0, int> = 0>
auto innervec(T& matrix, Index index) -> decltype(matrix.col(index)) {
return matrix.col(index);
}
template <typename T>
typename T::Map make_map(T& matrix) {
return typename T::Map(matrix.rows(), matrix.cols(), matrix.nonZeros(), matrix.outerIndexPtr(),
matrix.innerIndexPtr(), matrix.valuePtr(), matrix.innerNonZeroPtr());
}
template <typename T, std::enable_if_t<(T::Flags & RowMajorBit) != 0, int> = 0>
auto innerpanel(T& matrix, Index start, Index size) -> decltype(matrix.middleRows(start, size)) {
return matrix.middleRows(start, size);
}
template <typename T, std::enable_if_t<(T::Flags & RowMajorBit) == 0, int> = 0>
auto innerpanel(T& matrix, Index start, Index size) -> decltype(matrix.middleCols(start, size)) {
return matrix.middleCols(start, size);
}
template <typename MatrixType>
void init_sparse_diagonal(MatrixType& matrix) {
using Scalar = typename MatrixType::Scalar;
matrix.resize(4, 4);
matrix.insert(0, 0) = Scalar(10);
matrix.insert(1, 1) = Scalar(20);
matrix.insert(2, 2) = Scalar(30);
matrix.insert(3, 3) = Scalar(40);
matrix.makeCompressed();
}
} // namespace Eigen
#endif // EIGEN_SPARSE_TEST_HELPERS_H