#pragma once #include template class Stats { public: Stats(const std::vector &v): values(v), cached(0) {} ~Stats() {} size_t get_size() const; Tpod get_min() const; Tpod get_max() const; Tpod get_median() const; double get_mean() const; double get_confidence_interval_95() const; double get_confidence_interval_99() const; double get_standard_deviation() const; double get_standard_error() const; double get_variance() const; double get_kurtosis() const; double get_non_parametric_skew() const; double get_t_test(T t) const; double get_t_test(size_t npoints, double mean, double stddev) const; double get_t_test(const Stats &other) const; double get_z_test(const Stats &other) const; double get_test(const Stats &other) const; std::vector get_quantiles(unsigned int quantiles) const; std::vector get_bins(unsigned int bins) const; bool is_same_distribution_95(size_t npoints, double mean, double stddev) const; bool is_same_distribution_95(const Stats &other) const; bool is_same_distribution_99(size_t npoints, double mean, double stddev) const; bool is_same_distribution_99(const Stats &other) const; double get_cdf95(size_t df) const; double get_cdf95(const Stats &other) const; double get_cdf99(size_t df) const; double get_cdf99(const Stats &other) const; private: inline bool is_cached(int bit) const; inline void set_cached(int bit) const; const std::vector &values; mutable uint64_t cached; mutable Tpod min; mutable Tpod max; mutable Tpod median; mutable double mean; mutable double standard_deviation; mutable double standard_error; mutable double variance; mutable double kurtosis; }; #include "stats.inl"