我需要在整数环中使用 FFT 将长整数与任意 BASE 数字相乘。n = 2^k
some的操作数总是有长度的k
,并且卷积向量具有2n
分量,因此我需要一个2n'th
原始单位根。
我不是特别关心效率问题,所以我不想使用 Strassen & Schönhage 的算法——只计算基本卷积,然后进行一些进位,仅此而已。
尽管对很多数学家来说似乎很简单,但我对代数的理解真的很糟糕,所以我有很多问题:
2^n + 1
在整数环模(可能是复合)和整数 FIELDS 模一些素数中执行 FFT 之间有什么本质区别或细微差别p
?
我问这个是因为在这样一个环中2
是一个(2n)th
原始的统一根,因为2^n == -1 (mod 2^n+1)
。相反,整数字段需要我搜索这样的原始根。
但也许还有其他细微差别会阻止我将这种形式的环用于 FFT。2^n
如果我选择整数环,那么在这个领域中存在 -th 单位根的 充分条件是什么?
所有其他2^k
小阶单位的根都可以通过平方这个根来获得,对吧?..环模乘法有哪些基本限制?也许在它们的长度上,也许在数字基础上,甚至可能在用于乘法的数字类型上。
我怀疑如果通过模运算减少卷积的系数,可能会丢失一些信息。这是真的吗?为什么?.. 有哪些一般条件可以让我避免这种情况?long
对于 FFT 向量、它们的乘积和卷积向量,是否有可能仅原始类型的动态列表(即)就足够了?或者我应该将系数转换为BigInteger
以防万一(我真正应该的“情况”是什么)?
如果对这些问题的一般回答需要太长时间,我会特别满意在以下条件下的回答。我2^30
在字段 Z_70383776563201 中找到了顺序统一的原始根表:
http://people.cis.ksu.edu/~rhowell/calculator/roots.html
因此,如果我使用2^30
th 单位根来乘以 length 的数量,2^29
我应该考虑哪些精度/算法/效率的细微差别?..
非常感谢您!我将奖励最佳答案 - 请考虑帮助提供一些示例。