Я экспериментирую с полем Галуа, используя библиотеку NTL. GF2
- целые числа mod 2, GF2X
- полиномы над GF2
и GF2E
- расширение кольца / поля над GF2
.
Проблема, с которой я сталкиваюсь, заключается в том, что я инициализирую неприводимый многочлен следующим образом
GF2X irreduc;
SetCoeff(irreduc, 128, 1);
SetCoeff(irreduc, 7, 1);
SetCoeff(irreduc, 2, 1);
SetCoeff(irreduc, 1, 1);
SetCoeff(irreduc, 0, 1);
GF2E::init(irreduc);
и затем я также инициализирую два полинома:
GF2X a;
SetCoeff(a, 120);
SetCoeff(a, 22);
GF2X b;
SetCoeff(b, 128);
SetCoeff(b, 51);
std::cout << "a: " << a << '\n';
std::cout << "b: " << b << '\n';
и умножьте их:
std::cout << "\ndeg(a * b): " << deg(a * b) << '\n';
Выходное значение равно deg(a * b):
248 , которое находится вне поля / кольца 2^128
, определяемого неприводимым полиномом.
Я знаю, что, возможно, мне не хватает чего-то очевидного, но я очень новичок в этой области, поэтому терпите меня.
Спасибо!