SRC/zhpev.f(3)

✨ SRC/zhpev.f ✨

okay bestie, buckle up, because we're diving into some LAPACK realness πŸ’…

πŸ’– SYNOPSIS πŸ’–

Functions/Subroutines

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


πŸŽ€ Function/Subroutine Documentation πŸŽ€

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)

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

πŸ¦‹ Purpose:

no cap, here's the tea:

ZHPEV computes all the eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix in packed storage.

literally iconic ✨


🌸 Parameters 🌸

  • JOBZ

okay so JOBZ is CHARACTER*1 and it tells us what we're doing:

  • = 'N': Compute eigenvalues only (just the vibes, no vectors);
  • = 'V': Compute eigenvalues and eigenvectors (the whole package, periodt).
  • UPLO

UPLO is CHARACTER*1, and it's giving "which triangle are we working with?" energy:

  • = 'U': Upper triangle of A is stored;
  • = 'L': Lower triangle of A is stored.
  • N

N is INTEGER. It's the order of the matrix A. So like, N >= 0 bestie, don't come at me with negative numbers πŸ™ˆ

  • AP

AP is COMPLEX*16 array, dimension (N*(N+1)/2). On entry, it's holding the upper or lower triangle of the Hermitian matrix A, packed columnwise in a linear array. The way this works is:

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 though, AP is overwritten by values generated during the reduction to tridiagonal form 😭 like it gets a whole glow-up. 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, AP goes through some changes, iykyk.

  • W

W is DOUBLE PRECISION array, dimension (N). If INFO = 0, it contains the eigenvalues in ascending order. slay.

  • 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 β€” it's literally just vibing in the background, not invited to the party 🫢

  • LDZ

LDZ is INTEGER. It's the leading dimension of the array Z. So like, LDZ >= 1, and if JOBZ = 'V', then LDZ >= max(1,N). Don't mess this up bestie.

  • WORK

WORK is COMPLEX*16 array, dimension (max(1, 2*N-1)). It's doing its thing behind the scenes πŸ’…

  • RWORK

RWORK is DOUBLE PRECISION array, dimension (max(1, 3*N-2)). Same energy β€” just working hard so you don't have to.

  • INFO

INFO is INTEGER, and it's giving "here's what happened" realness:

  • = 0: successful exit β€” we ate and left no crumbs πŸ‘‘
  • < 0: if INFO = -i, the i-th argument had an illegal value β€” not me making a mistake 😭
  • > 0: if INFO = i, the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. it's giving "the vibes were off" πŸ’€

🌈 Author 🌈

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

Definition at line 136 of file zhpev.f.


✨ Author (again, because she's iconic) ✨

Generated automatically by Doxygen for LAPACK from the source code. no cap, that's just how we do it around here πŸ’–


okay bestie, that's the whole manual page. you're now officially an expert on zhpev.f. go forth and compute those eigenvalues and eigenvectors like the main character you are πŸ¦‹βœ¨

this masterpiece was generated by Doxygen for LAPACK from the source code, and it's serving LAPACK Version 3.12.0 realness. periodt. πŸ’…πŸŽ€

πŸ“¦ where this page comes from