我正在做一项研究,涉及4维相空间中具有复系数的线性微分方程。为了能够检验关于解的根的一些假设,我需要能够以任意精度数值求解这些方程。我曾经使用mpmath
Python模块,但它工作缓慢,所以我更喜欢用C/C++重写我的程序,以实现最大的性能。所以我有一个问题:
是否存在同时支持任意精度算术和复数的C/C++线性代数库?我需要一些基本的功能,比如点积等等。(实际上,我也需要矩阵指数,但如果需要,我可以自己实现)。
我尝试将Eigen
与MPFR C++
一起使用,但由于它不支持复数,所以失败了(像complex <mpreal>
这样的构造不起作用,因为它假设基类型是标准浮点)。
尝试使用任意精度的数字库(例如GMPhttp://gmplib.org/)具有支持复数的线性代数数学库(例如Eigenhttp://eigen.tuxfamily.org/)
最后,zkcm似乎做到了我想要的。我不确定从性能的角度来看它是否好(没有做任何基准测试),但至少它能工作并提供所有必要的功能。
您可以从boost中查看uBLAS。