27 if constexpr(std::is_same_v<T, float>)
29 constexpr uint32_t expMask = 0x7F80'0000;
30 constexpr uint32_t fracMask = 0x007F'FFFF;
31 auto bits = std::bit_cast<uint32_t>(
arg);
32 return ((bits & expMask) == expMask) && (bits & fracMask);
34 else if constexpr(std::is_same_v<T, double>)
36 constexpr uint64_t expMask = 0x7FF0'0000'0000'0000ULL;
37 constexpr uint64_t fracMask = 0x000F'FFFF'FFFF'FFFFULL;
38 auto bits = std::bit_cast<uint64_t>(
arg);
39 return ((bits & expMask) == expMask) && (bits & fracMask);
48 if constexpr(std::is_same_v<T, float>)
50 constexpr uint32_t expMask = 0x7F80'0000;
51 constexpr uint32_t fracMask = 0x007F'FFFF;
52 auto bits = std::bit_cast<uint32_t>(
arg);
53 return ((bits & expMask) == expMask) && !(bits & fracMask);
55 else if constexpr(std::is_same_v<T, double>)
57 constexpr uint64_t expMask = 0x7FF0'0000'0000'0000ULL;
58 constexpr uint64_t fracMask = 0x000F'FFFF'FFFF'FFFFULL;
59 auto bits = std::bit_cast<uint64_t>(
arg);
60 return ((bits & expMask) == expMask) && !(bits & fracMask);
69 if constexpr(std::is_same_v<T, float>)
71 constexpr uint32_t expMask = 0x7F80'0000;
72 auto bits = std::bit_cast<uint32_t>(
arg);
73 return (bits & expMask) != expMask;
75 else if constexpr(std::is_same_v<T, double>)
77 constexpr uint64_t expMask = 0x7FF0'0000'0000'0000ULL;
78 auto bits = std::bit_cast<uint64_t>(
arg);
79 return (bits & expMask) != expMask;