应用程序和基准
在这里,我们展示了FLINT在各种基准和举一些研究问题的例子在FLINT的帮助下解决了这个问题。
具有巨大数字的算术
圆周率的位数
FLINT使用通用管理程序和MPFR公司在引擎盖下,但值得注意的是提供自己的任意大小整数和浮点代码这在许多典型应用中可以快2-10倍。一个基本的基准问题是计算$\pi$到1亿位数。
实施 | 时间 |
药品GMP(GMP-chudnovsky公司) | 62.1秒 |
MPFR(内置功能mpfr_成本_价格指数) | 172.9秒 |
FLINT(内置功能arb成本pi) | 31.6秒 |
FLINT(内置功能arb成本pi)(8个螺纹) | 9.34秒 |
基准机器:8核AMD Ryzen 7 PRO 5850U CPU(Zen 3)。
在这个基准上,FLINT的速度大约是GMP的两倍,是MPFR的五倍。当允许使用多线程时,FLINT比GMP快6.6倍(即仅单螺纹)速度提高18倍而非MPFR。注意,由于算法的性质用于计算$\pi$,此基准大量使用各种大小的数字,不仅仅是1亿位数的数字。
我们提到FLINT的速度大约是专用闭源pi计算程序y型压榨机(在单芯上以18.3 s完成,在8芯上以4.45 s完成);然而,FLINT可以计算更一般的数学对象。
椭圆曲线素性证明
截至2023年5月,已认证的最大数量对一般形式数进行素性检验的素数(与Lucas Lehmer对梅森素数的特殊测试相反)是86453位数的单位11111…11111。这是实现作者:Andreas Enge使用椭圆曲线素性证明算法(ECPP)在他的CM软件中实现。CM将FLINT用于某些操作,例如环中的幂运算$(\mathbf{Z}/n\mathbf{Z})[x]/f$(使用FLINT完成fmpz_mod_poly公司类型)作为Cantor-Zassenhaus步骤的一部分。
FLINT本身目前包括可证明的素性测试,如APRCL适用于较小的数字(最多几千位数)以及可能的初步测试,如Miller-Rabin和BPSW适用于任何大小的数字。
精确线性代数
整数矩阵乘法
矩阵乘法是其他操作的常见内核。这里我们比较两个100×100矩阵乘以b条-位整数项。
语言,整数类型 | 算法 | b美元=10$ | b美元=100$ | b美元=1000$ |
朱莉娅,BigInt公司 | 天真(内置*对于阵列) | 0.224 | 0.356 | 0.542 |
蟒蛇,整数 | 天真(@对于numpy.array数组) | 0.0375 | 0.0731 | 0.890 |
Python中,gmpy2.mpz(百万分之二) | 天真(@对于numpy.array数组) | 0.0479 | 0.0537 | 0.192 |
平价/GP,_内部 | 天真($n^3\乘以$(c+=a*b)) | 0.211 | 0.219 | 0.369 |
平价/GP,_内部 | 优化(内置*对于_材料) | 0.00147 | 0.00920 | 0.102 |
GMP(C++包装器),mpz_类 | 天真($n^3\乘以$(c+=a*b)) | 0.0287 | 0.0294 | 0.169 |
GMP、,英里/小时 | 天真($n^3\乘以$(mpz添加)) | 0.0122 | 0.0172 | 0.159 |
打火石,fmpz_t型 | 天真($n^3\乘以$(fmpz添加)) | 0.00395 | 0.0213 | 0.163 |
打火石,fmpz_t型 | 已优化(fmpz最大值), | 0.0000678 | 0.00235 | 0.0456 |
打火石,fmpz_t | 优化(fmpz最大值),8个螺纹 | 0.0000675 | 0.000800 | 0.0142 |
计时结果以秒为单位。基准机器:8核AMD Ryzen 7 PRO 5850U CPU(Zen 3)。注意:对于这个基准测试,我们将FLINT配置为使用BLAS后端进行模块化矩阵乘法。
主要方法是优化整数矩阵乘法算法如FLINT提供的fmpz最大值比执行$n^3$big-integer乘法和加法的简单循环快得多(有时超过1000倍)。对于这个基准中的矩阵,FLINTfmpz最大值正在使用多模式算法。Pari/GP也使用类似的算法,但它比FLINT慢一些。
如果实现了朴素算法,FLINTfmpz_t型大约比GMP快3倍英里/小时带有小条目(对于中等规模的项目,最坏速度慢20%)由于对适合单个机器字的值使用内联表示。
一元多项式算术
Weil多项式列表
基兰·S·凯德拉亚报告:
我在Sage库中编制Weil多项式表格的代码广泛使用了$\mathbf{Z}$上的FLINT单变量多项式,特别是使用Sturm-Habicht序列计算实根。一个具体的应用出现在我最近的三篇关于函数域相关类第一问题的论文中[我,二,三],在这里,我最终以一定的规模运行了这段代码,将数百万个威尔多项式制成表格。
1万亿以下的一致数字
2009年,FLINT被一起使用具有zn_聚乙烯对于大幂级数计算,确定10^{12}以下的同余数$,这一结果被媒体广泛报道(“万亿三角形”)。
求解多项式系统
使用FLINT整数算法和一元多项式算法在中msolve公司图书馆用于求解多元系统。例如,作者写道:
为了处理大的度,我们以渐进的速度重新访问Taylor shift(…)的算法,并使用基于FFT的单变量FLINT乘法具有整数系数的多项式。这是一个主要区别因为(错误的)信念是渐近的在这种情况下,快速算法是无用的。这使我们能够获得性能优于的单变量求解器计算示例的最新进展
多元多项式算术
FLINT包括用于多元多项式的快速多线程代码在$\mathbf{Z}$、$\mathbf{Q}$和$\mat血红蛋白{Z}/n和其他系数环。一些旧的(2019年)基准结果可用(第1部分,第2部分)与Maple、Trip和Giac相比表现良好稀疏和稠密问题。
费曼积分的约化
火灾是一个对费曼积分。从版本6开始,FIRE允许使用FLINT作为多元多项式算法的后端。基准测试问题的一个例子是“三环香蕉图”,作者对此写:
我们考虑具有四种不同内部质量$m_1,m_2,m_3,m_4$的不等质量情况。外部质量设置为数值,$p^2=1$。我们减少了一个张量积分,其分子是$m_2$线的回路动量和$m_3$线的环路动量之间的点积。执行时间如表5所示。与之前的基准不同,这一个基准有异常多的运动学尺度。在这种情况下,FLINT和Symbolica后端比Fermat后端提供了戏剧性的加速,最多可达9倍。
简化程序 |
时间(1000秒) |
打火石 |
0.62, 1.01 |
Symbolica公司 |
1.02、1.66 |
费马 |
5.36, 9.23 |
对于三个不同的简化程序后端,FIRE对内部质量不相等、分子等级为1的三回路香蕉图执行IBP简化所花费的时间。每个结果都显示为两个数字,表示在两台不同的机器上测量的时间。
处理代数和精确数字
两个大表达式的相等性
计算机代数系统常常很困难操作精确的数字,如$\sqrt{2+\sqrt}}$当表达式变大时。FLINT有时可以更容易地处理此类问题。2020年SageMath用户报道当被要求检查时,SageMath没有在六个小时内完成两个代数数的等式$A=B$这是在矩阵计算中产生的。数字的表达式包含嵌套的平方根,并且有大约7000个术语。FLINT的当前版本在四秒钟内证明了这一等式。
将正方形切割成类似的矩形
伊恩·亨德森有一个写得很好关于枚举将一个正方形切成$n$个类似矩形的所有方法。通过彻底的计算机搜索,此问题已解决,最多$n=8$使用FLINT/C钙中的精确实数表示多项式的根。
数值计算
FLINT中的ball算法(以前是单独的Arb库)用于各种需要的应用(物理、生物、工程、数论等)非常精确和可靠的数值计算。
认证ODE求解和分析延拓
这个ore_代数包裹对于SageMath,包括由马克·梅扎罗巴用于计算完整ODE的严格任意决定解并通过复平面分析地继续这样的解。FLINT/Arb用于复数的底层算术矩阵、多项式和幂级数。应用包括:
四极辐射的精确高斯因子
约瑟夫·普拉德勒和卢卡斯·塞梅尔洛克写入天体物理学杂志(2021)关于计算非相对论四极轫致辐射的精确高斯因子:
计算大虚参的超几何函数是一项困难的任务[…]。[Arb]的一个特殊优点是超几何函数的严格计算[…];通用软件框架,如数学软件似乎无法产生结果对于$|\nu_i|\gtrsim 100$,在合理的时间内获取所有必需的函数值
我们使用Arb计算超几何函数、Sommerfeld因子以及所有系数;简而言之,整个表达式这是必需的,因为首先,$S_i S_f\times|{}_2F_1(i\nu_f,i\nu_i;1;z)|^2$等产品可以是格式为$birge\乘以miny$,第二个原因是这些条款的最终线性组合中的取消。由于$S_{i,f}$中包含的因素$\exp(\pm\nu_{i,f})$,结果是所需的精度大约为$\nu{i,f}$。在我们的表格中因此,我们用高达10^4$位数的精度。
三元哥德巴赫猜想
FLINT/Arb已用于Harald Helfgott的某些计算三元哥德巴赫问题的解,例如建立Riemann-zeta函数积分的精确界在复杂平面中。赫尔夫戈特的书中对计算进行了更详细的描述在他的网站上。
图:Helfgott积分之一的短子段:$\int_{-\tfrac{1}{4}+8i}^{-\tfrac{1{4}+4000i}\left|\frac{F{19}(s+\tfrac}{1}}{2})F{19{(s+1)}{s^2}\right||ds|$,其中$F_N(s)=\zeta(s)\prod_{p\leqN}(1-p^{-s})$。
黎曼假设
迄今为止对黎曼假说的最高验证已完成Dave Platt和Trim Trudgian于2020年,达到高度$3\cdot 10^{12}$。他们的部分计算使用了FLINT/Arb ball算法
[…]代替了全区间算法,它节省了大约50%的空间使应用程序更易于缓存。
de Bruijn-Newman常数
FLINT/Arb用于大型分布式计算作为“博学”项目的一部分绑定了de Bruijn-Newman常数.一位贡献者写道:
您的软件的健壮性以及它给我们带来的巨大速度提升给我们留下了深刻印象(比Pari/GP快20-30倍)。到目前为止,我们还没有在软件中遇到任何错误。做得好!
偏微分方程的行波解
乔尔·达恩和哈维尔·戈梅斯·塞拉诺有证明存在的周期性最高、尖点行波解Burgers-Hilbert方程,以及最近的分数KdV方程。证明中的间隔计算在384核集群上运行了10000个CPU小时,利用幂级数算法和特殊函数由FLINT/Arb提供。作者写道:
这些界限非常非平凡特定的$\delta{0}$由上函数的上确界给出达到最大值的间隔$[0,\pi]$$10^{-5000}$. […]注意这些数字非常小,甚至无法表示标准四倍精度二进制128尽管Arb已经处理它们没有问题。