ALFI
Advanced Library for Function Interpolation
Loading...
Searching...
No Matches
stat.h
Go to the documentation of this file.
1#pragma once
2
3#include "../config.h"
4
5#include <cmath>
6
7namespace alfi::util::stat {
22 template <typename Number = DefaultNumber, template <typename, typename...> class Container = DefaultContainer>
23 Number mean(const Container<Number>& container) {
24 if (container.empty()) {
25 return 0;
26 }
27 Number sum = 0;
28 for (const auto& value : container) {
29 sum += value;
30 }
31 return sum / container.size();
32 }
33
48 template <typename Number = DefaultNumber, template <typename, typename...> class Container = DefaultContainer>
49 Number mean_abs(const Container<Number>& container) {
50 if (container.empty()) {
51 return 0;
52 }
53 Number sum = 0;
54 for (const auto& value : container) {
55 sum += std::abs(value);
56 }
57 return sum / container.size();
58 }
59
74 template <typename Number = DefaultNumber, template <typename, typename...> class Container = DefaultContainer>
75 Number mean_square(const Container<Number>& container) {
76 if (container.empty()) {
77 return 0;
78 }
79 Number sum = 0;
80 for (const auto& value : container) {
81 sum += value * value;
82 }
83 return sum / container.size();
84 }
85
100 template <typename Number = DefaultNumber, template <typename, typename...> class Container = DefaultContainer>
101 Number rms(const Container<Number>& container) {
102 return std::sqrt(mean_square(container));
103 }
104
125 template <typename Number = DefaultNumber, template <typename, typename...> class Container = DefaultContainer>
126 Number var(const Container<Number>& container, bool biased = false) {
127 if (container.size() <= 1) {
128 return 0;
129 }
130 const auto m = mean(container);
131 Number sum = 0;
132 for (const auto& value : container) {
133 sum += (value - m) * (value - m);
134 }
135 return sum / (biased ? container.size() : container.size() - 1);
136 }
137}
Definition stat.h:7
Number var(const Container< Number > &container, bool biased=false)
Calculates the variance of the elements in a container.
Definition stat.h:126
Number mean_square(const Container< Number > &container)
Calculates the arithmetic mean the squares of the elements in a container.
Definition stat.h:75
Number rms(const Container< Number > &container)
Calculates the root mean square (RMS) of the elements in a container.
Definition stat.h:101
Number mean_abs(const Container< Number > &container)
Calculates the arithmetic mean of the absolute values of the elements in a container.
Definition stat.h:49
Number mean(const Container< Number > &container)
Calculates the arithmetic mean of the elements in a container.
Definition stat.h:23
ALFI_DEFAULT_NUMBER DefaultNumber
Definition config.h:17
ALFI_DEFAULT_CONTAINER< Number > DefaultContainer
Definition config.h:20