|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
The Galois field of order 64, \(\mathrm{GF}(2^6) = \mathbb{F}_2[x] / (x^6 + x + 1)\). More...
Public Member Functions | |
| constexpr | 𝔽64 (std::uint8_t v) noexcept |
| constexpr 𝔽64 | inverse () const |
Public Attributes | |
| std::uint8_t | value |
The Galois field of order 64, \(\mathrm{GF}(2^6) = \mathbb{F}_2[x] / (x^6 + x + 1)\).
The smallest non-prime finite field: 64 elements of characteristic 2, cyclic multiplicative group \(\mathbb{F}_{64}^{\times}\) of order
std::uint8_t (bit i holds the coefficient of \(x^i\); the top two bits are always zero).0b1000011 = 0x43). This \(f\) is both irreducible and primitive over \(\mathbb{F}_2\).The struct wrapper exists to canonicalise the value range to \({0, \ldots, 63}\) (C++ concepts cannot restrict types to a subset of uint8_t values); addition and multiplication both preserve this invariant.
As a carrier, 𝔽64 witnesses IsGaloisField (here) and IsVectorSpace<𝔽64, bool> (in algebra:vectorspace). The vector-space claim uses the natural embedding \(\mathbb{F}_2 \hookrightarrow \mathbb{F}_{64}\) as the scalar action on coordinates.
Reference polynomial: Lidl & Niederreiter, Finite Fields, 2nd ed. (Cambridge University Press, 1997), Table C.1.