Support util::statistics_lite::push(value,count)

This commit is contained in:
Nikita Lisitsa 2022-06-26 16:14:51 +03:00
parent dc232b8fba
commit f3d005b4f3

View file

@ -44,7 +44,7 @@ namespace psemek::util
template <typename T> template <typename T>
struct statistics_lite struct statistics_lite
{ {
void push(T const & value); void push(T const & value, std::size_t count = 1);
std::size_t count() const { return count_; } std::size_t count() const { return count_; }
T mean() const; T mean() const;
@ -64,11 +64,11 @@ namespace psemek::util
}; };
template <typename T> template <typename T>
void statistics_lite<T>::push(T const & value) void statistics_lite<T>::push(T const & value, std::size_t count)
{ {
++count_; count_ += count;
sum_ += value; sum_ += value * static_cast<T>(count);
sum_sqr_ += value * value; sum_sqr_ += value * value * static_cast<T>(count);
min_ = std::min(min_, value); min_ = std::min(min_, value);
max_ = std::max(max_, value); max_ = std::max(max_, value);
} }