GCC Code Coverage Report


Directory: ./
File: include/pinocchio/bindings/python/math/tridiagonal-matrix.hpp
Date: 2024-08-27 18:20:05
Exec Total Coverage
Lines: 34 34 100.0%
Branches: 44 88 50.0%

Line Branch Exec Source
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
8 #include "pinocchio/bindings/python/fwd.hpp"
9 #include "pinocchio/math/tridiagonal-matrix.hpp"
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>
21 struct TridiagonalSymmetricMatrixPythonVisitor
22 : public boost::python::def_visitor<
23 TridiagonalSymmetricMatrixPythonVisitor<TridiagonalSymmetricMatrix>>
24 {
25 typedef typename TridiagonalSymmetricMatrix::Scalar Scalar;
26 typedef typename TridiagonalSymmetricMatrix::CoeffVectorType CoeffVectorType;
27 typedef typename TridiagonalSymmetricMatrix::PlainMatrixType PlainMatrixType;
28
29 public:
30 template<class PyClass>
31 20 void visit(PyClass & cl) const
32 {
33 static const Scalar dummy_precision = Eigen::NumTraits<Scalar>::dummy_precision();
34
35
3/6
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
20 cl.def(bp::init<Eigen::DenseIndex>(
36
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
40 (bp::arg("self"), bp::arg("size")), "Default constructor from a given size."))
37 #ifndef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
38
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
20 .def(bp::self == bp::self)
39
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
20 .def(bp::self != bp::self)
40 #endif
41
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(
42 "diagonal",
43 (CoeffVectorType & (TridiagonalSymmetricMatrix::*)())
44 & TridiagonalSymmetricMatrix::diagonal,
45
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 bp::arg("self"),
46 "Reference of the diagonal elements of the symmetric tridiagonal matrix.",
47 20 bp::return_internal_reference<>())
48
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(
49 "subDiagonal",
50 (CoeffVectorType & (TridiagonalSymmetricMatrix::*)())
51 & TridiagonalSymmetricMatrix::subDiagonal,
52
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 bp::arg("self"),
53 "Reference of the sub diagonal elements of the symmetric tridiagonal matrix.",
54 20 bp::return_internal_reference<>())
55
56 40 .def(
57
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
40 "setIdentity", &TridiagonalSymmetricMatrix::setIdentity, bp::arg("self"),
58 "Set the current tridiagonal matrix to identity.")
59
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(
60
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
40 "setZero", &TridiagonalSymmetricMatrix::setZero, bp::arg("self"),
61 "Set the current tridiagonal matrix to zero.")
62
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .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
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(
68
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
40 "setRandom", &TridiagonalSymmetricMatrix::setRandom, bp::arg("self"),
69 "Set the current tridiagonal matrix to random.")
70 #ifndef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
71
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(
72 "isIdentity", &TridiagonalSymmetricMatrix::isIdentity,
73
4/8
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
40 (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
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(
77 "isZero", &TridiagonalSymmetricMatrix::isZero,
78
4/8
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
40 (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
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(
82 "isDiagonal", &TridiagonalSymmetricMatrix::isDiagonal,
83
4/8
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
40 (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
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def("rows", &TridiagonalSymmetricMatrix::rows, bp::arg("self"))
88
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def("cols", &TridiagonalSymmetricMatrix::cols, bp::arg("self"))
89
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def("matrix", &TridiagonalSymmetricMatrix::matrix, bp::arg("self"))
90
91
3/6
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 9 not taken.
40 .def(bp::self * PlainMatrixType())
92
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
20 .def(PlainMatrixType() * bp::self);
93 20 }
94
95 20 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 20 bp::class_<TridiagonalSymmetricMatrix, HolderType>(
103 "TridiagonalSymmetricMatrix", "Tridiagonal symmetric matrix.", bp::no_init)
104
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(TridiagonalSymmetricMatrixPythonVisitor());
105 20 }
106 };
107
108 } // namespace python
109 } // namespace pinocchio
110
111 #endif // ifndef __pinocchio_python_math_tridiagonal_matrix_hpp__
112