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_BASE_NUMBERS_CACHED_POWERS_H_ 6 #define V8_BASE_NUMBERS_CACHED_POWERS_H_ 7 8 #include "src/base/logging.h" 9 #include "src/base/numbers/diy-fp.h" 10 11 namespace v8 { 12 namespace base { 13 14 class PowersOfTenCache { 15 public: 16 // Not all powers of ten are cached. The decimal exponent of two neighboring 17 // cached numbers will differ by kDecimalExponentDistance. 18 static const int kDecimalExponentDistance; 19 20 static const int kMinDecimalExponent; 21 static const int kMaxDecimalExponent; 22 23 // Returns a cached power-of-ten with a binary exponent in the range 24 // [min_exponent; max_exponent] (boundaries included). 25 static void GetCachedPowerForBinaryExponentRange(int min_exponent, 26 int max_exponent, 27 DiyFp* power, 28 int* decimal_exponent); 29 30 // Returns a cached power of ten x ~= 10^k such that 31 // k <= decimal_exponent < k + kCachedPowersDecimalDistance. 32 // The given decimal_exponent must satisfy 33 // kMinDecimalExponent <= requested_exponent, and 34 // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. 35 static void GetCachedPowerForDecimalExponent(int requested_exponent, 36 DiyFp* power, 37 int* found_exponent); 38 }; 39 40 } // namespace base 41 } // namespace v8 42 43 #endif // V8_BASE_NUMBERS_CACHED_POWERS_H_ 44