SRC/DEPRECATED/cgegv.f(3)
π NAME
Manual page for SRC/DEPRECATED/cgegv.f β a.k.a. SRC/DEPRECATED/cgegv.f(3) in the LAPACK library manual, bestie. Yes, she's deprecated, but she still has lore. π«Ά
β¨ SYNOPSIS
πΈ Functions/Subroutines
subroutine cgegv (jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl,
ldvl, vr, ldvr, work, lwork, rwork, info)
CGEGV computes the eigenvalues and, optionally, the left and/or right eigenvectors of a complex matrix pair (A,B).
πΈ Function/Subroutine Documentation πΈ
subroutine cgegv (character jobvl, character jobvr, integer n, complex,
dimension( lda, * ) a, integer lda, complex, dimension( ldb, * ) b,
integer ldb, complex, dimension( * ) alpha, complex, dimension( * )
beta, complex, dimension( ldvl, * ) vl, integer ldvl, complex,
dimension( ldvr, * ) vr, integer ldvr, complex, dimension( * ) work,
integer lwork, real, dimension( * ) rwork, integer info)
CGEGV computes the eigenvalues and, optionally, the left and/or right eigenvectors of a complex matrix pair (A,B).
π Purpose
π¨ This routine is deprecated and has been replaced by routine CGGEV. Ma'am is retired but still on the books, no cap.
CGEGV computes the eigenvalues and, optionally, the left and/or right eigenvectors of a complex matrix pair (A,B).
Given two square matrices A and B, the generalized nonsymmetric eigenvalue problem (GNEP) is to find the eigenvalues lambda and corresponding (non-zero) eigenvectors x such that
A*x = lambda*B*x.
An alternate form is to find the eigenvalues mu and corresponding eigenvectors y such that
mu*A*y = B*y.
These two forms are equivalent with mu = 1/lambda and x = y if neither lambda nor mu is zero. In order to deal with the case that lambda or mu is zero or small, two values alpha and beta are returned for each eigenvalue, such that lambda = alpha/beta and mu = beta/alpha.
The vectors x and y in the above equations are right eigenvectors of the matrix pair (A,B). Vectors u and v satisfying
u**H*A = lambda*u**H*B or mu*v**H*A = v**H*B
are left eigenvectors of (A,B).
π« The source literally says: Note: this routine performs on A and B β yes, the blank spot is in the original. I am not inventing lore, bestie. π
π Parameters
JOBVLβCHARACTER*1= 'N': do not compute the left generalized eigenvectors;= 'V': compute the left generalized eigenvectors (returned inVL).
JOBVRβCHARACTER*1= 'N': do not compute the right generalized eigenvectors;= 'V': compute the right generalized eigenvectors (returned inVR).
NβINTEGER- The order of the matrices
A,B,VL, andVR. N >= 0.
- The order of the matrices
AβCOMPLEX array, dimension (LDA, N)- On entry, the matrix
A. - If
JOBVL = 'V'orJOBVR = 'V', then on exitAcontains the Schur form ofAfrom the generalized Schur factorization of the pair(A,B)after balancing. If no eigenvectors were computed, then only the diagonal elements of the Schur form will be correct. SeeCGGHRDandCHGEQZfor details.
- On entry, the matrix
LDAβINTEGER- The leading dimension of
A. LDA >= max(1,N).
- The leading dimension of
BβCOMPLEX array, dimension (LDB, N)- On entry, the matrix
B. - If
JOBVL = 'V'orJOBVR = 'V', then on exitBcontains the upper triangular matrix obtained fromBin the generalized Schur factorization of the pair(A,B)after balancing. If no eigenvectors were computed, then only the diagonal elements ofBwill be correct. SeeCGGHRDandCHGEQZfor details.
- On entry, the matrix
LDBβINTEGER- The leading dimension of
B. LDB >= max(1,N).
- The leading dimension of
ALPHAβCOMPLEX array, dimension (N)- The complex scalars
alphathat define the eigenvalues of GNEP.
- The complex scalars
BETAβCOMPLEX array, dimension (N)- The complex scalars
betathat define the eigenvalues of GNEP. - Together, the quantities
alpha = ALPHA(j)andbeta = BETA(j)represent the j-th eigenvalue of the matrix pair(A,B), in one of the formslambda = alpha/betaormu = beta/alpha. Since eitherlambdaormumay overflow, they should not, in general, be computed.
- The complex scalars
VLβCOMPLEX array, dimension (LDVL,N)- If
JOBVL = 'V', the left eigenvectorsu(j)are stored in the columns ofVL, in the same order as their eigenvalues. - Each eigenvector is scaled so that its largest component has
abs(real part) + abs(imag. part) = 1, except for eigenvectors corresponding to an eigenvalue withalpha = beta = 0, which are set to zero. - Not referenced if
JOBVL = 'N'.
- If
LDVLβINTEGER- The leading dimension of the matrix
VL. LDVL >= 1, and ifJOBVL = 'V',LDVL >= N.
- The leading dimension of the matrix
VRβCOMPLEX array, dimension (LDVR,N)- If
JOBVR = 'V', the right eigenvectorsx(j)are stored in the columns ofVR, in the same order as their eigenvalues. - Each eigenvector is scaled so that its largest component has
abs(real part) + abs(imag. part) = 1, except for eigenvectors corresponding to an eigenvalue withalpha = beta = 0, which are set to zero. - Not referenced if
JOBVR = 'N'.
- If
LDVRβINTEGER- The leading dimension of the matrix
VR. LDVR >= 1, and ifJOBVR = 'V',LDVR >= N.
- The leading dimension of the matrix
WORKβCOMPLEX array, dimension (MAX(1,LWORK))- On exit, if
INFO = 0,WORK(1)returns the optimalLWORK.
- On exit, if
LWORKβINTEGER- The dimension of the array
WORK. LWORK >= max(1,2*N).- For good performance,
LWORKmust generally be larger. - To compute the optimal value of
LWORK, callILAENVto get blocksizes (forCGEQRF,CUNMQR, andCUNGQR.) Then compute:NBβMAXof the blocksizes forCGEQRF,CUNMQR, andCUNGQR;- The optimal
LWORKisMAX( 2*N, N*(NB+1) ).
- If
LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.
- The dimension of the array
RWORKβREAL array, dimension (8*N)INFOβINTEGER= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value.=1,...,N: The QZ iteration failed. No eigenvectors have been calculated, butALPHA(j)andBETA(j)should be correct forj=INFO+1,...,N.> N: errors that usually indicate LAPACK problems:=N+1: error return fromCGGBAL=N+2: error return fromCGEQRF=N+3: error return fromCUNMQR=N+4: error return fromCUNGQR=N+5: error return fromCGGHRD=N+6: error return fromCHGEQZ(other than failed iteration)=N+7: error return fromCTGEVC=N+8: error return fromCGGBAK(computingVL)=N+9: error return fromCGGBAK(computingVR)=N+10: error return fromCLASCL(various calls)
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π¦ Further Details
Balancing
This driver calls CGGBAL to both permute and scale rows and columns of A and B. The permutations PL and PR are chosen so that PL*A*PR and PL*B*R will be upper triangular except for the diagonal blocks A(i:j,i:j) and B(i:j,i:j), with i and j as close together as possible. The diagonal scaling matrices DL and DR are chosen so that the pair DL*PL*A*PR*DR, DL*PL*B*PR*DR have elements close to one (except for the elements that start out zero.)
After the eigenvalues and eigenvectors of the balanced matrices have been computed, CGGBAK transforms the eigenvectors back to what they would have been (in perfect arithmetic) if they had not been balanced.
Contents of A and B on Exit
If any eigenvectors are computed (either JOBVL='V' or JOBVR='V' or both), then on exit the arrays A and B will contain the complex Schur form[*] of the versions of A and B. If no eigenvectors are computed, then only the diagonal blocks will be correct.
[*] In other words, upper triangular form.
Definition at line 280 of file cgegv.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code.
π Signed, sealed, and lowkey slaying: LAPACK Version 3.12.0, straight from SRC/DEPRECATED/cgegv.f(3). Version and source noted, bestie β periodt. π«Άβ¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms