@@ -31,53 +31,59 @@ static void mean_and_variance_basic_test(struct kunit *test)
3131
3232static void mean_and_variance_weighted_test (struct kunit * test )
3333{
34- struct mean_and_variance_weighted s = { . weight = 2 };
34+ struct mean_and_variance_weighted s = { };
3535
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 );
3939
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 );
4343
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 );
4747
48- s = (struct mean_and_variance_weighted ) { . weight = 2 };
48+ s = (struct mean_and_variance_weighted ) { };
4949
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 );
5353
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 );
5757
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 );
6161}
6262
6363static void mean_and_variance_weighted_advanced_test (struct kunit * test )
6464{
65- struct mean_and_variance_weighted s = { .weight = 8 };
65+ struct mean_and_variance_weighted s = { };
66+ bool initted = false;
6667 s64 i ;
6768
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+ }
7073
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 );
7376
74- s = (struct mean_and_variance_weighted ) { .weight = 8 };
77+ s = (struct mean_and_variance_weighted ) { };
78+ initted = false;
7579
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+ }
7884
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 );
8187}
8288
8389static void do_mean_and_variance_test (struct kunit * test ,
@@ -92,26 +98,26 @@ static void do_mean_and_variance_test(struct kunit *test,
9298 s64 * weighted_stddev )
9399{
94100 struct mean_and_variance mv = {};
95- struct mean_and_variance_weighted vw = { . weight = weight };
101+ struct mean_and_variance_weighted vw = { };
96102
97103 for (unsigned i = 0 ; i < initial_n ; i ++ ) {
98104 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 );
100106
101107 KUNIT_EXPECT_EQ (test , mean_and_variance_get_mean (mv ), initial_value );
102108 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 );
105111 }
106112
107113 for (unsigned i = 0 ; i < n ; i ++ ) {
108114 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 );
110116
111117 KUNIT_EXPECT_EQ (test , mean_and_variance_get_mean (mv ), mean [i ]);
112118 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 ]);
115121 }
116122
117123 KUNIT_EXPECT_EQ (test , mv .n , initial_n + n );
0 commit comments