2492{
2493 if (d == 0)
2494 return 0;
2495
2496 int digits_left_of_decimal = (int) (1 + log10(fabs(d)));
2498 uint64_t mask = 0xffffffffffffffffULL << (52 - bits_needed);
2499 uint64_t dint = 0;
2500 size_t dsz = sizeof(d) < sizeof(dint) ? sizeof(d) : sizeof(dint);
2501
2502 memcpy(&dint, &d, dsz);
2503 dint &= mask;
2504 memcpy(&d, &dint, dsz);
2505 return d;
2506}
static uint8_t bits_for_precision(int32_t significant_digits)