| 56 | |
| 57 | template<typename T> |
| 58 | static inline T stdev(const std::vector<T> &v, size_t ignore_n_first, size_t ignore_n_last) { |
| 59 | if (v.size() <= 1) { |
| 60 | return (T) 0.0; |
| 61 | } |
| 62 | if (v.size() <= ignore_n_first + ignore_n_last) { |
| 63 | return 0; |
| 64 | } |
| 65 | |
| 66 | T mean_ = mean(v, ignore_n_first, ignore_n_last); |
| 67 | T sum = (T) 0.0; |
| 68 | for (auto it = v.begin() + ignore_n_first; it != v.end() - ignore_n_last; it++) { |
| 69 | sum += (*it - mean_) * (*it - mean_); |
| 70 | } |
| 71 | return (T) sqrt(sum / (v.size() - ignore_n_first - ignore_n_last)); |
| 72 | } |
| 73 | |
| 74 | }// namespace mathUtils |
no test coverage detected