| 878 | } |
| 879 | |
| 880 | static double median(const std::vector<double>& v) |
| 881 | { |
| 882 | size_t mid = v.size() / 2; |
| 883 | if(v.size() % 2 == 0) |
| 884 | { |
| 885 | return (v[mid - 1] + v[mid]) / 2.0; |
| 886 | } |
| 887 | else |
| 888 | { |
| 889 | return v[mid]; |
| 890 | } |
| 891 | } |
| 892 | |
| 893 | static double percentile(const std::vector<double>& v, double percentile) |
| 894 | { |