StatusVector: Handle (hypothetical) situation when one image is overwritten by itself

This commit is contained in:
2026-02-28 17:02:27 +01:00
parent a9e88a9b6e
commit ab077625b9

View File

@@ -25,11 +25,23 @@ void StatusVector::AddElement(uint32_t id, float val) {
if (id >= content.size()) {
content.resize(id + 1, NAN);
}
const float old_val = content[id];
const bool had_old = std::isfinite(old_val);
content[id] = val;
sum += val;
count += 1;
mean = sum / count;
if (had_old) {
sum += static_cast<double>(val) - static_cast<double>(old_val);
} else {
sum += val;
count += 1;
}
if (count > 0)
mean = static_cast<float>(sum / static_cast<double>(count));
else
mean = NAN;
}
std::optional<float> StatusVector::GetElement(uint32_t id) const {