bindings/python/math/tridiagonal-matrix.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2024 INRIA
3 //
4 
5 #ifndef __pinocchio_python_math_tridiagonal_matrix_hpp__
6 #define __pinocchio_python_math_tridiagonal_matrix_hpp__
7 
10 
11 #include <eigenpy/eigenpy.hpp>
12 #include <eigenpy/memory.hpp>
13 
14 namespace pinocchio
15 {
16  namespace python
17  {
18  namespace bp = boost::python;
19 
20  template<typename TridiagonalSymmetricMatrix>
22  : public boost::python::def_visitor<
23  TridiagonalSymmetricMatrixPythonVisitor<TridiagonalSymmetricMatrix>>
24  {
26  typedef typename TridiagonalSymmetricMatrix::CoeffVectorType CoeffVectorType;
27  typedef typename TridiagonalSymmetricMatrix::PlainMatrixType PlainMatrixType;
28 
29  public:
30  template<class PyClass>
31  void visit(PyClass & cl) const
32  {
33  static const Scalar dummy_precision = Eigen::NumTraits<Scalar>::dummy_precision();
34 
35  cl.def(bp::init<Eigen::DenseIndex>(
36  (bp::arg("self"), bp::arg("size")), "Default constructor from a given size."))
37 #ifndef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
38  .def(bp::self == bp::self)
39  .def(bp::self != bp::self)
40 #endif
41  .def(
42  "diagonal",
43  (CoeffVectorType & (TridiagonalSymmetricMatrix::*)())
44  & TridiagonalSymmetricMatrix::diagonal,
45  bp::arg("self"),
46  "Reference of the diagonal elements of the symmetric tridiagonal matrix.",
47  bp::return_internal_reference<>())
48  .def(
49  "subDiagonal",
50  (CoeffVectorType & (TridiagonalSymmetricMatrix::*)())
51  & TridiagonalSymmetricMatrix::subDiagonal,
52  bp::arg("self"),
53  "Reference of the sub diagonal elements of the symmetric tridiagonal matrix.",
54  bp::return_internal_reference<>())
55 
56  .def(
57  "setIdentity", &TridiagonalSymmetricMatrix::setIdentity, bp::arg("self"),
58  "Set the current tridiagonal matrix to identity.")
59  .def(
60  "setZero", &TridiagonalSymmetricMatrix::setZero, bp::arg("self"),
61  "Set the current tridiagonal matrix to zero.")
62  .def(
63  "setDiagonal", &TridiagonalSymmetricMatrix::template setDiagonal<CoeffVectorType>,
64  bp::args("self", "diagonal"),
65  "Set the current tridiagonal matrix to a diagonal matrix given by the entry vector "
66  "diagonal.")
67  .def(
68  "setRandom", &TridiagonalSymmetricMatrix::setRandom, bp::arg("self"),
69  "Set the current tridiagonal matrix to random.")
70 #ifndef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
71  .def(
72  "isIdentity", &TridiagonalSymmetricMatrix::isIdentity,
73  (bp::arg("self"), bp::arg("prec") = dummy_precision),
74  "Returns true if *this is approximately equal to the identity matrix, within the "
75  "precision given by prec.")
76  .def(
78  (bp::arg("self"), bp::arg("prec") = dummy_precision),
79  "Returns true if *this is approximately equal to the zero matrix, within the "
80  "precision given by prec.")
81  .def(
82  "isDiagonal", &TridiagonalSymmetricMatrix::isDiagonal,
83  (bp::arg("self"), bp::arg("prec") = dummy_precision),
84  "Returns true if *this is approximately equal to the a diagonal matrix, within the "
85  "precision given by prec.")
86 #endif // PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
87  .def("rows", &TridiagonalSymmetricMatrix::rows, bp::arg("self"))
88  .def("cols", &TridiagonalSymmetricMatrix::cols, bp::arg("self"))
89  .def("matrix", &TridiagonalSymmetricMatrix::matrix, bp::arg("self"))
90 
91  .def(bp::self * PlainMatrixType())
92  .def(PlainMatrixType() * bp::self);
93  }
94 
95  static void expose()
96  {
97 #if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION == 6 && EIGENPY_VERSION_AT_LEAST(2, 9, 0)
98  typedef PINOCCHIO_SHARED_PTR_HOLDER_TYPE(TridiagonalSymmetricMatrix) HolderType;
99 #else
100  typedef ::boost::python::detail::not_specified HolderType;
101 #endif
102  bp::class_<TridiagonalSymmetricMatrix, HolderType>(
103  "TridiagonalSymmetricMatrix", "Tridiagonal symmetric matrix.", bp::no_init)
105  }
106  };
107 
108  } // namespace python
109 } // namespace pinocchio
110 
111 #endif // ifndef __pinocchio_python_math_tridiagonal_matrix_hpp__
boost::python
PINOCCHIO_SHARED_PTR_HOLDER_TYPE
#define PINOCCHIO_SHARED_PTR_HOLDER_TYPE(T)
Definition: bindings/python/fwd.hpp:17
eigenpy.hpp
pinocchio::isZero
bool isZero(const Eigen::MatrixBase< MatrixLike > &m, const typename MatrixLike::RealScalar &prec=Eigen::NumTraits< typename MatrixLike::Scalar >::dummy_precision())
Definition: math/matrix.hpp:59
pinocchio::python::Scalar
context::Scalar Scalar
Definition: admm-solver.cpp:29
pinocchio::python::TridiagonalSymmetricMatrixPythonVisitor::Scalar
TridiagonalSymmetricMatrix::Scalar Scalar
Definition: bindings/python/math/tridiagonal-matrix.hpp:25
pinocchio::python::TridiagonalSymmetricMatrixPythonVisitor::PlainMatrixType
TridiagonalSymmetricMatrix::PlainMatrixType PlainMatrixType
Definition: bindings/python/math/tridiagonal-matrix.hpp:27
pinocchio::python::TridiagonalSymmetricMatrixPythonVisitor
Definition: bindings/python/math/tridiagonal-matrix.hpp:21
python
pinocchio::python::TridiagonalSymmetricMatrixPythonVisitor::visit
void visit(PyClass &cl) const
Definition: bindings/python/math/tridiagonal-matrix.hpp:31
tridiagonal-matrix.hpp
pinocchio::python::TridiagonalSymmetricMatrixPythonVisitor::CoeffVectorType
TridiagonalSymmetricMatrix::CoeffVectorType CoeffVectorType
Definition: bindings/python/math/tridiagonal-matrix.hpp:26
cl
cl
memory.hpp
fwd.hpp
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:27
pinocchio::python::TridiagonalSymmetricMatrixPythonVisitor::expose
static void expose()
Definition: bindings/python/math/tridiagonal-matrix.hpp:95


pinocchio
Author(s):
autogenerated on Sun Dec 22 2024 03:41:12