Собственная библиотека функционирует так же, как Лапак Дсеві
Я скачал некоторые с открытым исходным кодом, используя lapack/blas
и я хочу изменить это в Eigen
основанный источник для авто SIMD
генерация кода.
Есть ли какая-либо функция в Eigen
библиотека такая же как dsyev
в LAPACK
,
dsyve
возвращается info
значение для нескольких целей.
но насколько я знаю, eigensolver
в Eigen
библиотека возвращается eigenvalue
или же eigenvector
,
Есть ли функция, что я хочу в Eigen
библиотека.
1 ответ
Я думаю, что вы хотите .info()
а также другие API, предоставляемые SelfAdjointEigenSolver
,
На странице учебника также показано, как его использовать.
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
Matrix2f A;
A << 1, 2, 2, 3;
cout << "Here is the matrix A:\n" << A << endl;
SelfAdjointEigenSolver<Matrix2f> eigensolver(A);
if (eigensolver.info() != Success) abort();
cout << "The eigenvalues of A are:\n" << eigensolver.eigenvalues() << endl;
cout << "Here's a matrix whose columns are eigenvectors of A \n"
<< "corresponding to these eigenvalues:\n"
<< eigensolver.eigenvectors() << endl;
}
Если вы действительно хотите узнать подробности NoConvergence
как сообщается dsyev()
Возможно, вам придется использовать низкоуровневый LAPACK API.
Эта функция возвращает информацию о значении.
Если info=0, выполнение выполнено успешно.
Если info = -i, i-й параметр имеет недопустимое значение.
Если info = i, то алгоритм не смог сходиться; i указывает количество элементов промежуточной трехугольной формы, которые не сходятся к нулю.