diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-09-22 10:21:15 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-09-22 10:21:15 -0700 |
commit | e2274412488ab310decb8494ab41009342b3c2f6 (patch) | |
tree | b4f29c5bed08a9e5b51217fc4e4ed704ecef8ae8 /deps/v8/src/fast-dtoa.h | |
parent | cc1d61cbb3a9b2b75edac66295f2bc5314be5042 (diff) | |
download | node-new-e2274412488ab310decb8494ab41009342b3c2f6.tar.gz |
Upgrade V8 to 2.4.5
Diffstat (limited to 'deps/v8/src/fast-dtoa.h')
-rw-r--r-- | deps/v8/src/fast-dtoa.h | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/deps/v8/src/fast-dtoa.h b/deps/v8/src/fast-dtoa.h index 4403a75029..94c22ecd7c 100644 --- a/deps/v8/src/fast-dtoa.h +++ b/deps/v8/src/fast-dtoa.h @@ -31,27 +31,52 @@ namespace v8 { namespace internal { +enum FastDtoaMode { + // Computes the shortest representation of the given input. The returned + // result will be the most accurate number of this length. Longer + // representations might be more accurate. + FAST_DTOA_SHORTEST, + // Computes a representation where the precision (number of digits) is + // given as input. The precision is independent of the decimal point. + FAST_DTOA_PRECISION +}; + // FastDtoa will produce at most kFastDtoaMaximalLength digits. This does not // include the terminating '\0' character. static const int kFastDtoaMaximalLength = 17; // Provides a decimal representation of v. -// v must be a strictly positive finite double. +// The result should be interpreted as buffer * 10^(point - length). +// +// Precondition: +// * v must be a strictly positive finite double. +// // Returns true if it succeeds, otherwise the result can not be trusted. // There will be *length digits inside the buffer followed by a null terminator. -// If the function returns true then -// v == (double) (buffer * 10^(point - length)). -// The digits in the buffer are the shortest representation possible: no -// 0.099999999999 instead of 0.1. -// The last digit will be closest to the actual v. That is, even if several -// digits might correctly yield 'v' when read again, the buffer will contain the -// one closest to v. -// The variable 'sign' will be '0' if the given number is positive, and '1' -// otherwise. +// If the function returns true and mode equals +// - FAST_DTOA_SHORTEST, then +// the parameter requested_digits is ignored. +// The result satisfies +// v == (double) (buffer * 10^(point - length)). +// The digits in the buffer are the shortest representation possible. E.g. +// if 0.099999999999 and 0.1 represent the same double then "1" is returned +// with point = 0. +// The last digit will be closest to the actual v. That is, even if several +// digits might correctly yield 'v' when read again, the buffer will contain +// the one closest to v. +// - FAST_DTOA_PRECISION, then +// the buffer contains requested_digits digits. +// the difference v - (buffer * 10^(point-length)) is closest to zero for +// all possible representations of requested_digits digits. +// If there are two values that are equally close, then FastDtoa returns +// false. +// For both modes the buffer must be large enough to hold the result. bool FastDtoa(double d, + FastDtoaMode mode, + int requested_digits, Vector<char> buffer, int* length, - int* point); + int* decimal_point); } } // namespace v8::internal |