Добрый вечер!
Первый раз на этом форуме, просьба сильно не ругать оформление и постановку.
Итак, задача - реализовать умножение многочленов над
произвольным конечным полем с FFT (
Fast Fourier Transition). Собственно, само умножение происходит понятно - для многочленов

, заданных векторами коэффициентов, получаем их преобразования

- вектора значений в корнях из

. Почленно перемножаем преобразования и вычисляем от результата обратное преобразование Фурье (далее - iFFT).
Для понимания алгоритма использовал данную статью:
http://www.cs.berkeley.edu/~fateman/282/readings/fftnotes.pdf - по сути, единственное более-менее внятное объяснение метода для случая конечных полей, что я нашел. Прямое преобразование сложностей не вызвало: многочлен

представляется как

, если в качестве

выбрать

, где

- примитивный

-ный корень из единицы (т.е.

), получим:

. По определению это и есть преобразование Фурье (все это описано по ссылке чуть более подробно, но суть такая). В статье утверждается, что для обратного преобразования используется аналогичный алгоритм, только вместо элемента

используется

, и появляется коэффициент

- по сути, обратная матрица к исходной:

.Таким образом мы подошли к
первому вопросу - что такое

?

- натуральное число, длина вектора коэффициентов входного многочлена. Если вводить

как сумму из

единиц поля, то получим, что, в частности, для

попытка вычислить

приводит к обращению

(при четных

)- дело неблагодарное, так как противоречит определению поля.
Далее, уже сам быстрый алгоритм использует дополнение степени многочлена до степени

нулями - казалось бы, все здорово. Но не выйдет ли, что для больших

и, соответственно, дополнений до степени

, не найдется примитивного корня единицы?
Заранее спасибо за ответы!
P.S.
Буду рад так же любой литературе по данному вопросу.