Я пытаюсь найти библиотеку C ++, которая обрабатывает многочлены над некоторым конечным полем GF (2 ^ n) и поддерживает матричное представление с поддержкой поиска ранга / обратного или даже решения A = X * B.
Я пытаюсь использовать Linbox, но документации очень мало.
То, что я смог сделать, это преобразовать целое число в полиномиальное представление после выполнения некоторых неприятных вещей с частью библиотеки Givaro, но я не мог использовать часть Linbox для ранга / решения, так как они, кажется, не обрабатывают полиномы , только простые базисы с показателем, равным единице (GF (2)).
Вот часть из кода
LinBox::GivaroGfq GF28(2, 8);
typedef LinBox::BlasMatrix<LinBox::GivaroGfq> Matrix;
Matrix mat(GF28);
//...Resize to MxM and insert M^2 elements
unsigned long int r;
rank(r, mat);
При отладке rank
Функция всегда обрабатывает элементы как элементы над GF (2) и возвращает неправильные значения.
Любые идеи о том, как использовать эту библиотеку в этом отношении? Имейте матрицу MxM элементов GF (2 ^ n) и инвертируйте ее или получите ее ранг или решите линейные уравнения? Или я должен использовать другую библиотеку?
Похоже, NTL это решение. Это дает удобную реализацию многочленов GF (2 ^ n) по модулю некоторого полинома и простую работу с матрицами (обратное, решающее и т. Д.)