Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.

Class template mean

boost::histogram::accumulators::mean — Calculates mean and variance of sample.


// In header: <boost/histogram/accumulators/mean.hpp>

template<typename ValueType> 
class mean {
  // types
  typedef ValueType          value_type;     
  typedef const value_type & const_reference;

  // construct/copy/destruct
  mean() = default;
  template<typename T> mean(const mean< T > &) noexcept;
  mean(const_reference, const_reference, const_reference) noexcept;

  // public member functions
  void operator()(const_reference) noexcept;
  void operator()(const weight_type< value_type > &, const_reference) noexcept;
  mean & operator+=(const mean &) noexcept;
  mean & operator *=(const_reference) noexcept;
  bool operator==(const mean &) const noexcept;
  bool operator!=(const mean &) const noexcept;
  const_reference count() const noexcept;
  const_reference value() const noexcept;
  value_type variance() const noexcept;
  template<typename Archive> void serialize(Archive &, unsigned);


Uses Welfords's incremental algorithm to improve the numerical stability of mean and variance computation.

mean public construct/copy/destruct

  1. mean() = default;
  2. template<typename T> mean(const mean< T > & o) noexcept;
    Allow implicit conversion from mean<T>.
  3. mean(const_reference n, const_reference mean, const_reference variance) noexcept;
    Initialize to external count, mean, and variance.

mean public member functions

  1. void operator()(const_reference x) noexcept;
    Insert sample x.
  2. void operator()(const weight_type< value_type > & w, const_reference x) noexcept;
    Insert sample x with weight w.
  3. mean & operator+=(const mean & rhs) noexcept;
    Add another mean accumulator.
  4. mean & operator *=(const_reference s) noexcept;
    Scale by value.

    This acts as if all samples were scaled by the value.

  5. bool operator==(const mean & rhs) const noexcept;
  6. bool operator!=(const mean & rhs) const noexcept;
  7. const_reference count() const noexcept;
    Return how many samples were accumulated.

    count() should be used to check whether value() and variance() are defined, see documentation of value() and variance(). count() can be used to compute the variance of the mean by dividing variance() by count().

  8. const_reference value() const noexcept;
    Return mean value of accumulated samples.

    The result is undefined, if count() < 1.

  9. value_type variance() const noexcept;
    Return variance of accumulated samples.

    The result is undefined, if count() < 2.

  10. template<typename Archive> void serialize(Archive & ar, unsigned version);