hbev(3)

okay so bestie, this is page hbev(3) from the Library Functions Manual, and it's basically the group chat of LAPACK band-matrix eigenvalue routines β€” four of them, all doing the same iconic thing for different dtypes. Grab a snack, we're going in πŸ’…


πŸ¦‹ NAME πŸ¦‹

hbev β€” {hb,sb}ev: eig, QR iteration

Like, that's the whole name. Short. Cute. Load-bearing.


✨ SYNOPSIS ✨

πŸ’« Functions

Four subroutines, one job:

  • chbev β€” CHBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
subroutine chbev (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, rwork, info)
  • dsbev β€” DSBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
subroutine dsbev (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, info)
  • ssbev β€” SSBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
subroutine ssbev (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, info)
  • zhbev β€” ZHBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
subroutine zhbev (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, rwork, info)

πŸŽ€ DETAILED DESCRIPTION πŸŽ€

So the Detailed Description heading is right there and then it just… doesn't say anything?? It goes straight into Function Documentation. It's giving "intro slide with no speaker notes" ngl. The actual tea is all in the per-function sections below, so let's go 🫢


πŸ‘‘ FUNCTION DOCUMENTATION πŸ‘‘

🌸 subroutine chbev

subroutine chbev (character jobz, character uplo, integer n, integer kd,
    complex, dimension( ldab, * ) ab, integer ldab, real, dimension( * ) w,
    complex, dimension( ldz, * ) z, integer ldz, complex, dimension( * )
    work, real, dimension( * ) rwork, integer info)

CHBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices

πŸ“ Purpose

CHBEV computes all the eigenvalues and, optionally, the eigenvectors of a complex Hermitian band matrix A. That's it, that's the whole vibe ✨

🌈 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.
  • AB β€” AB is COMPLEX array, dimension (LDAB, N). On entry, the upper or lower triangle of the Hermitian 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. 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. (yes bestie, your input gets clobbered β€” that's the deal 🫠)

  • LDAB β€” LDAB is INTEGER. The leading dimension of the array AB. LDAB >= KD + 1.
  • W β€” W is REAL array, dimension (N). If INFO = 0, the eigenvalues in ascending order.
  • Z β€” Z is COMPLEX 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. (so don't even worry about it ✨)
  • LDZ β€” LDZ is INTEGER. The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).
  • WORK β€” WORK is COMPLEX array, dimension (N).
  • RWORK β€” RWORK is REAL array, dimension (max(1,3*N-2)).
  • 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. (rip, the iteration ghosted you 😭)

🧚 Author

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

Definition at line 150 of file chbev.f.


πŸ’œ subroutine dsbev

subroutine dsbev (character jobz, character uplo, integer n, integer kd,
    double precision, dimension( ldab, * ) ab, integer ldab, double
    precision, dimension( * ) w, double precision, dimension( ldz, * ) z,
    integer ldz, double precision, dimension( * ) work, integer info)

DSBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices

πŸ“ Purpose

DSBEV computes all the eigenvalues and, optionally, the eigenvectors of a real symmetric band matrix A. Same energy, double precision, no complex numbers invited πŸ’…

🌈 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.
  • 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 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. 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.
  • W β€” W is DOUBLE PRECISION array, dimension (N). If INFO = 0, the eigenvalues in ascending order.
  • Z β€” Z is DOUBLE PRECISION 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.
  • LDZ β€” LDZ is INTEGER. The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).
  • WORK β€” WORK is DOUBLE PRECISION array, dimension (max(1,3*N-2)). (note: no separate RWORK here bestie, she does it all in one 🫢)
  • 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 144 of file dsbev.f.


πŸ¦‹ subroutine ssbev

subroutine ssbev (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 info)

SSBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices

πŸ“ Purpose

SSBEV computes all the eigenvalues and, optionally, the eigenvectors of a real symmetric band matrix A. Single precision twin of dsbev, same slay, smaller floats ✨

🌈 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.
  • 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. 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.
  • W β€” W is REAL array, dimension (N). If INFO = 0, the eigenvalues in ascending order.
  • Z β€” and bestie this is exactly where part 1 hands the aux cable over 🎧 part 2 picks it up right here, no cap.

okay bestie, we’re picking right back up inside ssbev’s parameter list β€” no recap, no fluff, just the rest of the receipts:

  • Z β€” 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.
  • LDZ β€” INTEGER. The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).
  • WORK β€” REAL array, dimension (max(1,3*N-2)).
  • INFO β€” 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.

That’s ssbev wrapped, and the author credit is giving institutional excellence:

πŸ’– Author πŸ’–

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

Definition at line 144 of file ssbev.f.


πŸ¦‹ zhbev β€” complex Hermitian band matrix, but make it eigenvalues πŸ¦‹

   subroutine zhbev (character jobz, character uplo, integer n, integer kd,
       complex*16, dimension( ldab, * ) ab, integer ldab, double precision,
       dimension( * ) w, complex*16, dimension( ldz, * ) z, integer ldz,
       complex*16, dimension( * ) work, double precision, dimension( * ) rwork,
       integer info)

Brief description, exactly as the source says it: ZHBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices.

🌈 Purpose 🌈

ZHBEV computes all the eigenvalues and, optionally, eigenvectors of a complex Hermitian band matrix A.

πŸ“ 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.
  • AB β€” AB is COMPLEX*16 array, dimension (LDAB, N).

On entry, the upper or lower triangle of the Hermitian 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. 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.
  • W β€” W is DOUBLE PRECISION array, dimension (N). If INFO = 0, the eigenvalues in ascending order.
  • Z β€” Z is COMPLEX*16 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.
  • LDZ β€” LDZ is INTEGER. The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).
  • WORK β€” WORK is COMPLEX*16 array, dimension (N).
  • RWORK β€” RWORK is DOUBLE PRECISION array, dimension (max(1,3*N-2)).
  • 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 150 of file zhbev.f.

πŸ’« Author (the generated-by one) πŸ’«

Generated automatically by Doxygen for LAPACK from the source code.

Source/version check, bestie: this is LAPACK Version 3.12.0, page hbev(3). The footer doesn’t hand us a date, so no fake date is coming through β€” just pure manual-page realness πŸ’…πŸ«Άβœ¨

πŸ“¦ where this page comes from