SRC/chegvd.f(3)
π NAME π
SRC/chegvd.f β this page is from the SRC/chegvd.f(3) page in the Library Functions Manual, bestie, and it's the home of the chegvd subroutine: your go-to for complex generalized Hermitian-definite eigenproblems. Iconic.
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine chegvd (itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork,
rwork, lrwork, iwork, liwork, info)
CHEGVD
π¦ Function/Subroutine Documentation π¦
chegvd
subroutine chegvd (integer itype, character jobz, character uplo, integer n,
complex, dimension( lda, * ) a, integer lda, complex, dimension( ldb, *
) b, integer ldb, real, dimension( * ) w, complex, dimension( * ) work,
integer lwork, real, dimension( * ) rwork, integer lrwork, integer,
dimension( * ) iwork, integer liwork, integer info)
CHEGVD
Purpose:
Okay so CHEGVD computes all the eigenvalues, and optionally the eigenvectors, of a complex generalized Hermitian-definite eigenproblem, in one of these forms:
A*x=(lambda)*B*xA*Bx=(lambda)*xB*A*x=(lambda)*x
Here A and B are assumed to be Hermitian, and B is also positive definite. If eigenvectors are desired, it uses a divide and conquer algorithm. Obsessed with the efficiency, honestly.
Parameters
ITYPEβITYPE is INTEGER. Specifies the problem type to be solved:= 1:A*x = (lambda)*B*x= 2:A*B*x = (lambda)*x= 3:B*A*x = (lambda)*x
JOBZβJOBZ is CHARACTER*1.= 'N': compute eigenvalues only;= 'V': compute eigenvalues and eigenvectors.
UPLOβUPLO is CHARACTER*1.= 'U': upper triangles ofAandBare stored;= 'L': lower triangles ofAandBare stored.
NβN is INTEGER. The order of the matricesAandB.N >= 0.AβA is COMPLEX array, dimension (LDA, N). On entry, the Hermitian matrixA. IfUPLO = 'U', the leading N-by-N upper triangular part ofAcontains the upper triangular part of the matrixA. IfUPLO = 'L', the leading N-by-N lower triangular part ofAcontains the lower triangular part of the matrixA.
On exit, if JOBZ = 'V', then if INFO = 0, A contains the matrix Z of eigenvectors. The eigenvectors are normalized as follows:
- if
ITYPE = 1 or 2,Z**H*B*Z = I; - if
ITYPE = 3,Z**H*inv(B)*Z = I.
If JOBZ = 'N', then on exit the upper triangle (if UPLO='U') or the lower triangle (if UPLO='L') of A, including the diagonal, is destroyed.
π Bestie, that last bit is not a drill: withJOBZ = 'N', the triangle ofAyou're using β diagonal included β gets absolutely cooked on exit.
LDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,N).BβB is COMPLEX array, dimension (LDB, N). On entry, the Hermitian matrixB. IfUPLO = 'U', the leading N-by-N upper triangular part ofBcontains the upper triangular part of the matrixB. IfUPLO = 'L', the leading N-by-N lower triangular part ofBcontains the lower triangular part of the matrixB.
On exit, if INFO <= N, the part of B containing the matrix is overwritten by the triangular factor U or L from the Cholesky factorization B = U**H*U or B = L*L**H.
LDBβLDB is INTEGER. The leading dimension of the arrayB.LDB >= max(1,N).WβW is REAL array, dimension (N). IfINFO = 0, the eigenvalues in ascending order.WORKβWORK is COMPLEX array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORK is INTEGER. The length of the arrayWORK.- If
N <= 1,LWORK >= 1. - If
JOBZ = 'N'andN > 1,LWORK >= N + 1. - If
JOBZ = 'V'andN > 1,LWORK >= 2*N + N**2.
- If
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of the WORK, RWORK and IWORK arrays, returns these values as the first entries of the WORK, RWORK and IWORK arrays, and no error message related to LWORK or LRWORK or LIWORK is issued by XERBLA.
RWORKβRWORK is REAL array, dimension (MAX(1,LRWORK)). On exit, ifINFO = 0,RWORK(1)returns the optimalLRWORK.LRWORKβLRWORK is INTEGER. The dimension of the arrayRWORK.- If
N <= 1,LRWORK >= 1. - If
JOBZ = 'N'andN > 1,LRWORK >= N. - If
JOBZ = 'V'andN > 1,LRWORK >= 1 + 5*N + 2*N**2.
- If
If LRWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of the WORK, RWORK and IWORK arrays, returns these values as the first entries of the WORK, RWORK and IWORK arrays, and no error message related to LWORK or LRWORK or LIWORK is issued by XERBLA.
IWORKβIWORK is INTEGER array, dimension (MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the optimalLIWORK.LIWORKβLIWORK is INTEGER. The dimension of the arrayIWORK.- If
N <= 1,LIWORK >= 1. - If
JOBZ = 'N'andN > 1,LIWORK >= 1. - If
JOBZ = 'V'andN > 1,LIWORK >= 3 + 5*N.
- If
If LIWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of the WORK, RWORK and IWORK arrays, returns these values as the first entries of the WORK, RWORK and IWORK arrays, and no error message related to LWORK or LRWORK or LIWORK is issued by XERBLA.
INFOβINFO is INTEGER.= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value> 0:CPOTRForCHEEVDreturned an error code:<= N: ifINFO = iandJOBZ = 'N', then the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero; ifINFO = iandJOBZ = 'V', then the algorithm failed to compute an eigenvalue while working on the submatrix lying in rows and columnsINFO/(N+1)throughmod(INFO,N+1);> N: ifINFO = N + i, for1 <= i <= N, then the leading principal minor of order i ofBis not positive. The factorization ofBcould not be completed and no eigenvalues or eigenvectors were computed.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details: π₯
Heads up, bestie: this version is modified so that no backsubstitution is performed if CHEEVD fails to converge (NEIG in old code could be greater than N, causing out of bounds reference to A β reported by Ralf Meyer). Also corrected the description of INFO and the test on ITYPE. Sven, 16 Feb 05. Periodt.
π Contributors: π
Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA.
Definition at line 241 of file chegvd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
That's the whole page, bestie β LAPACK Version 3.12.0, straight outta SRC/chegvd.f(3), with no date on this footer, so consider this your sparkly sign-off πβ¨
π¦ 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