SRC/chbgvd.f(3)
πΈ NAME πΈ
SRC/chbgvd.f β bestie, this is the page for the CHBGVD routine, straight out of the Library Functions Manual. Itβs giving complex generalized Hermitian-definite banded eigenproblem energy, and weβre gonna unpack it. π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine chbgvd (jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz,
work, lwork, rwork, lrwork, iwork, liwork, info)
CHBGVD
π Function/Subroutine Documentation π
subroutine chbgvd (character jobz, character uplo, integer n, integer ka,
integer kb, complex, dimension( ldab, * ) ab, integer ldab, complex,
dimension( ldbb, * ) bb, integer ldbb, real, dimension( * ) w, complex,
dimension( ldz, * ) z, integer ldz, complex, dimension( * ) work,
integer lwork, real, dimension( * ) rwork, integer lrwork, integer,
dimension( * ) iwork, integer liwork, integer info)
CHBGVD
π Purpose π
Okay so CHBGVD computes all the eigenvalues, and optionally the eigenvectors, of a complex generalized Hermitian-definite banded eigenproblem β the form is literally A*x=(lambda)*B*x. Here A and B are assumed to be Hermitian and banded, and B is also positive definite. If eigenvectors are desired, it uses a divide and conquer algorithm. π¦
π Parameters π
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.KAβKA is INTEGER; the number of superdiagonals of the matrixAifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KA >= 0.KBβKB is INTEGER; the number of superdiagonals of the matrixBifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KB >= 0.ABβAB is COMPLEX array, dimension (LDAB, N). On entry, the upper or lower triangle of the Hermitian band matrixA, stored in the firstka+1rows of the array. The j-th column ofAis stored in the j-th column of the arrayABas follows:- if
UPLO = 'U',AB(ka+1+i-j,j) = A(i,j)formax(1,j-ka)<=i<=j; - if
UPLO = 'L',AB(1+i-j,j) = A(i,j)forj<=i<=min(n,j+ka).
- if
On exit, the contents of AB are destroyed. π
LDABβLDAB is INTEGER; the leading dimension of the arrayAB.LDAB >= KA+1.BBβBB is COMPLEX array, dimension (LDBB, N). On entry, the upper or lower triangle of the Hermitian band matrixB, stored in the firstkb+1rows of the array. The j-th column ofBis stored in the j-th column of the arrayBBas follows:- if
UPLO = 'U',BB(kb+1+i-j,j) = B(i,j)formax(1,j-kb)<=i<=j; - if
UPLO = 'L',BB(1+i-j,j) = B(i,j)forj<=i<=min(n,j+kb).
- if
On exit, the factor S from the split Cholesky factorization B = S**H*S, as returned by CPBSTF. π«Ά
LDBBβLDBB is INTEGER; the leading dimension of the arrayBB.LDBB >= KB+1.WβW is REAL array, dimension (N). IfINFO = 0, the eigenvalues in ascending order.ZβZ is COMPLEX array, dimension (LDZ, N). IfJOBZ = 'V', then ifINFO = 0,Zcontains the matrixZof eigenvectors, with the i-th column ofZholding the eigenvector associated withW(i). The eigenvectors are normalized so thatZ**H*B*Z = I. IfJOBZ = 'N', thenZis not referenced.LDZβLDZ is INTEGER; the leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= N.WORKβWORK is COMPLEX array, dimension (MAX(1,LWORK)). On exit, ifINFO=0,WORK(1)returns the optimalLWORK.LWORKβLWORK is INTEGER; the dimension of the arrayWORK.- If
N <= 1,LWORK >= 1. - If
JOBZ = 'N'andN > 1,LWORK >= N. - If
JOBZ = 'V'andN > 1,LWORK >= 2*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 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 arrayIWORK.- If
JOBZ = 'N'orN <= 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: ifINFO = i, andiis:<= N: the algorithm failed to converge:ioff-diagonal elements of an intermediate tridiagonal form did not converge to zero;> N: ifINFO = N + i, for1 <= i <= N, thenCPBSTFreturnedINFO = i:Bis not positive definite. The factorization ofBcould not be completed and no eigenvalues or eigenvectors were computed.
This is the part where you pay attention, bestie β those INFO > 0 cases mean the vibes were not immaculate. π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π¦ Contributors π¦
Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
Definition at line 243 of file chbgvd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
Signed, sealed, delivered by LAPACK Version 3.12.0, page SRC/chbgvd.f(3) β the footer didnβt give us a separate date, so no invented dates, 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