sandbox
Loading...
Searching...
No Matches
ieee_754_float.hpp
1#ifndef LIBSBX_MATH_IEEE_754_FLOAT_HPP_
2#define LIBSBX_MATH_IEEE_754_FLOAT_HPP_
3
4#include <cmath>
5#include <cstdint>
6#include <bit>
7
8namespace sbx::math {
9
11
12 inline static constexpr auto bias = std::uint32_t{127};
13
14 std::float_t f;
15 std::uint32_t i;
16#if std::endian::native == std::endian::little
17 struct {
18 std::uint32_t mantissa: 23;
19 std::uint32_t exponent: 8;
20 std::uint32_t sign: 1;
21 };
22#else
23 struct {
24 std::uint32_t sign: 1;
25 std::uint32_t exponent: 8;
26 std::uint32_t mantissa: 23;
27 };
28#endif
29
30}; // ieee_754_float32
31
33
34 inline static constexpr auto bias = std::uint32_t{1023};
35
36 std::double_t f;
37 std::uint64_t i;
38#if std::endian::native == std::endian::little
39 struct {
40 std::uint64_t mantissa: 23;
41 std::uint64_t exponent: 8;
42 std::uint64_t sign: 1;
43 };
44#else
45 struct {
46 std::uint64_t sign: 1;
47 std::uint64_t exponent: 8;
48 std::uint64_t mantissa: 23;
49 };
50#endif
51
52}; // ieee_754_float64
53
54} // namespace sbx::math
55
56#endif // LIBSBX_MATH_IEEE_754_FLOAT_HPP_
Definition: ieee_754_float.hpp:10
Definition: ieee_754_float.hpp:32