Directory: | ./ |
---|---|
File: | include/eiquadprog/eiquadprog-utils.hxx |
Date: | 2024-08-26 22:54:11 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 8 | 10 | 80.0% |
Branches: | 3 | 4 | 75.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | #ifndef EIQUADPROG_UTILS_HPP_ | ||
2 | #define EIQUADPROG_UTILS_HPP_ | ||
3 | |||
4 | #include <Eigen/Core> | ||
5 | #include <iostream> | ||
6 | |||
7 | namespace eiquadprog { | ||
8 | namespace utils { | ||
9 | |||
10 | /// Compute sqrt(a^2 + b^2) | ||
11 | template <typename Scalar> | ||
12 | 19 | inline Scalar distance(Scalar a, Scalar b) { | |
13 | Scalar a1, b1, t; | ||
14 | 19 | a1 = std::abs(a); | |
15 | 19 | b1 = std::abs(b); | |
16 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 10 times.
|
19 | if (a1 > b1) { |
17 | 9 | t = (b1 / a1); | |
18 | 9 | return a1 * std::sqrt(1.0 + t * t); | |
19 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | } else if (b1 > a1) { |
20 | ✗ | t = (a1 / b1); | |
21 | ✗ | return b1 * std::sqrt(1.0 + t * t); | |
22 | } | ||
23 | 10 | return a1 * std::sqrt(2.0); | |
24 | } | ||
25 | |||
26 | template <class Derived> | ||
27 | void print_vector(const char *name, Eigen::MatrixBase<Derived> &x) { | ||
28 | std::cerr << name << x.transpose() << std::endl; | ||
29 | } | ||
30 | template <class Derived> | ||
31 | void print_matrix(const char *name, Eigen::MatrixBase<Derived> &x) { | ||
32 | std::cerr << name << std::endl << x << std::endl; | ||
33 | } | ||
34 | |||
35 | template <class Derived> | ||
36 | void print_vector(const char *name, Eigen::MatrixBase<Derived> &x, int /*n*/) { | ||
37 | print_vector(name, x); | ||
38 | } | ||
39 | template <class Derived> | ||
40 | void print_matrix(const char *name, Eigen::MatrixBase<Derived> &x, int /*n*/) { | ||
41 | print_matrix(name, x); | ||
42 | } | ||
43 | |||
44 | } // namespace utils | ||
45 | } // namespace eiquadprog | ||
46 | |||
47 | #endif | ||
48 |