| 55 | |
| 56 | template<typename T> |
| 57 | static T avg(const std::vector<T> & v) { |
| 58 | if (v.empty()) { |
| 59 | return 0; |
| 60 | } |
| 61 | T sum = std::accumulate(v.begin(), v.end(), T(0)); |
| 62 | return sum / (T)v.size(); |
| 63 | } |
| 64 | |
| 65 | template<typename T> |
| 66 | static T stdev(const std::vector<T> & v) { |