/home/abui...RC/dsbgv.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… /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) 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 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) 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 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 β€” if INFO = -i, the i-th argument had an illegal value (somebody passed something cursed πŸ™ˆ)
  • > 0 β€” if INFO = i, then:
    • <= 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. 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