| 109 | |
| 110 | template <typename Scalar> |
| 111 | double MedianAbs(const std::vector<Scalar>& vector) { |
| 112 | EXPECT_GT(vector.size(), 0); |
| 113 | std::vector<double> vector_abs; |
| 114 | vector_abs.resize(vector.size()); |
| 115 | for (int i = 0; i < vector.size(); i++) { |
| 116 | vector_abs[i] = std::abs(static_cast<double>(vector[i])); |
| 117 | } |
| 118 | std::sort(std::begin(vector_abs), std::end(vector_abs)); |
| 119 | return vector_abs[vector_abs.size() / 2]; |
| 120 | } |
| 121 | |
| 122 | template <typename Scalar> |
| 123 | void Clamp(const std::vector<Scalar>& src, Scalar clamp_min, Scalar clamp_max, |
no test coverage detected