29class GF2Poly :
public Limb<W64> {
31 using Super = Limb<W64>;
32 using T = GF2Poly<W64>;
38 explicit GF2Poly(uint64_t x) : Super(x) {}
40 explicit GF2Poly(
const std::array<uint64_t, kU64>& a) : Super(a) {}
42 bool operator<(
const T& other)
const {
43 for (
size_t i = kLimbs; i-- > 0;) {
44 if (limb_[i] < other.limb_[i]) {
47 if (limb_[i] > other.limb_[i]) {
55 static T of_bytes(
const uint8_t a[]) {
57 for (
size_t i = 0; i < kLimbs; ++i) {
58 a = Super::of_bytes(&r.limb_[i], a);
64 for (
size_t i = 0; i < kLimbs; ++i) {
65 limb_[i] ^= y.limb_[i];
69 T& sub(
const T& y) {
return add(y); }