Lines Matching defs:exp10
14043 // - when parsing "12345.678e+02", man is 12345678 and exp10 is -1.
14044 // - when parsing "-12", man is 12 and exp10 is 0. Processing the leading
14060 // - exp10 is in the range [-307 ..= 288], the same range of the
14063 // The exp10 range (and the fact that man is in the range [1 ..= UINT64_MAX],
14064 // approximately [1 ..= 1.85e+19]) means that (man * (10 ** exp10)) is in the
14071 int32_t exp10) {
14072 // Look up the (possibly truncated) base-2 representation of (10 ** exp10).
14076 &wuffs_base__private_implementation__powers_of_10[exp10 + 307][0];
14084 // later, but its initial value comes from a linear scaling of exp10,
14091 // (over the practical range of exp10) to log(10) / log(2) ≈ 3.321928.
14095 // range of exp10 arguments that this function accepts, is confirmed by
14098 ((uint64_t)(((217706 * exp10) >> 16) + 1087)) - ((uint64_t)clz);
14113 // for the product (man * e), where e is (10 ** exp10). The upper bound would
14361 // Try the fast Eisel-Lemire algorithm again. Calculating the (man, exp10)
14372 int32_t exp10 = h->decimal_point - ((int32_t)(h->num_digits));
14373 if ((man != 0) && (-307 <= exp10) && (exp10 <= 288)) {
14376 man, exp10);
14522 // This (u64 man, i32 exp10) data structure is superficially similar to the
14526 // If s's number fits in a (man, exp10), parse that pair with the
14535 // Calculating that (man, exp10) pair needs to stay within s's bounds.
14586 // updating the man and exp10 variables.
14587 int32_t exp10 = 0;
14602 exp10 = ((int32_t)(first_after_separator_ptr - p));
14614 // Update exp10 for the optional exponent, starting with 'E' or 'e'.
14647 exp10 += exp_sign * exp_num;
14685 // preconditions include that exp10 is in the range [-307 ..= 288].
14686 if ((exp10 < -307) || (288 < exp10)) {
14690 // If both man and (10 ** exp10) are exactly representable by a double, we
14692 if ((-22 <= exp10) && (exp10 <= 22) && ((man >> 53) == 0)) {
14694 if (exp10 >= 0) {
14695 d *= wuffs_base__private_implementation__f64_powers_of_10[+exp10];
14697 d /= wuffs_base__private_implementation__f64_powers_of_10[-exp10];
14707 // by the "If both man and (10 ** exp10)" above, but "0e99" might not.
14712 // Our man and exp10 are in range. Run the Eisel-Lemire algorithm.
14715 man, exp10);