Visible to Intel only — GUID: GUID-03FB5E36-F0CB-46BC-BE6D-8E56A16AE507
Visible to Intel only — GUID: GUID-03FB5E36-F0CB-46BC-BE6D-8E56A16AE507
?ggev3
Computes the generalized eigenvalues and the left and right generalized eigenvectors for a pair of matrices.
Syntax
call sggev3 (jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, beta, vl, ldvl, vr, ldvr, work, lwork, info )
call dggev3 (jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, beta, vl, ldvl, vr, ldvr, work, lwork, info )
call cggev3 (jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, ldvl, vr, ldvr, work, lwork, rwork, info )
call zggev3 (jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, ldvl, vr, ldvr, work, lwork, rwork, info )
Include Files
- mkl.fi
Description
For a pair of n-by-n real or complex nonsymmetric matrices (A, B), ?ggev3 computes the generalized eigenvalues, and optionally, the left and right generalized eigenvectors.
A generalized eigenvalue for a pair of matrices (A, B) is a scalar λ or a ratio alpha/beta = λ, such that A - λ*B is singular. It is usually represented as the pair (alpha,beta), as there is a reasonable interpretation for beta=0, and even for both being zero.
For real flavors:
The right eigenvector vj corresponding to the eigenvalue λj of (A, B) satisfies
A * vj = λj * B * vj.
The left eigenvector uj corresponding to the eigenvalue λj of (A, B) satisfies
ujH * A = λj * ujH * B
where ujH is the conjugate-transpose of uj.
For complex flavors:
The right generalized eigenvector vj corresponding to the generalized eigenvalue λj of (A, B) satisfies
A * vj = λj * B * vj.
The left generalized eigenvector uj corresponding to the generalized eigenvalues λj of (A, B) satisfies
ujH * A = λj * ujH * B
where ujH is the conjugate-transpose of uj.
Input Parameters
- jobvl
-
CHARACTER*1. = 'N': do not compute the left generalized eigenvectors;
= 'V': compute the left generalized eigenvectors.
- jobvr
-
CHARACTER*1. = 'N': do not compute the right generalized eigenvectors;
= 'V': compute the right generalized eigenvectors.
- n
-
INTEGER. The order of the matrices A, B, VL, and VR.
n≥ 0.
- a
-
REAL for sggev3
DOUBLE PRECISION for dggev3
COMPLEX for cggev3
DOUBLE COMPLEX for zggev3
Array, size (lda, n).
On entry, the matrix A in the pair (A, B).
- lda
-
INTEGER. The leading dimension of a.
lda≥ max(1,n).
- b
-
REAL for sggev3
DOUBLE PRECISION for dggev3
COMPLEX for cggev3
DOUBLE COMPLEX for zggev3
Array, size (ldb, n).
On entry, the matrix B in the pair (A, B).
- ldb
-
INTEGER. The leading dimension of b.
ldb≥ max(1,n).
- ldvl
-
INTEGER. The leading dimension of the matrix VL.
ldvl≥ 1, and if jobvl = 'V', ldvl≥n.
- ldvr
-
INTEGER. The leading dimension of the matrix VR.
ldvr≥ 1, and if jobvr = 'V', ldvr≥n.
- work
-
REAL for sggev3
DOUBLE PRECISION for dggev3
COMPLEX for cggev3
DOUBLE COMPLEX for zggev3
Array, size (MAX(1,lwork))
On exit, if info = 0, work(1) returns the optimal lwork.
- lwork
-
INTEGER. The dimension of the array work.
If lwork = -1, then a workspace query is assumed; the routine only calculates the optimal (A, B) of the work array, returns this value as the first entry of the work array, and no error message related to lwork is issued by xerbla.
- rwork
-
REAL for cggev3
DOUBLE PRECISION for zggev3
Array, size (8*n).
Output Parameters
a |
On exit, a is overwritten. |
b |
On exit, b is overwritten. |
alphar |
REAL for sggev3 DOUBLE PRECISION for dggev3 Array, size (n). |
alphai |
REAL for sggev3 DOUBLE PRECISION for dggev3 Array, size (n). |
alpha |
COMPLEX for cggev3 DOUBLE COMPLEX for zggev3 Array, size (n). |
beta |
REAL for sggev3 DOUBLE PRECISION for dggev3 COMPLEX for cggev3 DOUBLE COMPLEX for zggev3 Array, size (n). For real flavors: On exit, (alphar(j) + alphai(j)*i)/beta(j), j=1,...,n, are the generalized eigenvalues. If alphai(j) is zero, then the j-th eigenvalue is real; if positive, then the j-th and (j+1)-st eigenvalues are a complex conjugate pair, with alphai(j + 1) negative. Note: the quotients alphar(j)/beta(j) and alphai(j)/beta(j) can easily over- or underflow, and beta(j) might even be zero. Thus, you should avoid computing the ratio alpha/beta by simply dividing alpha by beta. However, alphar and alphai are always less than and usually comparable with norm(A) in magnitude, and beta is always less than and usually comparable with norm(B). For complex flavors: On exit, alpha(j)/beta(j), j=1,...,n, are the generalized eigenvalues. Note: the quotients alpha(j)/beta(j) may easily over- or underflow, and beta(j) can even be zero. Thus, you should avoid computing the ratio alpha/beta by simply dividing alpha by beta. However, alpha is always less than and usually comparable with norm(A) in magnitude, and betais always less than and usually comparable with norm(B). |
vl |
REAL for sggev3 DOUBLE PRECISION for dggev3 COMPLEX for cggev3 DOUBLE COMPLEX for zggev3 Array, size (ldvl, n). For real flavors: If jobvl = 'V', the left eigenvectors uj are stored one after another in the columns of vl, in the same order as their eigenvalues. If the j-th eigenvalue is real, then uj =vl(:,j), the j-th column of vl. If the j-th and (j+1)-st eigenvalues form a complex conjugate pair, then uj = vl(:,j)+i*vl(:,j+1) and uj + 1 = vl(:,j)-i*vl(:,j+1). Each eigenvector is scaled so the largest component has abs(real part)+abs(imag. part)=1. Not referenced if jobvl = 'N'. For complex flavors: If jobvl = 'V', the left generalized eigenvectors uj are stored one after another in the columns of vl, in the same order as their eigenvalues. Each eigenvector is scaled so the largest component has abs(real part) + abs(imag. part) = 1. Not referenced if jobvl = 'N'. |
vr |
REAL for sggev3 DOUBLE PRECISION for dggev3 COMPLEX for cggev3 DOUBLE COMPLEX for zggev3 Array, size (ldvr, n). For real flavors: If jobvr = 'V', the right eigenvectors vj are stored one after another in the columns of vr, in the same order as their eigenvalues. If the j-th eigenvalue is real, then vj =vr(:,j), the j-th column of vr. If the j-th and (j + 1)-st eigenvalues form a complex conjugate pair, then vj = vr(:,j) + i*vr(:,j + 1) and vj + 1 = vr(:,j)-i*vr(:,j+1). Each eigenvector is scaled so the largest component has abs(real part)+abs(imag. part)=1. Not referenced if jobvr = 'N'. For complex flavors: If jobvr = 'V', the right generalized eigenvectors vj are stored one after another in the columns of vr, in the same order as their eigenvalues. Each eigenvector is scaled so the largest component has abs(real part) + abs(imag. part) = 1. Not referenced if jobvr = 'N'. |
info |
INTEGER. = 0: successful exit. < 0: if info = -i, the i-th argument had an illegal value. =1,...,n:
> n:
|