大数的快速平方计算
问题:
给定一个表示为动态数组的 bignum无符号 DWORD,任务是在不丢失的情况下尽快找到 bignum 的平方
解决方案:
提供的算法通过使用分而治之的方法优化乘法来有效地计算 bignum 的平方。
优化Karatsuba乘法:
调整后和优化,对于超过 32*98 位的输入大小,Karatsuba 乘法比 O(N^2) 经典乘法更快。对于较小的数字,快速 sqr 方法仍然更有效。
用于平方实现的修改 Schönhage-Strassen 乘法:
FFT 和 NTT 变换已被探索用于加速,但它们的准确性损失和实现复杂性使它们不太适合。
NTT优化:
NTT 的密集优化带来了性能提升,NTT sqr 阈值设置为 31032 位,NTT mul 设置为 139632 位。
结论:
对于较小的数字,快速 sqr 方法被证明是最快的选择。在达到阈值之后,Karatsuba 乘法变得更加高效。然而,寻找更有效的唐叶替代品的工作仍在继续。
以上是如何实现大数的快速平方计算?的详细内容。更多信息请关注PHP中文网其他相关文章!