我想在我的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);
答案 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;
}
// ...