Существует binary GCD algorithm для нахождения наибольшего общего делителя числа. В общем случае GCD может быть расширен до XGCD, что может помочь найти мультипликативный обратный в поле.Двоичный XGCD для многочленов
Я работаю с двоичными числами, представляющими многочлен. Например, битовая строка 1101
представляет x^3 + x^2 + 1. Мне нужно вычислить модулярную инверсию случайного полинома по модулю x^p - 1 для некоторого большого известного простого p. Тем не менее, мне нужно сделать это в постоянное время (это означает, что время выполнения не должно зависеть от числа, которое я инвертирую). Я знаю, как сделать бинарное постоянное время GCD, и я знаю, как реализовать XGCD для многочленов, чтобы вычислить мультипликативные обратные. Я не знаю, существует ли бинарный эквивалент GCD (с соответствующим XGCD) для (двоичных) многочленов?
Это круто, фактор _x_ совпадает с значением 2 в двоичном представлении, что означает, что умножение/деление на _x_ является просто битрейтом, так же как и при умножении/делении на 2. Кроме того, «нечетные»/«даже» можно определить, проверив только последний бит. Кроме того, добавление равно вычитанию (xor) и не имеет переносов. В общем, я бы сказал, что это будет быстрый алгоритм. – Sebastian