13#if !defined(ULTRA_DISTRIBUTION_H)
14#define ULTRA_DISTRIBUTION_H
16#include "utility/assert.h"
17#include "utility/log.h"
18#include "utility/misc.h"
34template<ArithmeticFloatingType T>
38 distribution() =
default;
44 [[nodiscard]]
bool empty() const noexcept;
45 [[nodiscard]]
std::
size_t size() const noexcept;
46 [[nodiscard]]
double entropy() const;
47 [[nodiscard]] T
max() const noexcept;
48 [[nodiscard]] T
mean() const noexcept;
49 [[nodiscard]] T
min() const noexcept;
50 [[nodiscard]] const
std::map<T,
std::uintmax_t> &seen() const;
51 [[nodiscard]] T standard_deviation() const;
54 void merge(const distribution<T> &);
56 [[nodiscard]]
bool is_valid() const;
59 bool load(
std::istream &);
60 bool save(
std::ostream &) const;
64 void update_variance(T);
67 std::map<T,
std::uintmax_t> seen_ {};
76 std::size_t size_ {0};
void clear()
Definition distribution.h:25
T min() const noexcept
Definition distribution.h:62
T variance() const
Definition distribution.h:82
void add(T)
Definition distribution.h:97
T max() const noexcept
Definition distribution.h:52
std::size_t size() const noexcept
Definition distribution.h:43
bool empty() const noexcept
Definition distribution.h:34
T mean() const noexcept
Definition distribution.h:72