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 )。
评论