2016-07-22 20 views
0

lapack/blasを使用していくつかのopensourceをダウンロードしました。これをSIMDコード生成のEigenベースのソースに変更したいと思います。固有ライブラリ関数はlapackと同じdsyev_

Eigenライブラリにはdsyevと同じ機能があり、LAPACKにありますか?

dsyveは、いくつかの目的でinfo値を返します。

私が知る限り、eigensolverEigenにライブラリeigenvalueまたはeigenvectorを返します。

私はEigenライブラリに欲しい機能がありますか?

答えて

2

.info()と、他のAPIであるSelfAdjointEigenSolverがあります。

tutorial pageも使用方法を示します。

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

あなたが本当にdsyev()によって報告されNoConvergenceの詳細をお知りになりたい場合は、低レベルのLAPACKのAPIを使用する必要があります。

この関数は、値の情報を返します。

info = 0の場合、実行は成功です。

info = -iの場合、i番目のパラメータの値が不正です。

info = iの場合、アルゴリズムは収束しませんでした。 iは の中間三重対角形の要素の数を示し、 はゼロに収束していません。

+0

私が知りたいのは、成功/失敗(0かどうか)です。私は失敗の理由が必要ない(-i〜+ i)あなたの答えをありがとう。 – eclipse0922

関連する問題