74 const double biggest = std::numeric_limits<double>::max();
75 auto almostBiggest = [&](
int n) {
76 double almostBiggest = biggest;
77 for (
int i = 0; i < n; ++i) {
78 almostBiggest = std::nextafter(almostBiggest, -INFINITY);
82 const double nextBiggest = almostBiggest(1);
88 const uint64_t smallestNANPattern =
89 0b0'11111111111'0000000000000000000000000000000000000000000000000001;
91 memcpy(&smallestNAN, &smallestNANPattern,
sizeof(
double));
103 const double smallest = std::numeric_limits<double>::denorm_min();
112 std::array<double, 5> testCases = {0.0, 1.0, -13.0, 1.234567890123456, -543210.987654321};
114 for (
size_t i = 0; i < testCases.size(); i++) {
115 double input = testCases[i];
116 uint64_t bits = sk_bit_cast<uint64_t>(input);
117 double output = sk_bit_cast<double>(bits);
122 uint64_t bits = sk_bit_cast<uint64_t>((
double) NAN);
123 double output = sk_bit_cast<double>(bits);
127 uint64_t bits = sk_bit_cast<uint64_t>((
double) INFINITY);
128 double output = sk_bit_cast<double>(bits);