fix: handle negative values in keyelement with significant as signed integer

This commit is contained in:
Max Lübke 2023-01-10 10:21:19 +01:00 committed by Max Luebke
parent 14cb03e746
commit 4118fe4ed0
2 changed files with 3 additions and 5 deletions

View File

@ -36,9 +36,8 @@ extern "C" {
namespace poet {
using DHT_Keyelement = struct keyelem {
std::uint8_t sign : 1;
std::int8_t exp : 7;
std::uint64_t significant : 56;
std::int8_t exp : 8;
std::int64_t significant : 56;
};
/**

View File

@ -37,10 +37,9 @@ using namespace std;
inline DHT_Keyelement round_key_element(double value, std::uint32_t signif) {
std::int8_t exp = (std::int8_t)std::floor(std::log10(std::fabs(value)));
std::uint64_t significant = value * std::pow(10, signif - exp);
std::int64_t significant = value * std::pow(10, signif - exp);
DHT_Keyelement elem;
elem.sign = value < 0.;
elem.exp = exp;
elem.significant = significant;