GCC Code Coverage Report


Directory: ./
File: firmware/util/math/exp_average.h
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 14 0 14
Functions: 100.0% 4 0 4
Branches: 100.0% 2 0 2
Decisions: 100.0% 2 - 2

Line Branch Decision Exec Source
1 /**
2 * @file exp_average.h
3 */
4
5 #pragma once
6
7 class ExpAverage {
8 public:
9 14 float initOrAverage(float value) {
10
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 9 times.
2/2
✓ Decision 'true' taken 5 times.
✓ Decision 'false' taken 9 times.
14 if (current == 0) {
11 5 current = value;
12 5 return current;
13 }
14 9 return average(value);
15 }
16
17 622 float average(float value) {
18 622 current = smoothingFactor * value + (1 - smoothingFactor) * current;
19 622 return current;
20 }
21
22 2 void init(int length) {
23 2 setSmoothingFactor(2 / (length + 1.0));
24 2 }
25
26 14 void setSmoothingFactor(float p_smoothingFactor) {
27 14 smoothingFactor = p_smoothingFactor;
28 14 }
29
30 void reset() {
31 current = 0;
32 smoothingFactor = 0.5;
33 }
34
35 private:
36 float current = 0;
37 float smoothingFactor = 0.5;
38 };
39