Полином над конечной полевой библиотекой
Я пытаюсь найти библиотеку 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) и инвертируйте ее или получите ее ранг или решите линейные уравнения? Или я должен использовать другую библиотеку?
1 ответ
Похоже, NTL это решение. Это дает удобную реализацию многочленов GF(2^n) по модулю некоторого многочлена и простую работу с матрицами (обратное решение, решение и т. Д.)