Я имел в виду, что

должно быть достаточно большим, чтобы результат совпадал с тем, который мы имеем в поле целых чисел
В смысле конечный результат умножения? (ну и целые числа не поле, но неважно)
Да, в википедии хорошее описание (которое кто-то испортил, надо будет внимательно посмотреть и, вероятно, откатить).
В Ваших обозначениях,

.
2. Разбиваем на цифры примерно по

бит каждая (цифр соответственно тоже

). Выбираем

, и вычисления ведем по модулю

(в котором почти в 2 раза меньше бит чем в исходном модуле

).
3. Ответ получается по модулю

.
В результате у нас получается

"псефдоцифр" (компонент свёртки до переноса), которые теперь могут быть больше

, но они не меньше, чем

, поэтому мы посчитали их точно.
Спасибо вам за пояснения! Только я так и не понимаю зачем на

, если во всех операциях мы используем

? Ещё не понимаю почему

, ведь мы должны выбрать его таким, чтобы результат умножения влез в кольцо, т.е.

и модуль равен

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

и пишется, что результат FFT влезет в такой модуль. И вы тоже пишите похожее. Но я не понимаю какая нам выгода. Ведь в качестве корней в FFT мы используем
![$r = 2^{2n/2^{m / 2}} = 2^{\frac{4N}{2^m} + \frac{m}{2^{m/2+1}}} = [ N = 2^{m+1} ] = 2^{8 + \frac{m}{2^{m/2+1}}}$ $r = 2^{2n/2^{m / 2}} = 2^{\frac{4N}{2^m} + \frac{m}{2^{m/2+1}}} = [ N = 2^{m+1} ] = 2^{8 + \frac{m}{2^{m/2+1}}}$](https://dxdy-04.korotkov.co.uk/f/b/6/4/b64aba8a353b3cc2f12b8c3e3134073382.png)
. Таким образом мы используем

корней вида

. Значит найдется

, которое сделает корень больше

, а значит больше самого входного числа (потому что внутри FFT в случае, когда корень равен

, считается, по сути, входное число как оно есть). Таким образом, получающиеся результаты FFT больше самих чисел, а значит нет смысла в алгоритме в целом.
Скажите, пожалуйста, где я ошибаюсь?
Ещё в статье зачем-то исходные числа умножают на какой-то вектор

. Я читал где-то, что так можно делать, и что это называется взвешенным FT, но я не понимаю для чего это здесь. Это какая-то оптимизация или что-то критически важное?