GCC Code Coverage Report


Directory: ./
File: include/pinocchio/math/taylor-expansion.hpp
Date: 2024-08-27 18:20:05
Exec Total Coverage
Lines: 4 4 100.0%
Branches: 4 8 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2018-2021 INRIA
3 //
4
5 #ifndef __pinocchio_math_taylor_expansion_hpp__
6 #define __pinocchio_math_taylor_expansion_hpp__
7
8 #include "pinocchio/math/fwd.hpp"
9 #include <limits>
10
11 namespace pinocchio
12 {
13
14 ///
15 /// \brief Helper struct to retrieve some useful information for a Taylor series
16 /// expansion according to the a given Scalar type.
17 ///
18 /// \tparam Scalar the Scalar type of the Taylor series expansion.
19 ///
20 template<typename Scalar>
21 struct TaylorSeriesExpansion
22 {
23 ///
24 /// \brief Computes the expected tolerance of the argument of a Taylor series expansion for a
25 /// certain degree
26 /// according to the machine precision of the given input Scalar.
27 ///
28 /// \tparam degree the degree of the Taylor series expansion.
29 ///
30 template<int degree>
31 6678 static Scalar precision()
32 {
33
3/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 18 times.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
6678 static Scalar value =
34
1/2
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
18 math::pow(std::numeric_limits<Scalar>::epsilon(), Scalar(1) / Scalar(degree + 1));
35 6678 return value;
36 }
37
38 static Scalar precision(const int degree)
39 {
40 return math::pow(std::numeric_limits<Scalar>::epsilon(), Scalar(1) / Scalar(degree + 1));
41 }
42 }; // struct TaylorSeriesExpansion
43
44 } // namespace pinocchio
45
46 #endif // ifndef __pinocchio_math_taylor_expansion_hpp__
47