MPLAPACKver1.0.1:高精度数値計算のLAPACK実装とチュートリアル

需积分: 0 0 下载量 21 浏览量 更新于2024-06-30 收藏 6.08MB PDF 举报
"本次会议是中田真秀在2021年11月28日举行的关于精度保证付数値計算実問題応用研究的第五次会议,重点介绍了MPLAPACK版本1.0.1,一个支持多倍长精度计算的C++库,该库基于LAPACK并提供了非对称矩阵对角化和特异值求解等功能。" MPLAPACK是针对多倍长精度计算需求而设计的一个C++库,它在LAPACK的基础上实现了多种数值计算算法,如LU分解、Cholesky分解、逆矩阵计算、条件数估计、特异值分解以及非对称和对称矩阵以及一般化固有值问题的解决。这个库特别强调了对实数计算的全面支持,包括LU分解、逆矩阵、埃尔米特矩阵的固有值问题等。然而,它在复数计算方面相对较弱,仅支持LU分解、逆矩阵计算以及复数的埃尔米特矩阵固有值问题。 MPLAPACK v1.0.1利用了MPFR和MPC作为参考实现,同时支持GMP、_Float128、_Float64x、double(!?)、double-double和quad-double等多种数据类型,提供广泛的精度选择。MPFR和GMP版本还允许用户通过环境变量在运行时调整精度设置。值得注意的是,尽管大部分功能与普通double/float数据类型的使用方式相似,但MPLAPACK使用了C++编写,解决了LAPACK原本使用Fortran90编写的语言障碍。 该项目基于LAPACK 3.9.1版本(2021年4月1日发布),并通过FABLE(Automatic Fortran to C++ converter)工具大大缩短了开发时间。MPLAPACK兼容多种平台,包括Linux、Windows和Mac,并且支持Tier1的Arm64、amd64架构,以及Tier2的PowerPC64、S390、mips64和riscv64等。对于Linux和Windows系统,推荐使用Docker进行构建。为了确保质量,MPLAPACK进行了详尽的测试,每个类都检查到溢出和下溢的边缘情况,并创建了高精度版本的LAPACK质量保证程序进行验证。 该项目采用了2条款BSD许可证,但其中的部分组件mpfrc++遵循LGPL最终版,gmpcxx则采用LGPL或GPL双许可。详细的文档和手册可在指定链接中查阅。 MPLAPACK是数值计算领域的一个强大工具,特别是对于需要高精度计算的非对称矩阵对角化和特异值求解的应用,它提供了一个方便且可扩展的C++接口。同时,它还具有良好的跨平台支持和丰富的精度选项,为科研和工程计算提供了有力的支撑。