summaryrefslogtreecommitdiffstats
path: root/src/fast-dtoa.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/fast-dtoa.cc')
-rw-r--r--src/fast-dtoa.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/fast-dtoa.cc b/src/fast-dtoa.cc
index d2a00cc6..ce825f9d 100644
--- a/src/fast-dtoa.cc
+++ b/src/fast-dtoa.cc
@@ -609,8 +609,13 @@ static bool Grisu3(double v,
ASSERT(boundary_plus.e() == w.e());
DiyFp ten_mk; // Cached power of ten: 10^-k
int mk; // -k
- GetCachedPower(w.e() + DiyFp::kSignificandSize, kMinimalTargetExponent,
- kMaximalTargetExponent, &mk, &ten_mk);
+ int ten_mk_minimal_binary_exponent =
+ kMinimalTargetExponent - (w.e() + DiyFp::kSignificandSize);
+ int ten_mk_maximal_binary_exponent =
+ kMaximalTargetExponent - (w.e() + DiyFp::kSignificandSize);
+ GetCachedPowerForBinaryExponentRange(ten_mk_minimal_binary_exponent,
+ ten_mk_maximal_binary_exponent,
+ &ten_mk, &mk);
ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() +
DiyFp::kSignificandSize) &&
(kMaximalTargetExponent >= w.e() + ten_mk.e() +
@@ -662,8 +667,13 @@ static bool Grisu3Counted(double v,
DiyFp w = Double(v).AsNormalizedDiyFp();
DiyFp ten_mk; // Cached power of ten: 10^-k
int mk; // -k
- GetCachedPower(w.e() + DiyFp::kSignificandSize, kMinimalTargetExponent,
- kMaximalTargetExponent, &mk, &ten_mk);
+ int ten_mk_minimal_binary_exponent =
+ kMinimalTargetExponent - (w.e() + DiyFp::kSignificandSize);
+ int ten_mk_maximal_binary_exponent =
+ kMaximalTargetExponent - (w.e() + DiyFp::kSignificandSize);
+ GetCachedPowerForBinaryExponentRange(ten_mk_minimal_binary_exponent,
+ ten_mk_maximal_binary_exponent,
+ &ten_mk, &mk);
ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() +
DiyFp::kSignificandSize) &&
(kMaximalTargetExponent >= w.e() + ten_mk.e() +