/home/abui...RC/dsbgv.f(3)
π
/home/abui...RC/dsbgv.f(3) β Library Functions Manual
okay so bestie, this page is literally from the Library Functions Manual and it's the glow-up of /home/abui...RC/dsbgv.f(3). it's a whole LAPACK subroutine doc and honestly? she ate. let's get into it π«Ά
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dsbgv.f
like yes that's the whole name, she's a whole path, she's that girl π (the file path is long enough to be a personality trait ngl)
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine DSBGV (jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, work, info)β the one, the only,DSBGV
π¦ Function/Subroutine Documentation π¦
subroutine DSBGV (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 info)
DSBGV β¨ (yes she's named twice, main character energy, we love a repeat icon π)
π Purpose π
ngl this is the whole vibe of what she does:
!>
!> DSBGV 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.
!>
so basically: A*x=(lambda)Bx, A and B are symmetric + banded, and B is also positive definite β no exceptions bestie, that's a hard requirement π
π Parameters π
JOBZ
!> JOBZ is CHARACTER*1
!> = 'N': Compute eigenvalues only;
!> = 'V': Compute eigenvalues and eigenvectors.
!>
'N'β eigenvalues only, minimal effort, respect π«Ά'V'β eigenvalues and eigenvectors, she's doing the most and we love her for it
UPLO
!> UPLO is CHARACTER*1
!> = 'U': Upper triangles of A and B are stored;
!> = 'L': Lower triangles of A and B are stored.
!>
pick your side bestie: 'U' = upper triangles of A and B get stored, 'L' = lower triangles of A and B get stored π
N
!> N is INTEGER
!> The order of the matrices A and B. N >= 0.
!>
the order of the matrices A and B, and she must be N >= 0 β negative N is giving illegal and we do not stan π«
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.
!>
count of superdiagonals of A when UPLO = 'U', or subdiagonals when UPLO = 'L'. and yes, KA >= 0, don't test her π
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.
!>
same deal as KA but for matrix B: superdiagonals if UPLO = 'U', subdiagonals if UPLO = 'L', and KB >= 0 fr fr
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 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.
!>
a DOUBLE PRECISION array, dimension (LDAB, N). on entry it's holding the upper or lower triangle of the symmetric band matrix A, stored in the first ka+1 rows, and the j-th column of A lives in the j-th column of AB like this:
- 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)
β οΈ on exit, the contents of AB are destroyed. like gone gone. she does not survive the function. mourn her accordingly π
LDAB
!> LDAB is INTEGER
!> The leading dimension of the array AB. LDAB >= KA+1.
!>
the leading dimension of AB, and it's gotta be 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 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**T*S, as returned by DPBSTF.
!>
DOUBLE PRECISION array, dimension (LDBB, N). on entry she's carrying the upper or lower triangle of the symmetric band matrix B in the first kb+1 rows, and the j-th column of B sits in the j-th column of BB:
- 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)
on exit you get the factor S from the split Cholesky factorization B = S**T*S, exactly as returned by DPBSTF β¨ glow-up complete
LDBB
!> LDBB is INTEGER
!> The leading dimension of the array BB. LDBB >= KB+1.
!>
leading dimension of BB, requirement is LDBB >= KB+1 π
W
!> W is DOUBLE PRECISION array, dimension (N)
!> If INFO = 0, the eigenvalues in ascending order.
!>
DOUBLE PRECISION array, dimension (N). if INFO = 0, these are the eigenvalues in ascending order β sorted, organized, iconic π
Z
!> Z is DOUBLE PRECISION 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 that Z**T*B*Z = I.
!> If JOBZ = 'N', then Z is not referenced.
!>
DOUBLE PRECISION array, dimension (LDZ, N). if JOBZ = 'V' and INFO = 0, Z contains the matrix Z of eigenvectors, where the i-th column of Z holds the eigenvector associated with W(i). and they're normalized so that Z**T*B*Z = I β balanced, normalized, flawless π
if JOBZ = 'N', then Z is not referenced at all, she's literally not invited to the function π
LDZ
!> LDZ is INTEGER
!> The leading dimension of the array Z. LDZ >= 1, and if
!> JOBZ = 'V', LDZ >= N.
!>
leading dimension of Z: LDZ >= 1, and if JOBZ = 'V' then LDZ >= N π¦
WORK
!> WORK is DOUBLE PRECISION array, dimension (3*N)
!>
DOUBLE PRECISION array, dimension (3*N) β she's just here to work, no notes πΈ
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!> > 0: if INFO = i, and i is:
!> <= N: the algorithm failed to converge:
!> i off-diagonal elements of an intermediate
!> tridiagonal form did not converge to zero;
!> > N: if INFO = N + i, for 1 <= i <= N, then DPBSTF
!> returned INFO = i: B is not positive definite.
!> The factorization of B could not be completed and
!> no eigenvalues or eigenvectors were computed.
!>
exit status tea β:
= 0β successful exit, we love a clean win π< 0β ifINFO = -i, the i-th argument had an illegal value (somebody passed something cursed π)> 0β ifINFO = i, then:<= 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: B is not positive definite. the factorization of B could not be completed and no eigenvalues or eigenvectors were computed. that's a full stop, nothing happened, we go home π
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
β Definition at line 175 of file dsbgv.f. β
π§ Author π§
Generated automatically by Doxygen for LAPACK from the source code. (she was born from a script, still slayed)
LAPACK β Version 3.12.0
and that's the page bestie π source/version + date on the footer: LAPACK, Version 3.12.0, and the file tag /home/abui...RC/dsbgv.f(3). go compute something iconic, ily, bye π«Άβ¨
π¦ 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