sparse_matrix.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2024 CNRS INRIA
3  */
4 
5 #include <iostream>
6 
7 #include "eigenpy/eigenpy.hpp"
8 
9 template <typename Scalar, int Options>
10 Eigen::SparseMatrix<Scalar, Options> vector1x1(const Scalar& value) {
11  typedef Eigen::SparseMatrix<Scalar, Options> ReturnType;
12  ReturnType mat(1, 1);
13  mat.coeffRef(0, 0) = value;
14  mat.makeCompressed();
15  return mat;
16 }
17 
18 template <typename Scalar, int Options>
19 Eigen::SparseMatrix<Scalar, Options> matrix1x1(const Scalar& value) {
20  typedef Eigen::SparseMatrix<Scalar, Options> ReturnType;
21  ReturnType mat(1, 1);
22  mat.coeffRef(0, 0) = value;
23  mat.makeCompressed();
24  return mat;
25 }
26 
27 template <typename Scalar, int Options>
28 Eigen::SparseMatrix<Scalar, Options> diagonal(
29  const Eigen::Ref<const Eigen::Matrix<Scalar, Eigen::Dynamic, 1> >&
30  diag_values) {
31  typedef Eigen::SparseMatrix<Scalar, Options> ReturnType;
32  ReturnType mat(diag_values.size(), diag_values.size());
33  for (Eigen::Index k = 0; k < diag_values.size(); ++k)
34  mat.coeffRef(k, k) = diag_values[k];
35  mat.makeCompressed();
36  return mat;
37 }
38 
39 template <typename Scalar, int Options>
40 Eigen::SparseMatrix<Scalar, Options> emptyVector() {
41  return Eigen::SparseMatrix<Scalar, Options>();
42 }
43 
44 template <typename Scalar, int Options>
45 Eigen::SparseMatrix<Scalar, Options> emptyMatrix() {
46  return Eigen::SparseMatrix<Scalar, Options>();
47 }
48 
49 template <typename Scalar, int Options>
50 void print(const Eigen::SparseMatrix<Scalar, Options>& mat) {
51  std::cout << mat << std::endl;
52 }
53 
54 template <typename Scalar, int Options>
55 Eigen::SparseMatrix<Scalar, Options> copy(
56  const Eigen::SparseMatrix<Scalar, Options>& mat) {
57  return mat;
58 }
59 
60 template <typename Scalar, int Options>
62  namespace bp = boost::python;
63  bp::def("vector1x1", vector1x1<Scalar, Options>);
64  bp::def("matrix1x1", matrix1x1<Scalar, Options>);
65 
66  bp::def("print", print<Scalar, Options>);
67  bp::def("copy", copy<Scalar, Options>);
68  bp::def("diagonal", diagonal<Scalar, Options>);
69 
70  bp::def("emptyVector", emptyVector<Scalar, Options>);
71  bp::def("emptyMatrix", emptyMatrix<Scalar, Options>);
72 }
73 
74 BOOST_PYTHON_MODULE(sparse_matrix) {
75  namespace bp = boost::python;
77 
78  expose_functions<double, Eigen::ColMajor>();
79  expose_functions<double, Eigen::RowMajor>();
80 }
boost::python
Definition: alignment.hpp:49
print
void print(const Eigen::SparseMatrix< Scalar, Options > &mat)
Definition: sparse_matrix.cpp:50
test_sparse_matrix.diag_values
diag_values
Definition: test_sparse_matrix.py:18
emptyMatrix
Eigen::SparseMatrix< Scalar, Options > emptyMatrix()
Definition: sparse_matrix.cpp:45
BOOST_PYTHON_MODULE
BOOST_PYTHON_MODULE(sparse_matrix)
Definition: sparse_matrix.cpp:74
eigenpy::enableEigenPy
void EIGENPY_DLLAPI enableEigenPy()
Definition: eigenpy.cpp:42
test_eigen_ref.mat
mat
Definition: test_eigen_ref.py:137
test_matrix.value
float value
Definition: test_matrix.py:161
copy
Eigen::SparseMatrix< Scalar, Options > copy(const Eigen::SparseMatrix< Scalar, Options > &mat)
Definition: sparse_matrix.cpp:55
eigenpy.hpp
matrix1x1
Eigen::SparseMatrix< Scalar, Options > matrix1x1(const Scalar &value)
Definition: sparse_matrix.cpp:19
vector1x1
Eigen::SparseMatrix< Scalar, Options > vector1x1(const Scalar &value)
Definition: sparse_matrix.cpp:10
diagonal
Eigen::SparseMatrix< Scalar, Options > diagonal(const Eigen::Ref< const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > > &diag_values)
Definition: sparse_matrix.cpp:28
emptyVector
Eigen::SparseMatrix< Scalar, Options > emptyVector()
Definition: sparse_matrix.cpp:40
expose_functions
void expose_functions()
Definition: sparse_matrix.cpp:61


eigenpy
Author(s): Justin Carpentier, Nicolas Mansard
autogenerated on Fri Apr 26 2024 02:17:35