我一直在算法教科书中研究这个主题。
巧妙地使用复杂的统一根源似乎在数学上有效。但是,我不明白人们如何在计算机中真正代表这一点。
我可以想到两件事:
我真的很想用熟悉的编程语言来看这个算法的实现。
答案 0 :(得分:3)
确实如你所知,统一的根源通常不是很好的数字,可以很好地存储在计算机中。由于数值误差很小,如果您知道输出应该是整数,则舍入通常会产生正确的结果。
如果你不想(或不能)依赖它,一个确切的选项是数理论变换。它用有限域中的单位根代替复平面中的统一根.ℤ/pℤ其中p是一个合适的素数。 p必须足够大才能存在所有必要的根,并且效率受p的性质影响。如果你选择一个费马素数,那么统一的根就有了方便的形式,并且有一个技巧可以比平时更有效地减少模数p。这是所有精确的整数运算,并且值保持很小,因此在计算机中实现它没有问题。
该技术用于Schönhage-Strassen算法,因此您可以在那里查找具体信息。