hpev(3)

hpev(3): eig, QR iteration ✨

okay bestie, this is the hpev(3) page from the Library Functions Manual, and it's giving packed-matrix LAPACK realness πŸ’…. We're talking eigenvalues, eigenvectors, and a whole little family of routines: chpev, dspev, sspev, and zhpev. Buckle up πŸŽ€


πŸ’– NAME πŸ’–

hpev β€” {hp,sp}ev: eig, QR iteration

🌸 SYNOPSIS 🌸

Functions

  • chpev β€” subroutine chpev (jobz, uplo, n, ap, w, z, ldz, work, rwork, info) β€” CHPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
  • dspev β€” subroutine dspev (jobz, uplo, n, ap, w, z, ldz, work, info) β€” DSPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
  • sspev β€” subroutine sspev (jobz, uplo, n, ap, w, z, ldz, work, info) β€” SSPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
  • zhpev β€” subroutine zhpev (jobz, uplo, n, ap, w, z, ldz, work, rwork, info) β€” ZHPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices

πŸ¦‹ Detailed Description πŸ¦‹

This section is basically a title card in the original page, so no extra technical tea here, bestie. The actual function lore lives under Function Documentation πŸ‘‡

πŸ‘‘ Function Documentation πŸ‘‘

πŸ’œ chpev πŸ’œ

subroutine chpev (character jobz, character uplo, integer n, complex,
       dimension( * ) ap, real, dimension( * ) w, complex, dimension( ldz, * )
       z, integer ldz, complex, dimension( * ) work, real, dimension( * )
       rwork, integer info)

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

✨ Purpose ✨

CHPEV is the complex Hermitian, packed-storage routine: it computes all the eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix in packed storage. Iconic behavior, honestly πŸ’…

πŸŽ€ 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.

AP β€” AP is COMPLEX array, dimension (N*(N+1)/2)

On entry, this is the upper or lower triangle of the Hermitian matrix A, packed columnwise in a linear array. The j-th column of A is stored in AP like this:

if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.

On exit, AP is overwritten by values generated during the reduction to tridiagonal form. If UPLO = 'U', the diagonal and first superdiagonal of the tridiagonal matrix T overwrite the corresponding elements of A. If UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A. So yeah, your input gets absolutely redecorated 🫠

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. She's off duty πŸ’€

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 (max(1, 2*N-1))

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.
Converge or explain yourself, bestie 😭 The INFO > 0 case means the algorithm did not fully converge.

🌟 Author 🌟

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

Definition at line 136 of file chpev.f.


πŸ’™ dspev πŸ’™

subroutine dspev (character jobz, character uplo, integer n, double
       precision, dimension( * ) ap, double precision, dimension( * ) w, double
       precision, dimension( ldz, * ) z, integer ldz, double precision,
       dimension( * ) work, integer info)

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

✨ Purpose ✨

DSPEV computes all the eigenvalues and, optionally, eigenvectors of a real symmetric matrix A in packed storage. Double precision, packed storage, main character energy πŸ”₯

πŸŽ€ 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.

AP β€” AP is DOUBLE PRECISION array, dimension (N*(N+1)/2)

On entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as follows:

if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.

On exit, AP is overwritten by values generated during the reduction to tridiagonal form. If UPLO = 'U', the diagonal and first superdiagonal of the tridiagonal matrix T overwrite the corresponding elements of A. If UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A. Same vibe: your packed triangle is getting a whole new look ✨

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 (3*N)

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 129 of file dspev.f.


πŸ’š sspev πŸ’š

subroutine sspev (character jobz, character uplo, integer n, real,
       dimension( * ) ap, real, dimension( * ) w, real, dimension( ldz, * ) z,
       integer ldz, real, dimension( * ) work, integer info)

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

✨ Purpose ✨

SSPEV computes all the eigenvalues and, optionally, eigenvectors of a real symmetric matrix A in packed storage. Real symmetric, packed, single precision β€” she's serving exactly what the name says πŸ“

πŸŽ€ 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.

AP β€” AP is REAL array, dimension (N*(N+1)/2)

On entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as follows:

if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.

On exit, AP is overwritten by values generated during the reduction to tridiagonal form. If UPLO = 'U', the diagonal and first superdiagonal of the tridiagonal matrix T overwrite the corresponding elements of A. If UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A. The packed triangle gets a glow-up and you just have to live with it πŸ’…

W β€” W is REAL array, dimension (N)

If INFO = 0, the eigenvalues in ascending order.

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.

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 (3*N)

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 129 of file sspev.f.

πŸ’– subroutine zhpev πŸ’–

   subroutine zhpev (character jobz, character uplo, integer n, complex*16,
       dimension( * ) ap, double precision, dimension( * ) w, complex*16,
       dimension( ldz, * ) z, integer ldz, complex*16, dimension( * ) work,
       double precision, dimension( * ) rwork, integer info)

okay bestie, the doc's one-liner is literally: β€œZHPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices.” Not me adding β€œOTHER” β€” that's the text. πŸ’…

✨ Purpose ✨

ZHPEV computes all the eigenvalues and, optionally, the eigenvectors of a complex Hermitian matrix in packed storage. That's the whole assignment. ✨

πŸŽ€ Parameters πŸŽ€

  • JOBZ β€” CHARACTER*1. The switch for what you actually want:
    • = 'N': Compute eigenvalues only;
    • = 'V': Compute eigenvalues and eigenvectors.
  • UPLO β€” CHARACTER*1. Tells it which triangle of A you packed:
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • N β€” INTEGER. The order of the matrix A. N >= 0.
  • AP β€” COMPLEX*16 array, dimension (N*(N+1)/2). On entry, this is the upper or lower triangle of the Hermitian matrix A, packed columnwise in a linear array. The j-th column of A is stored in AP like this:
    • if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
    • if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.

On exit, AP is overwritten by values generated during the reduction to tridiagonal form. If UPLO = 'U', the diagonal and first superdiagonal of the tridiagonal matrix T overwrite the corresponding elements of A, and if UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A. So yeah, your input gets ate. πŸ’€

  • W β€” DOUBLE PRECISION array, dimension (N). If INFO = 0, the eigenvalues in ascending order. Slay, sorted. ✨
  • Z β€” 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. Don't even look at it, bestie. πŸ™ˆ
  • LDZ β€” INTEGER. The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).
  • WORK β€” COMPLEX*16 array, dimension (max(1, 2*N-1)). Workspace. It's giving backstage crew. 🫢
  • RWORK β€” DOUBLE PRECISION array, dimension (max(1, 3*N-2)). More workspace. πŸ’…
  • INFO β€” INTEGER. The vibe check at the end:
    • = 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 136 of file zhpev.f.

Author Generated automatically by Doxygen for LAPACK from the source code.


πŸ’– and that's the whole hpev(3) moment, bestie β€” brought to you by LAPACK Version 3.12.0, page hpev(3). Footer vibes only, no cap. πŸŽ€βœ¨

πŸ“¦ where this page comes from