Arb 任意精度区间算法 C 库开源项目

我要开发同款
匿名用户2021年12月08日
49阅读
开发技术C/C++
所属分类程序开发、数学计算
授权协议LGPL

作品详情

Arb是一个用于任意精度区间算法的C语言库,完全支持实数和复数。该库线程安全、可移植,且经过广泛测试。

特征除了基本算术,Arb还允许处理单变量多项式、截断幂级数以及实数和复数矩阵。支持基本线性代数,包括矩阵乘法、行列式、逆、非奇异求解、矩阵指数以及特征值和特征向量的计算。对多项式和幂级数的支持非常广泛,包括组合、回归、乘积树、多点评估和插值、复根隔离和幂级数的超越函数的方法。其他功能包括实函数的根隔离、复杂函数的严格数值积分和离散傅立叶变换(DFT)。代码示例

以下程序评估sin(pi+exp(-10000)),由于正弦函数的输入将根匹配到4343数位以内,因此至少需要4343个数位(14427-bit)精度才能获得准确的结果。程序以64bit、128bit、...精度重复计算,仅在结果准确到至少53bit时才停止:

#include"arb.h"intmain(){slongprec;arb_tx,y;arb_init(x);arb_init(y);for(prec=64;;prec*=2){arb_const_pi(x,prec);arb_set_si(y,-10000);arb_exp(y,y,prec);arb_add(x,x,y,prec);arb_sin(y,x,prec);arb_printn(y,15,0);printf("\n");if(arb_rel_accuracy_bits(y)>=53)break;}arb_clear(x);arb_clear(y);flint_cleanup();}

输出:

[+/-6.01e-19][+/-2.55e-38][+/-8.01e-77][+/-8.64e-154][+/-5.37e-308][+/-3.63e-616][+/-1.07e-1232][+/-9.27e-2466][-1.13548386531474e-4343+/-3.91e-4358]

每一行都严格地包含了表达式的精确值,该程序演示了用户如何依靠Arb的自动错误边界跟踪来获得保证准确的输出——用户无需进行错误分析。

依赖项

Arb依赖于

FLINT( https://flintlib.org/ )、GMP( https://gmplib.org )或MPIR( https://mpir.org )MPFR( https://mpfr.org )。

 

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论