hbgvx(3)
π hbgvx(3) β Library Functions Manual π
okay so bestie, gather round, because this is the hbgvx page from the Library Functions Manual and it's giving big LAPACK energy. We're talking {hb,sb}gvx: eig, bisection β that's the NAME, periodt. It's a whole family of routines for generalized Hermitian/symmetric-definite banded eigenproblems, and yes, we're gonna get through all of it together. No skipping, no summarizing, we keep every single detail because that's just how we roll. π«Ά
β¨ SYNOPSIS β¨
πΈ Functions
chbgvxβ the complex one π
subroutine chbgvx (jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q,
ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, rwork, iwork,
ifail, info)
CHBGVX
dsbgvxβ the double precision one π₯
subroutine dsbgvx (jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q,
ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
DSBGVX
ssbgvxβ the single precision one β
subroutine ssbgvx (jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q,
ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
SSBGVX
zhbgvxβ the double complex one π
subroutine zhbgvx (jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q,
ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, rwork, iwork,
ifail, info)
ZHBGVX
π¦ Detailed Description
like, this page is literally the "detailed description" hub β it's where all the function docs live. It's the main character of the manual, fr fr. Keep scrolling and we'll meet each routine one at a time. π
π Function Documentation π
π subroutine chbgvx
okay so here's the full glow-up of the signature, bestie β every type, every dimension, all of it, no cap:
subroutine chbgvx (character jobz, character range, character uplo, integer
n, integer ka, integer kb, complex, dimension( ldab, * ) ab, integer
ldab, complex, dimension( ldbb, * ) bb, integer ldbb, complex,
dimension( ldq, * ) q, integer ldq, real vl, real vu, integer il,
integer iu, real abstol, integer m, real, dimension( * ) w, complex,
dimension( ldz, * ) z, integer ldz, complex, dimension( * ) work, real,
dimension( * ) rwork, integer, dimension( * ) iwork, integer, dimension(
* ) ifail, integer info)
CHBGVX
β¨ Purpose
CHBGVX computes all the eigenvalues, and optionally, the eigenvectors of a complex generalized Hermitian-definite banded eigenproblem, of the form A*x=(lambda)*B*x. Here A and B are assumed to be Hermitian and banded, and B is also positive definite. Eigenvalues and eigenvectors can be selected by specifying either all eigenvalues, a range of values or a range of indices for the desired eigenvalues.
so yeah β eigenvalues, eigenvectors if you want 'em, and you get to pick which ones. iconic. π¦
π Parameters
JOBZβJOBZ is CHARACTER*1= 'N':Compute eigenvalues only;= 'V':Compute eigenvalues and eigenvectors.
RANGEβRANGE is CHARACTER*1= 'A':all eigenvalues will be found;= 'V':all eigenvalues in the half-open interval(VL,VU]will be found;= 'I':theIL-th throughIU-th eigenvalues will be found.
UPLOβUPLO is CHARACTER*1= 'U':Upper triangles ofAandBare stored;= 'L':Lower triangles ofAandBare stored.
NβN is INTEGERThe order of the matricesAandB.N >= 0.KAβKA is INTEGERThe number of superdiagonals of the matrixAifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KA >= 0.KBβKB is INTEGERThe 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. Thej-th column ofAis stored in thej-th column of the arrayABas follows:if UPLO = 'U', AB(ka+1+i-j,j) = A(i,j) for max(1,j-ka)<=i<=j;if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+ka).
On exit, the contents of AB are destroyed. π (like, gone gone β she's not coming back)
LDABβLDAB is INTEGERThe 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. Thej-th column ofBis stored in thej-th column of the arrayBBas follows:if UPLO = 'U', BB(kb+1+i-j,j) = B(i,j) for max(1,j-kb)<=i<=j;if UPLO = 'L', BB(1+i-j,j) = B(i,j) for j<=i<=min(n,j+kb).
On exit, the factor S from the split Cholesky factorization B = S**H*S, as returned by CPBSTF.
LDBBβLDBB is INTEGERThe leading dimension of the arrayBB.LDBB >= KB+1.QβQ is COMPLEX array, dimension (LDQ, N)IfJOBZ = 'V', then-by-nmatrix used in the reduction ofA*x = (lambda)*B*xto standard form, i.e.C*x = (lambda)*x, and consequentlyCto tridiagonal form. IfJOBZ = 'N', the arrayQis not referenced. (she's off duty π)LDQβLDQ is INTEGERThe leading dimension of the arrayQ. IfJOBZ = 'N',LDQ >= 1. IfJOBZ = 'V',LDQ >= max(1,N).VLβVL is REAL
If RANGE='V', the lower bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
VUβVU is REAL
If RANGE='V', the upper bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
ILβIL is INTEGER
If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
IUβIU is INTEGER
If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
ABSTOLβABSTOL is REALThe absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval[a,b]of width less than or equal to
ABSTOL + EPS * max( |a|,|b| ) ,
where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing AP to tridiagonal form.
Eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*SLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*SLAMCH('S'). π―
MβM is INTEGERThe total number of eigenvalues found.0 <= M <= N. IfRANGE = 'A',M = N, and ifRANGE = 'I',M = IU-IL+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 thei-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 INTEGERThe leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= N.WORKβWORK is COMPLEX array, dimension (N)RWORKβRWORK is REAL array, dimension (7*N)IWORKβIWORK is INTEGER array, dimension (5*N)IFAILβIFAIL is INTEGER array, dimension (N)IfJOBZ = 'V', then ifINFO = 0, the firstMelements ofIFAILare zero. IfINFO > 0, thenIFAILcontains the indices of the eigenvectors that failed to converge. IfJOBZ = 'N', thenIFAILis not referenced.INFOβINFO is INTEGER= 0:successful exit< 0:ifINFO = -i, thei-th argument had an illegal value> 0:ifINFO = i, andiis:<= N:thenieigenvectors failed to converge. Their indices are stored in arrayIFAIL.> 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.
π 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 297 of file chbgvx.f.
π§ subroutine dsbgvx
and now the double precision sibling steps in β same vibe, double precision everywhere, and heads up: her parameter list is the real flavor (no rwork, abstol is double precision). here's the whole signature, verbatim:
subroutine dsbgvx (character jobz, character range, character uplo, integer
n, integer ka, integer kb, double precision, dimension( ldab, * ) ab,
integer ldab, double precision, dimension( ldbb, * ) bb, integer ldbb,
double precision, dimension( ldq, * ) q, integer ldq, double precision
vl, double precision vu, integer il, integer iu, double precision
abstol, integer m, double precision, dimension( * ) w, double precision,
dimension( ldz, * ) z, integer ldz, double precision, dimension( * )
work, integer, dimension( * ) iwork, integer, dimension( * ) ifail,
integer info)
DSBGVX
β¨ Purpose
DSBGVX computes selected eigenvalues, and optionally, eigenvectors of a real generalized symmetric-definite banded eigenproblem, of the form A*x=(lambda)*B*x. Here A and B are assumed to be symmetric and banded, and B is also positive definite. Eigenvalues and eigenvectors can be selected by specifying either all eigenvalues, a range of values or a range of indices for the desired eigenvalues.
real, symmetric, banded, and B positive definite β the whole package, bestie. πΈ
π Parameters
JOBZ
(part 1 stops right here mid-parameter, because the page continues β more coming in part 2! don't go anywhere π«Ά)
JOBZβCHARACTER*1. Pick your vibe:= 'N': compute eigenvalues only;= 'V': compute eigenvalues and eigenvectors. πRANGEβCHARACTER*1. Which eigenvalues are we hunting?= 'A': all eigenvalues will be found.= 'V': all eigenvalues in the half-open interval(VL,VU]will be found.= 'I': theIL-th throughIU-th eigenvalues will be found. β¨UPLOβCHARACTER*1.= 'U': upper triangles of A and B are stored;= 'L': lower triangles of A and B are stored. π«ΆNβINTEGER. The order of the matrices A and B.N >= 0. πKAβINTEGER. The number of superdiagonals of the matrix A ifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KA >= 0.KBβINTEGER. The number of superdiagonals of the matrix B ifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KB >= 0.ABβDOUBLE PRECISIONarray, dimension(LDAB, N). On entry, the upper or lower triangle of the symmetric band matrix A, stored in the firstka+1rows of the array. The j-th column of A is stored in the j-th column of the arrayABas follows:
if UPLO = 'U', AB(ka+1+i-j,j) = A(i,j) for max(1,j-ka)<=i<=j;
if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+ka).
On exit, the contents of AB are destroyed π β no cap, they're gone.
LDABβINTEGER. The leading dimension of the arrayAB.LDAB >= KA+1.BBβDOUBLE PRECISIONarray, dimension(LDBB, N). On entry, the upper or lower triangle of the symmetric band matrix B, stored in the firstkb+1rows of the array. The j-th column of B is stored in the j-th column of the arrayBBas follows:
if UPLO = 'U', BB(ka+1+i-j,j) = B(i,j) for max(1,j-kb)<=i<=j;
if UPLO = 'L', BB(1+i-j,j) = B(i,j) for j<=i<=min(n,j+kb).
On exit, the factor S from the split Cholesky factorization B = S**T*S, as returned by DPBSTF. π¦
LDBBβINTEGER. The leading dimension of the arrayBB.LDBB >= KB+1.QβDOUBLE PRECISIONarray, dimension(LDQ, N). IfJOBZ = 'V', then-by-nmatrix used in the reduction ofA*x = (lambda)*B*xto standard form, i.e.C*x = (lambda)*x, and consequently C to tridiagonal form. IfJOBZ = 'N', the arrayQis not referenced.LDQβINTEGER. The leading dimension of the arrayQ. IfJOBZ = 'N',LDQ >= 1. IfJOBZ = 'V',LDQ >= max(1,N).VLβDOUBLE PRECISION. IfRANGE='V', the lower bound of the interval to be searched for eigenvalues.VL < VU. Not referenced ifRANGE = 'A'or'I'.VUβDOUBLE PRECISION. IfRANGE='V', the upper bound of the interval to be searched for eigenvalues.VL < VU. Not referenced ifRANGE = 'A'or'I'.ILβINTEGER. IfRANGE='I', the index of the smallest eigenvalue to be returned.1 <= IL <= IU <= N, ifN > 0;IL = 1andIU = 0ifN = 0. Not referenced ifRANGE = 'A'or'V'.IUβINTEGER. IfRANGE='I', the index of the largest eigenvalue to be returned.1 <= IL <= IU <= N, ifN > 0;IL = 1andIU = 0ifN = 0. Not referenced ifRANGE = 'A'or'V'.ABSTOLβDOUBLE PRECISION. The absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval[a,b]of width less than or equal to
ABSTOL + EPS * max( |a|,|b| ) ,
where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing A to tridiagonal form.
Eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*DLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*DLAMCH('S'). π₯
MβINTEGER. The total number of eigenvalues found.0 <= M <= N. IfRANGE = 'A',M = N, and ifRANGE = 'I',M = IU-IL+1.WβDOUBLE PRECISIONarray, dimension(N). IfINFO = 0, the eigenvalues in ascending order.ZβDOUBLE PRECISIONarray, dimension(LDZ, N). IfJOBZ = 'V', then ifINFO = 0,Zcontains the matrix Z of eigenvectors, with the i-th column of Z holding the eigenvector associated withW(i). The eigenvectors are normalized soZ**T*B*Z = I. IfJOBZ = 'N', thenZis not referenced.LDZβINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N).WORKβDOUBLE PRECISIONarray, dimension(7*N).IWORKβINTEGERarray, dimension(5*N).IFAILβINTEGERarray, dimension(M). IfJOBZ = 'V', then ifINFO = 0, the firstMelements ofIFAILare zero. IfINFO > 0, thenIFAILcontains the indices of the eigenvalues that failed to converge. IfJOBZ = 'N', thenIFAILis not referenced.INFOβINTEGER.= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value<= N: ifINFO = i, then i eigenvectors failed to converge. Their indices are stored inIFAIL.> N:DPBSTFreturned an error code; i.e., ifINFO = N + i, for1 <= i <= N, then the leading principal minor of order i of B is not positive. The factorization of B could not be completed and no eigenvalues or eigenvectors were computed. π
π 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
Definition at line 291 of file dsbgvx.f.
π subroutine ssbgvx
subroutine ssbgvx (character jobz, character range, character uplo, integer
n, integer ka, integer kb, real, dimension( ldab, * ) ab, integer ldab,
real, dimension( ldbb, * ) bb, integer ldbb, real, dimension( ldq, * )
q, integer ldq, real vl, real vu, integer il, integer iu, real abstol,
integer m, real, dimension( * ) w, real, dimension( ldz, * ) z, integer
ldz, real, dimension( * ) work, integer, dimension( * ) iwork, integer,
dimension( * ) ifail, integer info)
SSBGVX
π― Purpose
SSBGVX computes selected eigenvalues, and optionally, eigenvectors of a real generalized symmetric-definite banded eigenproblem, of the form A*x=(lambda)*B*x. Here A and B are assumed to be symmetric and banded, and B is also positive definite. Eigenvalues and eigenvectors can be selected by specifying either all eigenvalues, a range of values or a range of indices for the desired eigenvalues. π
π Parameters
JOBZβCHARACTER*1.= 'N': compute eigenvalues only;= 'V': compute eigenvalues and eigenvectors. πRANGEβCHARACTER*1.= 'A': all eigenvalues will be found.= 'V': all eigenvalues in the half-open interval(VL,VU]will be found.= 'I': theIL-th throughIU-th eigenvalues will be found. β¨UPLOβCHARACTER*1.= 'U': upper triangles of A and B are stored;= 'L': lower triangles of A and B are stored. π«ΆNβINTEGER. The order of the matrices A and B.N >= 0. πKAβINTEGER. The number of superdiagonals of the matrix A ifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KA >= 0.KBβINTEGER. The number of superdiagonals of the matrix B ifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KB >= 0.ABβREALarray, dimension(LDAB, N). On entry, the upper or lower triangle of the symmetric band matrix A, stored in the firstka+1rows of the array. The j-th column of A is stored in the j-th column of the arrayABas follows:
if UPLO = 'U', AB(ka+1+i-j,j) = A(i,j) for max(1,j-ka)<=i<=j;
if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+ka).
On exit, the contents of AB are destroyed. π
LDABβINTEGER. The leading dimension of the arrayAB.LDAB >= KA+1.BB
BB β bestie, this is a REAL array, dimension (LDBB, N). On entry, it's the upper or lower triangle of the symmetric band matrix B, stored in the first kb+1 rows of the array. The j-th column of B is stored in the j-th column of BB like this:
if UPLO = 'U', BB(ka+1+i-j,j) = B(i,j) for max(1,j-kb)<=i<=j;
if UPLO = 'L', BB(1+i-j,j) = B(i,j) for j<=i<=min(n,j+kb).
On exit, it's the factor S from the split Cholesky factorization B = S**T*S, as returned by SPBSTF. Iconic π
.
LDBB β LDBB is INTEGER. It's the leading dimension of the array BB. The rule is LDBB >= KB+1, no cap.
Q β Q is REAL array, dimension (LDQ, N). If JOBZ = 'V', this is the n-by-n matrix used in the reduction of A*x = (lambda)*B*x to standard form, i.e. C*x = (lambda)*x, and consequently C to tridiagonal form. If JOBZ = 'N', the array Q is not referenced at all β it's giving background character energy π.
LDQ β LDQ is INTEGER. It's the leading dimension of the array Q. If JOBZ = 'N', then LDQ >= 1. If JOBZ = 'V', then LDQ >= max(1,N).
VL β VL is REAL. If RANGE='V', this is the lower bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'. Periodt.
VU β VU is REAL. If RANGE='V', this is the upper bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
IL β IL is INTEGER. If RANGE='I', this is the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
IU β IU is INTEGER. If RANGE='I', this is the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
ABSTOL β ABSTOL is REAL. It's the absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval [a,b] of width less than or equal to
ABSTOL + EPS * max( |a|,|b| ) ,
where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing A to tridiagonal form.
Eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*SLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*SLAMCH('S'). That's the glow-up tip, iykyk β¨.
M β M is INTEGER. It's the total number of eigenvalues found. 0 <= M <= N. If RANGE = 'A', then M = N, and if RANGE = 'I', then M = IU-IL+1.
W β W is REAL array, dimension (N). If INFO = 0, this holds the eigenvalues in ascending order. Sorted and slaying π.
Z β Z is REAL array, dimension (LDZ, N). If JOBZ = 'V', then if INFO = 0, Z contains the matrix Z of eigenvectors, with the i-th column of Z holding the eigenvector associated with W(i). The eigenvectors are normalized so Z**T*B*Z = I. If JOBZ = 'N', then Z is not referenced.
LDZ β LDZ is INTEGER. It's the leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).
WORK β WORK is REAL array, dimension (7*N). It's the workspace, doing the behind-the-scenes heavy lifting π«Ά.
IWORK β IWORK is INTEGER array, dimension (5*N). Integer workspace, also clocking in.
IFAIL β IFAIL is INTEGER array, dimension (M). If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL are zero. If INFO > 0, then IFAIL contains the indices of the eigenvalues that failed to converge. If JOBZ = 'N', then IFAIL is not referenced.
INFO β INFO is INTEGER. The receipts:
= 0: successful exit β we love a clean win π.< 0: ifINFO = -i, the i-th argument had an illegal value. Bestie, check your inputs.<= N: ifINFO = i, then i eigenvectors failed to converge. Their indices are stored inIFAIL. Not the moment π.> N:SPBSTFreturned an error code; i.e., ifINFO = N + i, for1 <= i <= N, then the leading principal minor of order i of B is not positive. The factorization of B could not be completed and no eigenvalues or eigenvectors were computed. That's the danger zone, fr fr π.
π 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 291 of file ssbgvx.f.
π
subroutine zhbgvx π
subroutine zhbgvx (character jobz, character range, character uplo, integer
n, integer ka, integer kb, complex*16, dimension( ldab, * ) ab, integer
ldab, complex*16, dimension( ldbb, * ) bb, integer ldbb, complex*16,
dimension( ldq, * ) q, integer ldq, double precision vl, double precision
vu, integer il, integer iu, double precision abstol, integer m, double
precision, dimension( * ) w, complex*16, dimension( ldz, * ) z, integer
ldz, complex*16, dimension( * ) work, double precision, dimension( * )
rwork, integer, dimension( * ) iwork, integer, dimension( * ) ifail,
integer info)
ZHBGVX
π¦ Purpose π¦
Okay so ZHBGVX computes all the eigenvalues, and optionally, the eigenvectors of a complex generalized Hermitian-definite banded eigenproblem, of the form A*x=(lambda)*B*x. Here A and B are assumed to be Hermitian and banded, and B is also positive definite. Eigenvalues and eigenvectors can be selected by specifying either all eigenvalues, a range of values or a range of indices for the desired eigenvalues. Main character energy for a banded eigenproblem, honestly π.
β¨ Parameters β¨
JOBZ β JOBZ is CHARACTER*1.
= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors.
RANGE β RANGE is CHARACTER*1.
= 'A': all eigenvalues will be found;= 'V': all eigenvalues in the half-open interval(VL,VU]will be found;= 'I': the IL-th through IU-th eigenvalues will be found.
UPLO β UPLO is CHARACTER*1.
= 'U': Upper triangles of A and B are stored;= 'L': Lower triangles of A and B are stored.
N β N is INTEGER. The order of the matrices A and B. N >= 0.
KA β KA is INTEGER. The number of superdiagonals of the matrix A if UPLO = 'U', or the number of subdiagonals if UPLO = 'L'. KA >= 0.
KB β KB is INTEGER. The number of superdiagonals of the matrix B if UPLO = 'U', or the number of subdiagonals if UPLO = 'L'. KB >= 0.
AB β AB is COMPLEX*16 array, dimension (LDAB, N). On entry, the upper or lower triangle of the Hermitian band matrix A, stored in the first ka+1 rows of the array. The j-th column of A is stored in the j-th column of the array AB as follows:
if UPLO = 'U', AB(ka+1+i-j,j) = A(i,j) for max(1,j-ka)<=i<=j;
if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+ka).
On exit, the contents of AB are destroyed. Literally gone, no cap π.
LDAB β LDAB is INTEGER. The leading dimension of the array AB. LDAB >= KA+1.
BB β BB is COMPLEX*16 array, dimension (LDBB, N). On entry, the upper or lower triangle of the Hermitian band matrix B, stored in the first kb+1 rows of the array. The j-th column of B is stored in the j-th column of the array BB as follows:
if UPLO = 'U', BB(kb+1+i-j,j) = B(i,j) for max(1,j-kb)<=i<=j;
if UPLO = 'L', BB(1+i-j,j) = B(i,j) for j<=i<=min(n,j+kb).
On exit, the factor S from the split Cholesky factorization B = S**H*S, as returned by ZPBSTF. Note the **H β this is the complex bestie version π.
LDBB β LDBB is INTEGER. The leading dimension of the array BB. LDBB >= KB+1.
Q β Q is COMPLEX*16 array, dimension (LDQ, N). If JOBZ = 'V', the n-by-n matrix used in the reduction of A*x = (lambda)*B*x to standard form, i.e. C*x = (lambda)*x, and consequently C to tridiagonal form. If JOBZ = 'N', the array Q is not referenced.
LDQ β LDQ is INTEGER. The leading dimension of the array Q. If JOBZ = 'N', LDQ >= 1. If JOBZ = 'V', LDQ >= max(1,N).
VL β VL is DOUBLE PRECISION. If RANGE='V', the lower bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
VU β VU is DOUBLE PRECISION. If RANGE='V', the upper bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
IL
ILβINTEGER. WhenRANGE='I', this is the index of the smallest eigenvalue you want back. The bounds are1 <= IL <= IU <= NifN > 0; and ifN = 0thenIL = 1andIU = 0. Not referenced ifRANGE = 'A'or'V'. πIUβINTEGER. WhenRANGE='I', this is the index of the largest eigenvalue to be returned. Same bounds, bestie:1 <= IL <= IU <= NifN > 0; ifN = 0thenIL = 1andIU = 0. Not referenced ifRANGE = 'A'or'V'. β¨ABSTOLβDOUBLE PRECISION. This is the absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval[a,b]of width less than or equal to:
ABSTOL + EPS * max( |a|,|b| ) ,
where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing AP to tridiagonal form. Eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*DLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*DLAMCH('S'). π«Ά
MβINTEGER. The total number of eigenvalues found.0 <= M <= N. IfRANGE = 'A', thenM = N, and ifRANGE = 'I', thenM = IU-IL+1. πWβDOUBLE PRECISION array, dimension (N). IfINFO = 0, this holds the eigenvalues in ascending order. βZβCOMPLEX*16 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βINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= N. πWORKβCOMPLEX*16 array, dimension (N). πΈRWORKβDOUBLE PRECISION array, dimension (7*N). πIWORKβINTEGER array, dimension (5*N). π§IFAILβINTEGER array, dimension (N). IfJOBZ = 'V', then ifINFO = 0, the firstMelements ofIFAILare zero. IfINFO > 0, thenIFAILcontains the indices of the eigenvectors that failed to converge. IfJOBZ = 'N', thenIFAILis not referenced. πINFOβINTEGER.= 0: successful exit. π< 0: ifINFO = -i, the i-th argument had an illegal value. π> 0: ifINFO = i, andiis:<= N: thenieigenvectors failed to converge. Their indices are stored in arrayIFAIL. π> N: ifINFO = N + i, for1 <= i <= N, thenZPBSTFreturnedINFO = i:Bis not positive definite. 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.
Contributors: β¨
- Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
Definition at line 297 of file zhbgvx.f.
Author π» (the auto-generated one)
Generated automatically by Doxygen for LAPACK from the source code.
okay thatβs the whole page, bestie β huge shoutout to LAPACK Version 3.12.0 for this hbgvx(3) moment, 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