GCC Code Coverage Report


Directory: ./
File: include/pinocchio/autodiff/casadi/utils/static-if.hpp
Date: 2025-02-12 21:03:38
Exec Total Coverage
Lines: 10 12 83.3%
Branches: 8 16 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2019-2020 INRIA
3 //
4
5 #ifndef __pinocchio_autodiff_casadi_utils_static_if_hpp__
6 #define __pinocchio_autodiff_casadi_utils_static_if_hpp__
7
8 #include "pinocchio/utils/static-if.hpp"
9
10 namespace pinocchio
11 {
12 namespace internal
13 {
14
15 template<typename Scalar, typename ThenType, typename ElseType>
16 struct if_then_else_impl<::casadi::Matrix<Scalar>, ::casadi::Matrix<Scalar>, ThenType, ElseType>
17 {
18 typedef typename internal::traits<if_then_else_impl>::ReturnType ReturnType;
19
20 typedef ::casadi::Matrix<Scalar> CasadiType;
21
22 4226 static inline ReturnType run(
23 const ComparisonOperators op,
24 const CasadiType & lhs_value,
25 const CasadiType & rhs_value,
26 const ThenType & then_value,
27 const ElseType & else_value)
28 {
29
4/6
✓ Branch 0 taken 2318 times.
✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 398 times.
✓ Branch 4 taken 1342 times.
✗ Branch 5 not taken.
4226 switch (op)
30 {
31 2318 case LT:
32
1/2
✓ Branch 2 taken 2318 times.
✗ Branch 3 not taken.
2318 return ::casadi::Matrix<Scalar>::if_else(lhs_value < rhs_value, then_value, else_value);
33 break;
34 168 case LE:
35
1/2
✓ Branch 2 taken 168 times.
✗ Branch 3 not taken.
168 return ::casadi::Matrix<Scalar>::if_else(lhs_value <= rhs_value, then_value, else_value);
36 break;
37 case EQ:
38 return ::casadi::Matrix<Scalar>::if_else(lhs_value == rhs_value, then_value, else_value);
39 break;
40 398 case GE:
41
1/2
✓ Branch 2 taken 398 times.
✗ Branch 3 not taken.
398 return ::casadi::Matrix<Scalar>::if_else(lhs_value >= rhs_value, then_value, else_value);
42 break;
43 1342 case GT:
44
1/2
✓ Branch 2 taken 1342 times.
✗ Branch 3 not taken.
1342 return ::casadi::Matrix<Scalar>::if_else(lhs_value > rhs_value, then_value, else_value);
45 break;
46 }
47 }
48 };
49
50 template<typename Scalar>
51 struct comparison_eq_impl<::casadi::Matrix<Scalar>, ::casadi::Matrix<Scalar>>
52 {
53 typedef ::casadi::Matrix<Scalar> CasadiType;
54
55 static inline bool run(const CasadiType & lhs_value, const CasadiType & rhs_value)
56 {
57 return (lhs_value == rhs_value).is_zero();
58 }
59 };
60
61 } // namespace internal
62 } // namespace pinocchio
63
64 namespace std
65 {
66
67 template<typename Scalar>
68 struct equal_to<::casadi::Matrix<Scalar>>
69 {
70 bool operator()(
71 const ::casadi::Matrix<Scalar> & lhs_value, const ::casadi::Matrix<Scalar> & rhs_value) const
72 {
73 return (lhs_value == rhs_value).is_zero();
74 }
75 };
76 } // namespace std
77
78 #endif // ifndef __pinocchio_autodiff_casadi_utils_static_if_hpp__
79