@@ -31,53 +31,59 @@ static void mean_and_variance_basic_test(struct kunit *test)
31
31
32
32
static void mean_and_variance_weighted_test (struct kunit * test )
33
33
{
34
- struct mean_and_variance_weighted s = { . weight = 2 };
34
+ struct mean_and_variance_weighted s = { };
35
35
36
- mean_and_variance_weighted_update (& s , 10 );
37
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), 10 );
38
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 0 );
36
+ mean_and_variance_weighted_update (& s , 10 , false, 2 );
37
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 2 ), 10 );
38
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 2 ), 0 );
39
39
40
- mean_and_variance_weighted_update (& s , 20 );
41
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), 12 );
42
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 18 );
40
+ mean_and_variance_weighted_update (& s , 20 , true, 2 );
41
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 2 ), 12 );
42
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 2 ), 18 );
43
43
44
- mean_and_variance_weighted_update (& s , 30 );
45
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), 16 );
46
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 72 );
44
+ mean_and_variance_weighted_update (& s , 30 , true, 2 );
45
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 2 ), 16 );
46
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 2 ), 72 );
47
47
48
- s = (struct mean_and_variance_weighted ) { . weight = 2 };
48
+ s = (struct mean_and_variance_weighted ) { };
49
49
50
- mean_and_variance_weighted_update (& s , -10 );
51
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), -10 );
52
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 0 );
50
+ mean_and_variance_weighted_update (& s , -10 , false, 2 );
51
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 2 ), -10 );
52
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 2 ), 0 );
53
53
54
- mean_and_variance_weighted_update (& s , -20 );
55
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), -12 );
56
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 18 );
54
+ mean_and_variance_weighted_update (& s , -20 , true, 2 );
55
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 2 ), -12 );
56
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 2 ), 18 );
57
57
58
- mean_and_variance_weighted_update (& s , -30 );
59
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), -16 );
60
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 72 );
58
+ mean_and_variance_weighted_update (& s , -30 , true, 2 );
59
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 2 ), -16 );
60
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 2 ), 72 );
61
61
}
62
62
63
63
static void mean_and_variance_weighted_advanced_test (struct kunit * test )
64
64
{
65
- struct mean_and_variance_weighted s = { .weight = 8 };
65
+ struct mean_and_variance_weighted s = { };
66
+ bool initted = false;
66
67
s64 i ;
67
68
68
- for (i = 10 ; i <= 100 ; i += 10 )
69
- mean_and_variance_weighted_update (& s , i );
69
+ for (i = 10 ; i <= 100 ; i += 10 ) {
70
+ mean_and_variance_weighted_update (& s , i , initted , 8 );
71
+ initted = true;
72
+ }
70
73
71
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), 11 );
72
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 107 );
74
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 8 ), 11 );
75
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 8 ), 107 );
73
76
74
- s = (struct mean_and_variance_weighted ) { .weight = 8 };
77
+ s = (struct mean_and_variance_weighted ) { };
78
+ initted = false;
75
79
76
- for (i = -10 ; i >= -100 ; i -= 10 )
77
- mean_and_variance_weighted_update (& s , i );
80
+ for (i = -10 ; i >= -100 ; i -= 10 ) {
81
+ mean_and_variance_weighted_update (& s , i , initted , 8 );
82
+ initted = true;
83
+ }
78
84
79
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s ), -11 );
80
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s ), 107 );
85
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (s , 8 ), -11 );
86
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_variance (s , 8 ), 107 );
81
87
}
82
88
83
89
static void do_mean_and_variance_test (struct kunit * test ,
@@ -92,26 +98,26 @@ static void do_mean_and_variance_test(struct kunit *test,
92
98
s64 * weighted_stddev )
93
99
{
94
100
struct mean_and_variance mv = {};
95
- struct mean_and_variance_weighted vw = { . weight = weight };
101
+ struct mean_and_variance_weighted vw = { };
96
102
97
103
for (unsigned i = 0 ; i < initial_n ; i ++ ) {
98
104
mean_and_variance_update (& mv , initial_value );
99
- mean_and_variance_weighted_update (& vw , initial_value );
105
+ mean_and_variance_weighted_update (& vw , initial_value , false, weight );
100
106
101
107
KUNIT_EXPECT_EQ (test , mean_and_variance_get_mean (mv ), initial_value );
102
108
KUNIT_EXPECT_EQ (test , mean_and_variance_get_stddev (mv ), 0 );
103
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (vw ), initial_value );
104
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_stddev (vw ),0 );
109
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (vw , weight ), initial_value );
110
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_stddev (vw , weight ),0 );
105
111
}
106
112
107
113
for (unsigned i = 0 ; i < n ; i ++ ) {
108
114
mean_and_variance_update (& mv , data [i ]);
109
- mean_and_variance_weighted_update (& vw , data [i ]);
115
+ mean_and_variance_weighted_update (& vw , data [i ], true, weight );
110
116
111
117
KUNIT_EXPECT_EQ (test , mean_and_variance_get_mean (mv ), mean [i ]);
112
118
KUNIT_EXPECT_EQ (test , mean_and_variance_get_stddev (mv ), stddev [i ]);
113
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (vw ), weighted_mean [i ]);
114
- KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_stddev (vw ),weighted_stddev [i ]);
119
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_mean (vw , weight ), weighted_mean [i ]);
120
+ KUNIT_EXPECT_EQ (test , mean_and_variance_weighted_get_stddev (vw , weight ),weighted_stddev [i ]);
115
121
}
116
122
117
123
KUNIT_EXPECT_EQ (test , mv .n , initial_n + n );
0 commit comments