| 47 | double mean() const { return static_cast<double>(sum) / count; } |
| 48 | |
| 49 | double m2() const { |
| 50 | // calculate m2 = square_sum - sum * sum / count |
| 51 | // decompose `sum * sum / count` into integers and fractions |
| 52 | const int128_t sum_square = static_cast<int128_t>(sum) * sum; |
| 53 | const int128_t integers = sum_square / count; |
| 54 | const double fractions = static_cast<double>(sum_square % count) / count; |
| 55 | return static_cast<double>(square_sum - integers) - fractions; |
| 56 | } |
| 57 | }; |
| 58 | |
| 59 | enum class StatisticType { Var, Std, Skew, Kurtosis }; |
no outgoing calls
no test coverage detected