1 // Copyright 2010 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_CACHED_POWERS_H_ 6 #define V8_CACHED_POWERS_H_ 7 8 #include "src/diy-fp.h" 9 10 namespace v8 { 11 namespace internal { 12 13 class PowersOfTenCache { 14 public: 15 // Not all powers of ten are cached. The decimal exponent of two neighboring 16 // cached numbers will differ by kDecimalExponentDistance. 17 static const int kDecimalExponentDistance; 18 19 static const int kMinDecimalExponent; 20 static const int kMaxDecimalExponent; 21 22 // Returns a cached power-of-ten with a binary exponent in the range 23 // [min_exponent; max_exponent] (boundaries included). 24 static void GetCachedPowerForBinaryExponentRange(int min_exponent, 25 int max_exponent, 26 DiyFp* power, 27 int* decimal_exponent); 28 29 // Returns a cached power of ten x ~= 10^k such that 30 // k <= decimal_exponent < k + kCachedPowersDecimalDistance. 31 // The given decimal_exponent must satisfy 32 // kMinDecimalExponent <= requested_exponent, and 33 // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. 34 static void GetCachedPowerForDecimalExponent(int requested_exponent, 35 DiyFp* power, 36 int* found_exponent); 37 }; 38 39 } } // namespace v8::internal 40 41 #endif // V8_CACHED_POWERS_H_ 42