Visible to Intel only — GUID: GUID-16EB5901-5644-4DA6-A332-A052309010C4
Visible to Intel only — GUID: GUID-16EB5901-5644-4DA6-A332-A052309010C4
?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 );
Include Files
- 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.