【问题标题】:arbitrary precision linear algebra c/c++ library with complex numbers具有复数的任意精度线性代数 c/c++ 库
【发布时间】:2013-11-23 21:48:18
【问题描述】:

我正在进行一项涉及在 4 维相空间中具有复系数的线性微分方程的研究。为了能够检查一些关于解的根的假设,我需要能够以任意精度对这些方程进行数值求解。我曾经使用mpmath Python 模块,但它运行缓慢,所以我更喜欢用 C/C++ 重写我的程序以实现最大性能。所以我有一个问题:

是否存在支持任意精度算术和复数的 C/C++ 线性代数库?我需要一些基本功能,如点积等。 (其实我也需要矩阵指数,但如果需要我可以自己实现)。

我尝试将EigenMPFR C++ 一起使用,但由于它不支持复数而失败(并且像complex <mpreal> 这样的构造不起作用,因为它假定基本类型是标准的浮动)。

【问题讨论】:

  • 您可以将 Eigen 与 MPFR 结合使用。
  • 已编辑问题以满足指南要求。 @Cornstalks,不幸的是,Eigen+MPFR 现在不支持复数(至少我没有找到如何让它工作)。

标签: c++ c linear-algebra arbitrary-precision


【解决方案1】:

尝试使用任意精度数库(例如 GMP http://gmplib.org/)和支持复数的线性代数数学库(例如 Eigen http://eigen.tuxfamily.org/

【讨论】:

  • 不幸的是,它似乎不起作用。至少我没能用 MPFR C++ 做到这一点,也不知道用 Eigen 做任意精度的不同方法。
  • 它应该与不受支持的模块eigen.tuxfamily.org/dox/unsupported/…一起使用
  • 我试过了(甚至联系了 MPFR C++ 的作者),它还不支持复数,只支持实数(注意在示例代码中输入mpreal)。无论如何,谢谢。
【解决方案2】:

最后,zkcm 似乎做了我想做的事。我不确定从性能角度来看它是否好(没有做任何基准测试),但至少它可以工作并提供所有必要的功能。

【讨论】:

    【解决方案3】:

    您可以查看uBLAS from boost

    【讨论】:

    • 谢谢。似乎可以做到,但需要在我的系统上升级很多东西(至少应该使用相当现代的 gcc)。
    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    相关资源
    最近更新 更多