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 |