Числовое теоретическое преобразование умножения смещено

Я работал над кодом для умножения полиномов с использованием NTT (FFT), и я сделал 2 разных реализации и использовал существующие для проверки, например: https://www.nayuki.io/page/number-theoretic-transform-integer-dft, https://github.com/iblue/ntt.

Проблема в том, что все результаты кажутся сдвинутыми один раз влево (умноженными на x) следующим образом:

0 0 1 1 (x + 1)
*
0 0 1 1 (x + 1)
=
1 2 1 0 (1x^3 + 2x^2 + x) // Should be 0 1 2 1

Кроме того, тривиальный случай 1*1 неверен так же:

0 0 0 1 (1)
*
0 0 0 1 (1)
=
0 0 1 0 (x) // Should be 0 0 0 1 (1)

Я понятия не имею, почему это происходит, и это не упоминается ни в одной из статей, которые я до сих пор читал.

Что мне не хватает?

0 ответов

Другие вопросы по тегам