?geev

Computes the eigenvalues and left and right eigenvectors of a general matrix.

Syntax

lapack_int LAPACKE_sgeev( int matrix_layout, char jobvl, char jobvr, lapack_int n, float* a, lapack_int lda, float* wr, float* wi, float* vl, lapack_int ldvl, float* vr, lapack_int ldvr );

lapack_int LAPACKE_dgeev( int matrix_layout, char jobvl, char jobvr, lapack_int n, double* a, lapack_int lda, double* wr, double* wi, double* vl, lapack_int ldvl, double* vr, lapack_int ldvr );

lapack_int LAPACKE_cgeev( int matrix_layout, char jobvl, char jobvr, lapack_int n, lapack_complex_float* a, lapack_int lda, lapack_complex_float* w, lapack_complex_float* vl, lapack_int ldvl, lapack_complex_float* vr, lapack_int ldvr );

lapack_int LAPACKE_zgeev( int matrix_layout, char jobvl, char jobvr, lapack_int n, lapack_complex_double* a, lapack_int lda, lapack_complex_double* w, lapack_complex_double* vl, lapack_int ldvl, lapack_complex_double* vr, lapack_int ldvr );

• mkl.h

Description

The routine computes for an n-by-n real/complex nonsymmetric matrix A, the eigenvalues and, optionally, the left and/or right eigenvectors. The right eigenvector v of A satisfies

A*v = λ*v

where λ is its eigenvalue.

The left eigenvector u of A satisfies

uH*A = λ*uH

where uH denotes the conjugate transpose of u. The computed eigenvectors are normalized to have Euclidean norm equal to 1 and largest component real.

Input Parameters

matrix_layout

Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).

jobvl

Must be 'N' or 'V'.

If jobvl = 'N', then left eigenvectors of A are not computed.

If jobvl = 'V', then left eigenvectors of A are computed.

jobvr

Must be 'N' or 'V'.

If jobvr = 'N', then right eigenvectors of A are not computed.

If jobvr = 'V', then right eigenvectors of A are computed.

n

The order of the matrix A (n 0).

a

a (size at least max(1, lda*n)) is an array containing the n-by-n matrix A.

lda

The leading dimension of the array a. Must be at least max(1, n).

ldvl, ldvr

The leading dimensions of the output arrays vl and vr, respectively.

Constraints:

ldvl 1; ldvr 1.

If jobvl = 'V', ldvl max(1, n);

If jobvr = 'V', ldvr max(1, n).

Output Parameters

a

On exit, this array is overwritten.

wr, wi

Arrays, size at least max (1, n) each.

Contain the real and imaginary parts, respectively, of the computed eigenvalues. Complex conjugate pairs of eigenvalues appear consecutively with the eigenvalue having positive imaginary part first.

w

Array, size at least max(1, n).

Contains the computed eigenvalues.

vl, vr

Arrays:

vl (size at least max(1, ldvl*n)) .

If jobvl = 'N', vl is not referenced.

For real flavors:

If the j-th eigenvalue is real,the i-th component of the j-th eigenvector uj is stored in vl[(i - 1) + (j - 1)*ldvl] for column major layout and in vl[(i - 1)*ldvl + (j - 1)] for row major layout..

If the j-th and (j+1)-st eigenvalues form a complex conjugate pair, then for i = sqrt(-1), the k-th component of the j-th eigenvector uj is vl[(k - 1) + (j - 1)*ldvl] + i*vl[(k - 1) + j*ldvl] for column major layout and as vl[(k - 1)*ldvl + (j - 1)] + i*vl[(k-1)*ldvl + j] for row major layout. Similarly, the k-th component of vector (j+1) uj + 1 is vl[(k - 1) + (j - 1)*ldvl] - i*vl[(k - 1) + j*ldvl] for column major layout and as vl[(k - 1)*ldvl + (j - 1)] -i*vl[(k - 1)*ldvl + j] for row major layout. .

For complex flavors:

The i-th component of the j-th eigenvector uj is stored in vl[(i - 1) + (j - 1)*ldvl] for column major layout and in vl[(i - 1)*ldvl+(j - 1)] for row major layout.

vr (size at least max(1, ldvr*n)).

If jobvr = 'N', vr is not referenced.

For real flavors:

If the j-th eigenvalue is real, then the i-th component of j-th eigenvector vj is stored in vr[(i - 1) + (j - 1)*ldvr] for column major layout and in vr[(i - 1)*ldvr + (j - 1)] for row major layout..

If the j-th and (j+1)-st eigenvalues form a complex conjugate pair, then for i = sqrt(-1), the k-th component of the j-th eigenvector vj is vr[(k - 1) + (j - 1)*ldvr] +i*vr[(k - 1) + j*ldvr] for column major layout and as vr[(k - 1)*ldvr + (j - 1)] + i*vr[(k - 1)*ldvr + j] for row major layout. Similarly, the k-th component of vector j + 1) vj + 1 is vr[(k - 1) + (j - 1)*ldvr] - i*vr[(k - 1) + j*ldvr] for column major layout and as vr[(k - 1)*ldvr + (j - 1)] - i*vr[(k - 1)*ldvr + j] for row major layout.

For complex flavors:

The i-th component of the j-th eigenvector vj is stored in vr[(i - 1) + (j - 1)*ldvr] for column major layout and in vr[(i - 1)*ldvr + (j - 1)] for row major layout.

Return Values

This function returns a value info.

If info=0, the execution is successful.

If info = -i, the i-th parameter had an illegal value.

If info = i, the QR algorithm failed to compute all the eigenvalues, and no eigenvectors have been computed; elements i+1:n of wr and wi (for real flavors) or w (for complex flavors) contain those eigenvalues which have converged.

For more complete information about compiler optimizations, see our Optimization Notice.