StatusVector: Handle (hypothetical) situation when one image is overwritten by itself
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user