我正在尝试在Objective C中实现NTT(数字理论变换),但在线发布的抽象数学文档缺少重要细节。我发现了以下关于Stack Overflow的现有问题,其中声称包括NTT的一个有效(尽管是非最佳的)实现: Modular arithmetics and NTT (finite field DFT) optimizations
我的问题是关于“W”的计算。 “p”显然是一个选定的素数。然而,该实现计算“W =(2 ^ L)mod p”。 “L”是一个等于“0x30000000”的预定义常数,它绝对不是基数2的幂。这直接与我发现的几个不同的数学摘要相矛盾,似乎表示“L”不仅应该是源数组中的元素数量(因此也是基数2的幂),而且还可以变量来启动!显然我在这里缺少一些重要的东西。有人可以解决这个矛盾。如何选择“L”的价值?更重要的是,给定一个不同的素数,如何确定相应的“L”值?