ZHEGVD(3)
π NAME π
Okay bestie, welcome to ZHEGVD(3) from the Library Functions Manual β the page for the Fortran source file at /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zhegvd.f. Itβs giving LAPACK, itβs giving complex generalized Hermitian-definite eigenproblem, and yes, itβs iconic. π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine ZHEGVD (itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork,
rwork, lrwork, iwork, liwork, info)
ZHEGVD
π¦ Function/Subroutine Documentation π¦
subroutine ZHEGVD (integer itype, character jobz, character uplo, integer n,
complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension(
ldb, * ) b, integer ldb, double precision, dimension( * ) w, complex*16,
dimension( * ) work, integer lwork, double precision, dimension( * )
rwork, integer lrwork, integer, dimension( * ) iwork, integer liwork,
integer info)
ZHEGVD
π― Purpose
ZHEGVD computes all the eigenvalues, and optionally, the eigenvectors of a complex generalized Hermitian-definite eigenproblem, of the form A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*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. π«
π§Ύ Parameters
ITYPEβITYPE is INTEGER; it 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*16 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 ifINFO = 0,Acontains the matrixZof eigenvectors. The eigenvectors are normalized as follows:- if
ITYPE = 1or2,Z**H*B*Z = I; - if
ITYPE = 3,Z**H*inv(B)*Z = I.
- if
- If
JOBZ = 'N', then on exit the upper triangle (ifUPLO='U') or the lower triangle (ifUPLO='L') ofA, including the diagonal, is destroyed. π
- On exit, if
LDAβLDA is INTEGER; the leading dimension of the arrayA.LDA >= max(1,N).BβB is COMPLEX*16 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 ofBcontaining the matrix is overwritten by the triangular factorUorLfrom the Cholesky factorizationB = U**H*UorB = L*L**H.
- On exit, if
LDBβLDB is INTEGER; the leading dimension of the arrayB.LDB >= max(1,N).WβW is DOUBLE PRECISION array, dimension (N). IfINFO = 0, the eigenvalues in ascending order.WORKβWORK is COMPLEX*16 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
LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA.
- If
RWORKβRWORK is DOUBLE PRECISION 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
LRWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA.
- If
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
LIWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA.
- If
INFOβINFO is INTEGER= 0:successful exit< 0:ifINFO = -i, the i-th argument had an illegal value> 0:ZPOTRForZHEEVDreturned an error code:<= N:ifINFO = iandJOBZ = 'N', then the algorithm failed to converge;ioff-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 orderiofBis 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
Modified so that no backsubstitution is performed if ZHEEVD 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.
π Contributors
Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
Definition at line 241 of file zhegvd.f.
π€ Author
Generated automatically by Doxygen for LAPACK from the source code.
Okay bestie, thatβs the whole page. Source/version: LAPACK Version 3.12.0; footer path: /home/abui...RC/zhegvd.f(3). Thereβs no date listed in the footer, so Iβm not inventing one β the only date-ish tea here is 16 Feb 05 in Further Details. π Go solve those Hermitian-definite problems and slay. π«Άβ¨
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms