From 97aa629922976de343c06dec04d7872067e936f0 Mon Sep 17 00:00:00 2001 From: IRainman Date: Sat, 8 Nov 2025 22:15:17 +0300 Subject: [PATCH] * try to fix precision error on x86 platform step8. --- include/fast_float/ascii_number.h | 2 +- include/fast_float/bigint.h | 2 +- include/fast_float/float_common.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index f3190ea..730496a 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -439,7 +439,7 @@ parse_number_string(UC const *p, UC const *pend, } else { // Now let's parse the explicit exponent. while ((p != pend) && is_integer(*p)) { - if (exp_number < 0x1000) { + if (exp_number < 0x10000000) { // check for exponent overflow if we have too many digits. UC const digit = UC(*p - UC('0')); exp_number = 10 * exp_number + static_cast(digit); diff --git a/include/fast_float/bigint.h b/include/fast_float/bigint.h index 09d52b3..45e7299 100644 --- a/include/fast_float/bigint.h +++ b/include/fast_float/bigint.h @@ -39,7 +39,7 @@ constexpr limb_t bigint_limbs = bigint_bits / limb_bits; // vector-like type that is allocated on the stack. the entire // buffer is pre-allocated, and only the length changes. template struct stackvec { - limb data[size] = {0}; + limb data[size]; // we never need more than 150 limbs uint_fast8_t length{0}; diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index b3aa60a..a0bfbcf 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -446,7 +446,7 @@ typedef int_fast8_t am_bits_t; // Power bias is signed for handling a denormal float // or an invalid mantissa. -typedef int32_t am_pow_t; +typedef int_fast32_t am_pow_t; // Bias so we can get the real exponent with an invalid adjusted_mantissa. constexpr static am_pow_t invalid_am_bias = -0x8000;