SRC/dsbgvd.f(3)
πΈ NAME πΈ
Bestie, you're looking at the manual page for SRC/dsbgvd.f β the header vibes are SRC/dsbgvd.f(3), and it's giving LAPACK routine energy. I'm obsessed.
β¨ SYNOPSIS β¨
π Functions/Subroutines π
Functions/Subroutines
subroutine dsbgvd (jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz,
work, lwork, iwork, liwork, info)
DSBGVD
π§ Function/Subroutine Documentation π§
Here's the full signature, exactly as the source serves it, no cap:
subroutine dsbgvd (character jobz, 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( * ) w, double precision, dimension( ldz, * ) z,
integer ldz, double precision, dimension( * ) work, integer lwork,
integer, dimension( * ) iwork, integer liwork, integer info)
DSBGVD
π― Purpose π―
Okay so DSBGVD computes all the eigenvalues, and optionally the 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. If eigenvectors are desired, it uses a divide and conquer algorithm.
π Parameters π
JOBZβJOBZ is CHARACTER*1, bestie.= '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 DOUBLE PRECISION array, dimension (LDAB, N).- On entry, the upper or lower triangle of the symmetric band matrix
A, 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)formax(1,j-ka)<=i<=j; - if
UPLO = 'L',AB(1+i-j,j) = A(i,j)forj<=i<=min(n,j+ka). - Heads up: On exit, the contents of
ABare destroyed. Yes, literally gone, bestie β protect your data accordingly. π
- On entry, the upper or lower triangle of the symmetric band matrix
LDABβLDAB is INTEGER. The leading dimension of the arrayAB.LDAB >= KA+1.BBβBB is DOUBLE PRECISION array, dimension (LDBB, N).- On entry, the upper or lower triangle of the symmetric band matrix
B, 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(ka+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). - On exit, the factor
Sfrom the split Cholesky factorizationB = S**T*S, as returned byDPBSTF.
- On entry, the upper or lower triangle of the symmetric band matrix
LDBBβLDBB is INTEGER. The leading dimension of the arrayBB.LDBB >= KB+1.WβW is DOUBLE PRECISION array, dimension (N). IfINFO = 0, the eigenvalues in ascending order.ZβZ is DOUBLE PRECISION array, dimension (LDZ, N).- If
JOBZ = 'V', then ifINFO = 0,Zcontains the matrixZof eigenvectors, with thei-th column ofZholding the eigenvector associated withW(i). The eigenvectors are normalized soZ**T*B*Z = I. - If
JOBZ = 'N', thenZis not referenced.
- If
LDZβLDZ is INTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N).WORKβWORK is DOUBLE PRECISION 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 >= 2*N. - If
JOBZ = 'V'andN > 1,LWORK >= 1 + 5*N + 2*N**2. - If
LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA.
- If
IWORKβIWORK is INTEGER array, dimension (MAX(1,LIWORK)). On exit, ifLIWORK > 0,IWORK(1)returns the optimalLIWORK.LIWORKβLIWORK is INTEGER. The dimension of the arrayIWORK.- If
JOBZ = 'N'orN <= 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 theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA.
- If
INFOβINFO is INTEGER.= 0:successful exit< 0:ifINFO = -i, thei-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, thenDPBSTFreturnedINFO = 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 219 of file dsbgvd.f.
ποΈ Author (the generated one) ποΈ
Generated automatically by Doxygen for LAPACK from the source code.
Cute sign-off, because the footer line is doing the most: this page is LAPACK, Version 3.12.0, source SRC/dsbgvd.f(3). No date in the footer, so I'm not inventing one, 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