Special case rsm <-> summary comparison for zero values

This commit is contained in:
Joakim Hove 2021-09-15 14:45:36 +02:00
parent d53984c72d
commit 8821b27556

View File

@ -322,13 +322,23 @@ bool cmp(const ESmry& smry, const ERsm& rsm) {
const auto& smry_vector = smry.get(node);
const auto& rsm_vector = rsm.get(key);
for (std::size_t index = 0; index < smry_vector.size(); index++) {
const double eps = 5e-5;
const double diff = static_cast<double>(smry_vector[index]) - rsm_vector[index];
const double sum = std::fabs(static_cast<double>(smry_vector[index])) + std::fabs(rsm_vector[index]);
const auto smry_value = static_cast<double>(smry_vector[index]);
const auto rsm_value = rsm_vector[index];
if (std::fabs(rsm_value) < 1e-4) {
const double zero_eps = 1e-6;
if (std::fabs(smry_value) > zero_eps) {
fmt::print(stderr, "time_index: {} key: {} summary: {} rsm: {}\n", index, key, smry_value, rsm_value);
return false;
}
} else {
const double eps = 5e-5;
const double diff = std::fabs(smry_value - rsm_value);
const double sum = std::fabs(smry_value) + std::fabs(rsm_value);
if (diff > eps * sum) {
fmt::print(stderr, "time_index: {} key: {} summary: {} rsm: {}\n", index, key, smry_vector[index], rsm_vector[index]);
return false;
if (diff > eps * sum) {
fmt::print(stderr, "time_index: {} key: {} summary: {} rsm: {}\n", index, key, smry_value, rsm_value);
return false;
}
}
}
}