summaryrefslogtreecommitdiff
path: root/include/linux/mean_and_variance.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mean_and_variance.h')
-rw-r--r--include/linux/mean_and_variance.h17
1 files changed, 7 insertions, 10 deletions
diff --git a/include/linux/mean_and_variance.h b/include/linux/mean_and_variance.h
index 9ed79f42..64750501 100644
--- a/include/linux/mean_and_variance.h
+++ b/include/linux/mean_and_variance.h
@@ -3,10 +3,9 @@
#define MEAN_AND_VARIANCE_H_
#include <linux/types.h>
-#include <linux/kernel.h>
#include <linux/limits.h>
+#include <linux/math.h>
#include <linux/math64.h>
-#include <stdlib.h>
#define SQRT_U64_MAX 4294967295ULL
@@ -178,14 +177,12 @@ static inline s64 fast_divpow2(s64 n, u8 d)
*
* see linked pdf equation 12.
*/
-static inline struct mean_and_variance
-mean_and_variance_update(struct mean_and_variance s, s64 v)
-{
- return (struct mean_and_variance) {
- .n = s.n + 1,
- .sum = s.sum + v,
- .sum_squares = u128_add(s.sum_squares, u128_square(abs(v))),
- };
+static inline void
+mean_and_variance_update(struct mean_and_variance *s, s64 v)
+{
+ s->n++;
+ s->sum += v;
+ s->sum_squares = u128_add(s->sum_squares, u128_square(abs(v)));
}
s64 mean_and_variance_get_mean(struct mean_and_variance s);