heev(3)

πŸ¦‹ heev(3) β€” part 1 of 2 πŸ¦‹

okay bestie, welcome to heev(3) from the Library Functions Manual. This is part 1 of 2, lowkey the eigenvalue corner, highkey iconic β€” it's giving main character energy. Keep the group chat open. πŸ’–

πŸ’… NAME πŸ’…

heev - {he,sy}ev: eig, QR iteration

✨ SYNOPSIS ✨

πŸ’« Functions

  • subroutine cheev (jobz, uplo, n, a, lda, w, work, lwork, rwork, info) β€” CHEEV computes eigenvalues, and optionally the left and/or right eigenvectors, for HE matrices. πŸ’…
  • subroutine dsyev (jobz, uplo, n, a, lda, w, work, lwork, info) β€” DSYEV computes eigenvalues, and optionally the left and/or right eigenvectors, for SY matrices. ✨
  • subroutine ssyev (jobz, uplo, n, a, lda, w, work, lwork, info) β€” SSYEV computes eigenvalues, and optionally the left and/or right eigenvectors, for SY matrices. 🌸
  • subroutine zheev (jobz, uplo, n, a, lda, w, work, lwork, rwork, info) β€” ZHEEV computes eigenvalues, and optionally the left and/or right eigenvectors, for HE matrices. πŸ¦‹

🌸 Detailed Description 🌸

(The original page keeps this part quiet β€” the function docs are where the action is.)

πŸŽ€ Function Documentation πŸŽ€

πŸ’– cheev β€” HE-matrix eigenvalue slay πŸ’–

   subroutine cheev (character jobz, character uplo, integer n, complex,
       dimension( lda, * ) a, integer lda, real, dimension( * ) w, complex,
       dimension( * ) work, integer lwork, real, dimension( * ) rwork, integer
       info)

CHEEV computes eigenvalues, and optionally the left and/or right eigenvectors, for HE matrices.

🎯 Purpose

CHEEV grabs all eigenvalues, and eigenvectors if you asked, of a complex Hermitian matrix A. Periodt. πŸ‘‘

🧚 Parameters

  • JOBZ β€” CHARACTER*1. 'N': eigenvalues only; 'V': eigenvalues and eigenvectors. Pick your fighter. πŸ’«
  • UPLO β€” CHARACTER*1. 'U': upper triangle of A is stored; 'L': lower triangle of A is stored.
  • N β€” INTEGER. Order of matrix A. N >= 0.
  • A β€” COMPLEX array, dimension (LDA, N). On entry, this is the Hermitian matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A holds the upper triangular part of the matrix A. If UPLO = 'L', the leading N-by-N lower triangular part of A holds the lower triangular part of the matrix A. On exit, if JOBZ = 'V', then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') or the upper triangle (if UPLO='U') of A β€” diagonal included β€” is destroyed. πŸ’€ No cap β€” destroyed.
  • LDA β€” INTEGER. Leading dimension of array A. LDA >= max(1,N).
  • W β€” REAL array, dimension (N). If INFO = 0, eigenvalues come in ascending order. Sorted and serving. ✨
  • WORK β€” COMPLEX array, dimension (MAX(1,LWORK)). On the way out, if INFO = 0, WORK(1) gives you the optimal LWORK.
  • LWORK β€” INTEGER. Length of the WORK array. LWORK >= max(1,2*N-1). For optimal efficiency, LWORK >= (NB+1)*N, where NB is the blocksize for CHETRD returned by ILAENV. If LWORK = -1, it's a workspace query: the routine only calculates the optimal size of the WORK array, returns that value as the first entry of WORK, and XERBLA does not issue an error message related to LWORK. πŸ‘‘
  • RWORK β€” 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. 😭 Convergence drama, but we move.

πŸ‘‘ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 138 of file cheev.f.


πŸ’™ dsyev β€” SY-matrix eigenvalue slay, double precision edition πŸ’™

   subroutine dsyev (character jobz, character uplo, integer n, double
       precision, dimension( lda, * ) a, integer lda, double precision,
       dimension( * ) w, double precision, dimension( * ) work, integer lwork,
       integer info)

DSYEV computes eigenvalues, and optionally the left and/or right eigenvectors, for SY matrices.

🎯 Purpose

DSYEV grabs all eigenvalues, and eigenvectors if you asked, of a real symmetric matrix A. Slay. ✨

🧚 Parameters

  • JOBZ β€” CHARACTER*1. 'N': eigenvalues only; 'V': eigenvalues and eigenvectors.
  • UPLO β€” CHARACTER*1. 'U': upper triangle of A is stored; 'L': lower triangle of A is stored.
  • N β€” INTEGER. Order of matrix A. N >= 0.
  • A β€” DOUBLE PRECISION array, dimension (LDA, N). On entry, this is the symmetric matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A holds the upper triangular part of the matrix A. If UPLO = 'L', the leading N-by-N lower triangular part of A holds the lower triangular part of the matrix A. On exit, if JOBZ = 'V', then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') or the upper triangle (if UPLO='U') of A β€” diagonal included β€” is destroyed. πŸ’€
  • LDA β€” INTEGER. Leading dimension of array A. LDA >= max(1,N).
  • W β€” DOUBLE PRECISION array, dimension (N). If INFO = 0, eigenvalues come in ascending order.
  • WORK β€” DOUBLE PRECISION array, dimension (MAX(1,LWORK)). On the way out, if INFO = 0, WORK(1) gives you the optimal LWORK.
  • LWORK β€” INTEGER. Length of the WORK array. LWORK >= max(1,3*N-1). For optimal efficiency, LWORK >= (NB+2)*N, where NB is the blocksize for DSYTRD returned by ILAENV. If LWORK = -1, it's a workspace query: the routine only calculates the optimal size of the WORK array, returns that value as the first entry of WORK, and XERBLA does not issue an error message related to LWORK. 🫢
  • 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.

πŸ‘‘ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 131 of file dsyev.f.


🌸 ssyev β€” SY-matrix eigenvalue slay, single precision edition 🌸

   subroutine ssyev (character jobz, character uplo, integer n, real,
       dimension( lda, * ) a, integer lda, real, dimension( * ) w, real,
       dimension( * ) work, integer lwork, integer info)

SSYEV computes eigenvalues, and optionally the left and/or right eigenvectors, for SY matrices.

🎯 Purpose

SSYEV grabs all eigenvalues, and eigenvectors if you asked, of a real symmetric matrix A. Iconic. πŸ’…

🧚 Parameters

  • JOBZ β€” CHARACTER*1. 'N': eigenvalues only; 'V': eigenvalues and eigenvectors.
  • UPLO β€” CHARACTER*1. 'U': upper triangle of A is stored; 'L': lower triangle of A is stored.
  • N β€” INTEGER. Order of matrix A. N >= 0.
  • A β€” REAL array, dimension (LDA, N). On entry, this is the symmetric matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A holds the upper triangular part of the matrix A. If UPLO = 'L', the leading N-by-N lower triangular part of A holds the lower triangular part of the matrix A. On exit, if JOBZ = 'V', then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') or the upper triangle (if UPLO='U') of A β€” diagonal included β€” is destroyed. πŸ’€
  • LDA β€” INTEGER. Leading dimension of array A. LDA >= max(1,N).
  • W β€” REAL array, dimension (N). If INFO = 0, eigenvalues come in ascending order.
  • WORK β€” REAL array, dimension (MAX(1,LWORK)). On the way out, if INFO = 0, WORK(1) gives you the optimal LWORK.
  • LWORK β€” INTEGER. Length of the WORK array. LWORK >= max(1,3*N-1). For optimal efficiency, LWORK >= (NB+2)*N, where NB is the blocksize for SSYTRD returned by ILAENV. If LWORK = -1, it's a workspace query: the routine only calculates the optimal size of the WORK array, returns that value as the first entry of WORK, and XERBLA does not issue an error message related to LWORK. ✨
  • 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. 😭

πŸ‘‘ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 131 of file ssyev.f.

Okay so next up is zheev, and the page’s own one-liner is literally: β€œZHEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices”. Iconic. Here’s the signature in all its Fortran glory:

   subroutine zheev (character jobz, character uplo, integer n, complex*16,
       dimension( lda, * ) a, integer lda, double precision, dimension( * ) w,
       complex*16, dimension( * ) work, integer lwork, double precision,
       dimension( * ) rwork, integer info)

Purpose ✨

ZHEEV computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A. That’s the assignment, bestie β€” eigenvalues first, eigenvectors if you asked for them.


Parameters πŸ’…

  • JOBZ β€” CHARACTER*1. = 'N': compute eigenvalues only; = 'V': compute eigenvalues and eigenvectors. Pick your fighter.
  • UPLO β€” CHARACTER*1. = 'U': upper triangle of A is stored; = 'L': lower triangle of A is stored.
  • N β€” INTEGER. The order of the matrix A. N >= 0.
  • A β€” COMPLEX*16 array, dimension (LDA, N). On entry, the Hermitian matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = 'V', then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') or the upper triangle (if UPLO='U') of A, including the diagonal, is destroyed. πŸ’€
  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • W β€” DOUBLE PRECISION array, dimension (N). If INFO = 0, the eigenvalues in ascending order. πŸ“ˆ
  • WORK β€” COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  • LWORK β€” INTEGER. The length of the array WORK. LWORK >= max(1,2*N-1). For optimal efficiency, LWORK >= (NB+1)*N, where NB is the blocksize for ZHETRD returned by ILAENV. If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.
  • RWORK β€” DOUBLE PRECISION 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. 🫠
⚠️ Yes, bestie: with JOBZ = 'N', the lower triangle (if UPLO='L') or the upper triangle (if UPLO='U') of A, including the diagonal, is destroyed on exit. That’s not a vibe, that’s the documented behavior.

Author πŸ§‘β€πŸ’»

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

Definition at line 138 of file zheev.f.

Author (page-level, lol) πŸŽ€

Generated automatically by Doxygen for LAPACK from the source code.


And that’s the whole zheev tea πŸ«– β€” footer energy says LAPACK, Version 3.12.0, man page heev(3). Date? Not printed on the line, so we’re not inventing one. Slay responsibly πŸ’–πŸ¦‹

πŸ“¦ where this page comes from