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

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

πŸ’… SSBGV β€” ssbgv.f

okay bestie, so this page is from the LAPACK Library Functions Manual, and the file it's documenting is literally:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/ssbgv.f

no cap, that's the whole path. it's giving deep in the build tree energy 🫢


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/ssbgv.f β€” that's it, that's the name, the manpage literally just names the source file πŸŽ€


🌸 SYNOPSIS 🌸

Functions/Subroutines

subroutine SSBGV (jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz,
    work, info)

SSBGV πŸ‘‘


πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

subroutine SSBGV (character jobz, character uplo, integer n, integer ka,
    integer kb, real, dimension( ldab, * ) ab, integer ldab, real,
    dimension( ldbb, * ) bb, integer ldbb, real, dimension( * ) w, real,
    dimension( ldz, * ) z, integer ldz, real, dimension( * ) work, integer
    info)

SSBGV πŸ’« (yes, again β€” the page says it twice, so we say it twice, periodt)

πŸ’– Purpose πŸ’–

!> !> SSBGV 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 like, tl;dr: it hunts down all the eigenvalues (and the eigenvectors too if you ask nicely πŸ₯Ί) of a real generalized symmetric-definite banded eigenproblem. the form is A*x=(lambda)*B*x. A and B are assumed symmetric and banded, and B has to be positive definite β€” that part is non-negotiable, bestie. 🚨


πŸŽ€ Parameters πŸŽ€

  • JOBZ β€” JOBZ is CHARACTER*1
    • = 'N': Compute eigenvalues only;
    • = 'V': Compute eigenvalues and eigenvectors.

so like, eigenvalues only? 'N'. the whole package deal, vectors included? 'V'. choose your fighter πŸ’…

  • UPLO β€” UPLO is CHARACTER*1
    • = 'U': Upper triangles of A and B are stored;
    • = 'L': Lower triangles of A and B are stored.

which triangle are we storing, bestie? upper or lower, pick one 🌈

  • N β€” N is INTEGER
    • The order of the matrices A and B. N >= 0.

(and yes, zero is allowed, >= is not a suggestion πŸ’€)

  • 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.

KA is for A, KB is for B. iconic symmetry, we love to see it ✨

  • AB β€” AB is REAL 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. 😭 literally gone. don't come crying to me, she's been through enough.
  • LDAB β€” LDAB is INTEGER
    • The leading dimension of the array AB. LDAB >= KA+1.
  • BB β€” BB is REAL 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 SPBSTF.

so BB gets redecorated on the way out 🎨 it comes back holding S from that split Cholesky moment.

  • LDBB β€” LDBB is INTEGER
    • The leading dimension of the array BB. LDBB >= KB+1.
  • W β€” W is REAL array, dimension (N)
    • If INFO = 0, the eigenvalues in ascending order.

ascending. sorted. 10/10 organized queen πŸ‘‘

  • 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 that Z**T*B*Z = I.
    • If JOBZ = 'N, then Z is not referenced.

not even looked at. Z is off living her best life, unbothered πŸ™ˆ

  • LDZ β€” LDZ is INTEGER
    • The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= N.
  • WORK β€” WORK is REAL array, dimension (3*N)

that's 3*N bestie, not N, not 2*N, three whole N's of workspace πŸ“

  • 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 SPBSTF returned INFO = i: B is not positive definite. The factorization of B could not be completed and no eigenvalues or eigenvectors were computed.
fr fr read that last one carefully: if B isn't positive definite, the factorization of B could not be completed and no eigenvalues or eigenvectors were computed. nothing. nada. the whole thing just stops. πŸ’€ that's the vibe check failing, hard.

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

the whole squad contributed, we stan a collaborative effort 🫢

Definition at line 175 of file ssbgv.f.


⭐ Author ⭐

Generated automatically by Doxygen for LAPACK from the source code. (not a human, a machine wrote this, and honestly? slay πŸ€–βœ¨)


and that's the page, bestie! πŸ’œ sign-off time: this whole thing is LAPACK, Version 3.12.0, documented at /home/abui...RC/ssbgv.f(3) πŸŽ€πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from