在 Eigen3 中使用 GMP

use*_*953 3 gmp eigen

我正在开发一些示例程序,并尝试使用 Eigen3 库提供的矩阵功能。我想将高精度整数变量(mpz_t)存储在(100,100)矩阵中。为了存储整数,已经有内置的数据类型MatrixXd。同样,只是想要高精度变量。请分享一些建议。

谢谢。

gga*_*ael 5

基本上,您需要做的就是声明一个Matrix<mpz_class,Dynamic,Dynamic>矩阵。该mpz_class类型是 C++ 包装器mpz_t,其行为类似于任何标量类型。

这是一个例子:

#include <Eigen/Core>
#include <gmpxx.h>

using namespace Eigen;
typedef Matrix<mpz_class,Dynamic,Dynamic> MatrixXz;

int main() {
  MatrixXz A(10,10), B(10,10), C(10,10);
  A.fill(111);
  B.fill(222);
  C = 2*A + B;
}
Run Code Online (Sandbox Code Playgroud)