2016-07-22 6 views
0

lapack/blas을 사용하여 일부 opensource를 다운로드했으며 그 코드를 SIMD 코드 생성을 위해 Eigen 기반 소스로 변경하고 싶습니다.고유 라이브러리 함수 lapack과 동일 dsyev_

Eigen 라이브러리의 기능은 dsyev과 동일하고 LAPACK입니다.

dsyve은 여러 가지 목적으로 info 값을 반환합니다.

하지만 알고있는 한 eigensolverEigen 라이브러리는 eigenvalue 또는 eigenvector을 반환합니다.

Eigen 라이브러리에서 원하는 기능이 있습니까?

답변

2

내가 원하는 것은 .info()뿐 아니라 SelfAdjointEigenSolver에서 제공되는 다른 API라고 생각합니다.

tutorial page도 사용 방법을 보여줍니다. 당신이 정말로 dsyev()에 의해보고 된 NoConvergence의 세부 사항을 알고 싶다면

#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; 
} 

, 당신은 낮은 수준의 LAPACK API를 사용 할 수 있습니다.

이 함수는 값 정보를 반환합니다.

info = 0이면 실행이 성공적입니다.

info = -i 인 경우 i 번째 매개 변수의 값이 잘못되었습니다.

info = i이면 알고리즘이 수렴하지 못했습니다. i는 이 0으로 수렴하지 않는 중간 3 중항 형태의 요소의 수를 나타냅니다.

+0

내가 알고 싶은 것은 성공/실패 (0이든 아니든)입니다. 실패 이유가 필요하지 않습니다 (-i ~ + i) 답장을 보내 주셔서 감사합니다. – eclipse0922