3#ifndef COPP_CPP_WITH_EIGEN
4#define COPP_CPP_WITH_EIGEN 1
7#if !COPP_CPP_WITH_EIGEN
8#error "copp/eigen.hpp requires COPP_CPP_WITH_EIGEN=1"
19 using ColMajorMatrix = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor>;
21 using RowMajorMatrix = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
23 using Vector = Eigen::Matrix<double, Eigen::Dynamic, 1>;
37 if (matrix.innerStride() != 1)
43 static_cast<std::size_t
>(matrix.rows()),
44 static_cast<std::size_t
>(matrix.cols()),
45 static_cast<std::size_t
>(matrix.outerStride()));
55 if (matrix.innerStride() != 1)
61 static_cast<std::size_t
>(matrix.rows()),
62 static_cast<std::size_t
>(matrix.cols()),
64 static_cast<std::size_t
>(matrix.outerStride()));
70 if (vector.innerStride() != 1)
81 inline Eigen::Map<ColMajorMatrix>
map(
Matrix &matrix)
83 return Eigen::Map<ColMajorMatrix>(
85 static_cast<Eigen::Index
>(matrix.
rows()),
86 static_cast<Eigen::Index
>(matrix.
cols()));
90 inline Eigen::Map<const ColMajorMatrix>
map(
const Matrix &matrix)
92 return Eigen::Map<const ColMajorMatrix>(
94 static_cast<Eigen::Index
>(matrix.
rows()),
95 static_cast<Eigen::Index
>(matrix.
cols()));
Lightweight owned column-major matrix.
std::size_t cols() const noexcept
std::size_t rows() const noexcept
Non-owning view of a two-dimensional double matrix.
static constexpr MatrixView strided_column_major(const double *data, std::size_t rows, std::size_t cols, std::size_t leading_dim) noexcept
Non-owning view of a contiguous one-dimensional array.
Optional Eigen adapters that convert Eigen objects to COPP matrix views or map COPP-owned matrices wi...
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > ColMajorMatrix
Dynamic column-major Eigen matrix type matching copp::Matrix storage.
ColMajorMatrix copy(const Matrix &matrix)
Copy a COPP matrix into an owning Eigen column-major matrix.
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
Dynamic Eigen vector accepted by Span adapters.
Eigen::Map< ColMajorMatrix > map(Matrix &matrix)
Map a mutable COPP matrix into Eigen without copying.
Span< const double > span(const Eigen::Ref< const Vector > &vector)
Borrow a contiguous Eigen vector as Span<const double>.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > RowMajorMatrix
Dynamic row-major Eigen matrix accepted by input adapters.
MatrixView matrix_view(const Eigen::Ref< const ColMajorMatrix > &matrix)
Borrow a column-major Eigen matrix as a COPP matrix view.
@ Error
Throw copp::Error when any query sample is outside [s_min, s_max].