diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-11-26 17:09:59 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2022-11-26 17:09:59 -0500 |
commit | 934a84dfaf719af82dadbbe0e2480baff03c905b (patch) | |
tree | 22deb77e752f90c842ac2f8dce91f5a602afd49d /linux | |
parent | 48eefee7495c6e145f3fcfe6ab83f9e8bc27a1ec (diff) |
Update bcachefs sources to 5963d1b1a4 bcacehfs: Fix bch2_get_alloc_in_memory_pos()
Diffstat (limited to 'linux')
-rw-r--r-- | linux/mean_and_variance.c | 32 |
1 files changed, 2 insertions, 30 deletions
diff --git a/linux/mean_and_variance.c b/linux/mean_and_variance.c index aa95db12..55d46c9d 100644 --- a/linux/mean_and_variance.c +++ b/linux/mean_and_variance.c @@ -67,13 +67,7 @@ s64 fast_divpow2(s64 n, u8 d) */ struct mean_and_variance mean_and_variance_update(struct mean_and_variance s1, s64 v1) { - struct mean_and_variance s2; - u64 v2 = abs(v1); - - s2.n = s1.n + 1; - s2.sum = s1.sum + v1; - s2.sum_squares = u128_add(s1.sum_squares, u128_square(v2)); - return s2; + return mean_and_variance_update_inlined(s1, v1); } EXPORT_SYMBOL_GPL(mean_and_variance_update); @@ -120,29 +114,7 @@ EXPORT_SYMBOL_GPL(mean_and_variance_get_stddev); struct mean_and_variance_weighted mean_and_variance_weighted_update(struct mean_and_variance_weighted s1, s64 x) { - struct mean_and_variance_weighted s2; - // previous weighted variance. - u64 var_w0 = s1.variance; - u8 w = s2.w = s1.w; - // new value weighted. - s64 x_w = x << w; - s64 diff_w = x_w - s1.mean; - s64 diff = fast_divpow2(diff_w, w); - // new mean weighted. - s64 u_w1 = s1.mean + diff; - - BUG_ON(w % 2 != 0); - - if (!s1.init) { - s2.mean = x_w; - s2.variance = 0; - } else { - s2.mean = u_w1; - s2.variance = ((var_w0 << w) - var_w0 + ((diff_w * (x_w - u_w1)) >> w)) >> w; - } - s2.init = true; - - return s2; + return mean_and_variance_weighted_update_inlined(s1, x); } EXPORT_SYMBOL_GPL(mean_and_variance_weighted_update); |