个密集的评估网格。
voidMultiPointEvaluation Grid(...)
他将需要逐个点代入t值去硬算的黎曼Zeta函数,通过构建局部多项式,强行转化为了在网格点上的泰勒级数展开。
紧接着,李东调用了FFT算法,让这些多项式在频域内进行高速相乘。
秦飞已经把降噪耳取了下来,眼睛看着李东的电脑屏幕,呼吸都变得有些急促了。
「等等————这特麽是在干什麽?」
秦飞想用自己学过的知识去去解析这套代码背後的逻辑。
「算黎曼Zeta函数,你引个快速傅立叶变换(FFT)进来干嘛?这两者八竿子打不着啊!」
「还有这个多点求值矩阵?他把泰勒展开放在网格上————」
突然,他好像想到了什麽「他————他不是在算单点!他是在利用FFT的高效卷积特性,把一个大区间内的所有零点求值,强行打包成了一个并行的多项式运算?」
「用多点求值去分摊黎曼—西格尔公式主和项那恐怖的计算开销?」
这其实就是黎曼写在手稿里,没未被後世学界发现的零点计算的思路。
比後来公开的Odlyzko—Schonhage算法早了近一个半世纪,甚至在数学底层上,把後者的时间复杂度又往下压了整整一个维度。
但秦飞不可能知道啊!
在他的认知里,黎曼—西格尔公式带来的0(t^(1/2))复杂度,就是单零点计算的理论下限。
哪怕是学界最快的0S算法,也只是工程化的极限优化,根本不可能跳出这个数学框架。
而现在,眼前这个家夥,他到底在干什麽?是想要推翻整个计算架构吗?
「这怎麽可能?!」
秦飞感觉他疯了。
「把主和项展开成矩阵运算,理论上虽然能降低平均复杂度,但误差怎麽控制?你这麽搞,浮点数的截断误差绝对会呈指数级爆炸的!」
然而,还没等秦飞在心里反驳完。
李东继续在多点求值的网格间,穿插了几段带限函数的插值滤波代码,完美的将积分路径的截断误差死死的锁在了一个极小的数学边界内!
每一行指针的游走,每一次内存的复用,都用的很优雅。
「不对————就算是0S算法,也不可能用这麽少的代码、这麽低的内存开销实现!」
「他这个插值逻辑,根本不是现代数值分析的思路————这到底是哪来的算法?!」
秦飞彻底看呆了。
虽然他认识那些C++的语法,但组合在一起的算法逻辑,他已经完全跟不上了。
「他不会是在瞎写吧?」
「这样写————真的可以跑通吗?」
秦飞陷入了深深的自我怀疑中。