Classes | |
| struct | value128 |
Functions | |
| really_inline uint64_t | Emulate64x64to128 (uint64_t &r_hi, const uint64_t x, const uint64_t y) |
| really_inline value128 | full_multiplication (uint64_t value1, uint64_t value2) |
| int | leading_zeroes (uint64_t input_num) |
| static bool | is_integer (char c) |
| really_inline double | compute_float_64 (int64_t power, uint64_t i, bool negative, bool *success) |
| static const char * | parse_float_strtod (const char *ptr, double *outDouble) |
| WARN_UNUSED const really_inline char * | parse_number (const char *p, double *outDouble) |
| really_inline double fast_double_parser::compute_float_64 | ( | int64_t | power, |
| uint64_t | i, | ||
| bool | negative, | ||
| bool * | success | ||
| ) |
When mapping numbers from decimal to binary, we go from w * 10^q to m * 2^p but we have 10^q = 5^q * 2^q, so effectively we are trying to match w * 2^q * 5^q to m * 2^p. Thus the powers of two are not a concern since they can be represented exactly using the binary notation, only the powers of five affect the binary significand.
| really_inline uint64_t fast_double_parser::Emulate64x64to128 | ( | uint64_t & | r_hi, |
| const uint64_t | x, | ||
| const uint64_t | y | ||
| ) |
| really_inline value128 fast_double_parser::full_multiplication | ( | uint64_t | value1, |
| uint64_t | value2 | ||
| ) |
|
inlinestatic |
|
inline |
|
static |
| WARN_UNUSED const really_inline char* fast_double_parser::parse_number | ( | const char * | p, |
| double * | outDouble | ||
| ) |