C++ 支持长双打的最喜爱/最佳A.X=B解算器?

C++ 支持长双打的最喜爱/最佳A.X=B解算器?,c++,linear-algebra,numerical-methods,long-double,C++,Linear Algebra,Numerical Methods,Long Double,我希望反复地解决一个X=B(A^-1)问题。也就是说,解一个线性系统。对于C++,哪些数值求解器支持128位长双倍(Quad)? 使用C样式的数组是一个主要的优点,因为我的所有2D数据都存储为单个std::vector 我希望用GCC或ICC编译Linux上的代码。< /P> < P>许多C++线性代数库是基于模板的,包括NT2、Boost.uBLAS、EGIN(参见链接)。因此,如果您的编译器/库可以使用四边形进行数学运算,那么它们应该能够支持四边形。例如,在Eigen中,类型Eigen::M

我希望反复地解决一个X=B(A^-1)问题。也就是说,解一个线性系统。对于C++,哪些数值求解器支持128位长双倍(Quad)?

使用C样式的数组是一个主要的优点,因为我的所有2D数据都存储为单个std::vector


我希望用GCC或ICC编译Linux上的代码。< /P> < P>许多C++线性代数库是基于模板的,包括NT2、Boost.uBLAS、EGIN(参见链接)。因此,如果您的编译器/库可以使用四边形进行数学运算,那么它们应该能够支持四边形。例如,在Eigen中,类型
Eigen::Matrix
表示包含长双精度的任意大小的矩阵,您可以使用标准函数来求解此类矩阵。

我认为128位方面可能是一个问题。最高效的lin alg软件包(即lapack和它的kin)通过调用blas库(如intel mkl或amd acml等)实现其高性能。我只看到blas库支持单精度和双精度,而不是四精度。此外,您的硬件是否支持四精度?嗯,编译器似乎能够将它们用于简单的算术。xmm有128位,对吗?我在家里使用的是Q6600英特尔处理器,从来没有想过会支持任何更早的版本。如果你说的是sse2指令集中的xmm寄存器,那么是的,它们是128位宽,但不是四精度,它们提供“矢量化”浮点运算,即,通过单个asm指令在4个单板或2个双板上操作。好的blas库使用sse2/sse3/sse4等。这些库似乎是稀疏矩阵解算器。所以这不是我想要的。无论如何谢谢你的帮助!