28 std::numeric_limits<double>::infinity(),
29 -std::numeric_limits<double>::infinity(),
30 std::numeric_limits<double>::min(),
31 -std::numeric_limits<double>::min(),
32 std::numeric_limits<double>::max(),
33 -std::numeric_limits<double>::max(),
34 std::numeric_limits<double>::lowest(),
35 -std::numeric_limits<double>::lowest(),
36 std::numeric_limits<double>::quiet_NaN(),
37 -std::numeric_limits<double>::quiet_NaN(),
38 std::numeric_limits<double>::signaling_NaN(),
39 -std::numeric_limits<double>::signaling_NaN(),
40 std::numeric_limits<double>::denorm_min(),
41 -std::numeric_limits<double>::denorm_min(),
50 if constexpr (std::numeric_limits<double>::is_iec559) {
52 uint64_t encoded_in_memory;
53 std::copy((
const unsigned char*)&d, (
const unsigned char*)(&d + 1), (
unsigned char*)&encoded_in_memory);
54 assert(encoded_in_memory == encoded);
58 assert(std::isnan(d) == std::isnan(d_deserialized));
59 assert(std::isnan(d) || d == d_deserialized);
T PickValueInArray(const T(&array)[size])
static size_t DynamicUsage(const int8_t &v)
Dynamic memory usage for built-in types is zero.
uint64_t EncodeDouble(double f) noexcept
double DecodeDouble(uint64_t v) noexcept
size_t CallOneOf(FuzzedDataProvider &fuzzed_data_provider, Callables... callables)