如何使用长双倍的Eigen?

时间:2018-07-03 14:30:04

标签: c++ eigen

我想在我的C ++程序中调用Eigen软件包的稀疏线性系统求解器。但是,如果我的矩阵和向量为long double类型,我不知道如何使用这些求解器。您能否帮我重写下面的示例代码(从Eigen主页开始),以便它可以处理长双精度矩阵和向量?

#include <Eigen/RequiredModuleName>
// ...
SparseMatrix<double> A;
// fill A
VectorXd b, x;
// fill b
// solve Ax = b
SolverClassName<SparseMatrix<double> > solver;
solver.compute(A);
if(solver.info()!=Success) {
  // decomposition failed
  return;
}
x = solver.solve(b);
if(solver.info()!=Success) {
  // solving failed
  return;
}
// solve for another right hand side:
x1 = solver.solve(b1);

1 个答案:

答案 0 :(得分:0)

正是由于这个原因,大多数Eigen数据类型(包括向量和矩阵)都是模板。

您所要做的就是将代码段中模板参数中的double替换为long double,它应该可以工作(假设这是您要执行的操作):

// ...
SparseMatrix<long double> A;
// fill A
VectorXd b, x;
// fill b
// solve Ax = b
SolverClassName<SparseMatrix<long double> > solver;
solver.compute(A);
if(solver.info()!=Success) {
  // decomposition failed
  return;
}
// ...