Собственная библиотека функционирует так же, как Лапак Дсеві

Я скачал некоторые с открытым исходным кодом, используя 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 указывает количество элементов промежуточной трехугольной формы, которые не сходятся к нулю.

Другие вопросы по тегам