SSBEVD(3)

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

πŸ’… NAME πŸ’…

ok so bestie, this page is literally about ssbevd.f β€” and the full glow-up path is:

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

and it lives in the Library Functions Manual, which is giving very much "reference section, but make it fashion" πŸŽ€


✨ SYNOPSIS ✨

πŸ¦‹ Functions/Subroutines πŸ¦‹

subroutine SSBEVD (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork,
    iwork, liwork, info)
SSBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices

πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

subroutine SSBEVD (character jobz, character uplo, integer n, integer kd,
    real, dimension( ldab, * ) ab, integer ldab, real, dimension( * ) w,
    real, dimension( ldz, * ) z, integer ldz, real, dimension( * ) work,
    integer lwork, integer, dimension( * ) iwork, integer liwork, integer
    info)

SSBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices πŸ’–

🌸 Purpose 🌸

ok so here's the vibe: SSBEVD computes all the eigenvalues and, optionally, the eigenvectors of a real symmetric band matrix A. And if you want eigenvectors? it pulls out the divide and conquer algorithm β€” fancy, iconic, lowkey the main character of eigensolvers ✨

🌈 Parameters 🌈

πŸ“ JOBZ

JOBZ is CHARACTER*1

  • = 'N': compute eigenvalues only
  • = 'V': compute eigenvalues and eigenvectors

πŸ“ UPLO

UPLO is CHARACTER*1

  • = 'U': upper triangle of A is stored
  • = 'L': lower triangle of A is stored

πŸ“ N

N is INTEGER

the order of the matrix A. N >= 0. πŸ’…

πŸ“ KD

KD is INTEGER

the number of superdiagonals of the matrix A if UPLO = 'U', or the number of subdiagonals if UPLO = 'L'. KD >= 0. no cap.

πŸ“ 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 KD+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(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
if UPLO = 'L', AB(1+i-j,j)    = A(i,j) for j<=i<=min(n,j+kd).

on exit, AB is overwritten by values generated during the reduction to tridiagonal form. deadass, your input is gone. if UPLO = 'U', the first superdiagonal and the diagonal of the tridiagonal matrix T are returned in rows KD and KD+1 of AB, and if UPLO = 'L', the diagonal and first subdiagonal of T are returned in the first two rows of AB. 🫢

πŸ“ LDAB

LDAB is INTEGER

the leading dimension of the array AB. LDAB >= KD + 1. periodt.

πŸ“ W

W is REAL array, dimension (N)

if INFO = 0, the eigenvalues in ascending order. cute, sorted, organized πŸŽ€

πŸ“ Z

Z is REAL array, dimension (LDZ, N)

if JOBZ = 'V', then if INFO = 0, Z contains the orthonormal eigenvectors of the matrix A, with the i-th column of Z holding the eigenvector associated with W(i). if JOBZ = 'N', then Z is not referenced β€” it's just there, existing, unbothered πŸ’€

πŸ“ LDZ

LDZ is INTEGER

the leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).

πŸ“ WORK

WORK is REAL array, dimension (LWORK)

on exit, if INFO = 0, WORK(1) returns the optimal LWORK. iykyk, first slot is the receipts ✨

πŸ“ LWORK

LWORK is INTEGER

the dimension of the array WORK. here's the tea:

  • if N <= 1, LWORK must be at least 1
  • if JOBZ = 'N' and N > 2, LWORK must be at least 2*N
  • if JOBZ = 'V' and N > 2, LWORK must be at least ( 1 + 5*N + 2*N**2 )

if LWORK = -1, then a workspace query is assumed β€” the routine only calculates the optimal sizes of the WORK and IWORK arrays, returns these values as the first entries of the WORK and IWORK arrays, and no error message related to LWORK or LIWORK is issued by XERBLA. it's giving "just asking, not committing" πŸ™ˆ

πŸ“ IWORK

IWORK is INTEGER array, dimension (MAX(1,LIWORK))

on exit, if INFO = 0, IWORK(1) returns the optimal LIWORK. πŸ’œ

πŸ“ LIWORK

LIWORK is INTEGER

the dimension of the array IWORK.

  • if JOBZ = 'N' or N <= 1, LIWORK must be at least 1
  • if JOBZ = 'V' and N > 2, LIWORK must be at least 3 + 5*N

if LIWORK = -1, then a workspace query is assumed β€” the routine only calculates the optimal sizes of the WORK and IWORK arrays, returns these values as the first entries of the WORK and IWORK arrays, and no error message related to LWORK or LIWORK is issued by XERBLA. same energy as the LWORK = -1 situation, fr fr 🧚

πŸ“ INFO

INFO is INTEGER

  • = 0: successful exit πŸŽ‰
  • < 0: if INFO = -i, the i-th argument had an illegal value
  • > 0: if INFO = i, the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero 😭

πŸŽ€ Author πŸŽ€

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

⭐ Definition at line 185 of file ssbevd.f.


πŸ¦‹ Author πŸ¦‹

Generated automatically by Doxygen for LAPACK from the source code. not a human, just a very diligent little robot πŸ§šβ€β™€οΈ


so that's the whole page bestie β€” brought to you by LAPACK, Version 3.12.0, and yeah the footer path is literally /home/abui...RC/ssbevd.f(3) because apparently we're abbreviating the directory like it owes us money πŸ’€ slay, go compute some eigenvalues πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from