| 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 |