hpevx(3)

๐Ÿ’– hpevx(3) ๐Ÿ’–

okay bestie, this is hpevx(3) from the Library Functions Manual, and it's basically the group chat for {hp,sp}evx: eig, bisection. Precision is the vibe, so all the signatures and values stay exactly as they are. โœจ


๐ŸŒธ NAME ๐ŸŒธ

  • hpevx โ€” {hp,sp}evx: eig, bisection

๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

Functions

chpevx

subroutine chpevx (jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
    w, z, ldz, work, rwork, iwork, ifail, info)

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

dspevx

subroutine dspevx (jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
    w, z, ldz, work, iwork, ifail, info)

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

sspevx

subroutine sspevx (jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
    w, z, ldz, work, iwork, ifail, info)

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

zhpevx

subroutine zhpevx (jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
    w, z, ldz, work, rwork, iwork, ifail, info)

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


๐Ÿ’œ Detailed Description ๐Ÿ’œ

The real tea is under Function Documentation, bestie โ€” that's where each subroutine gets its full moment. ๐Ÿซถ


๐Ÿ”ฅ Function Documentation ๐Ÿ”ฅ

subroutine chpevx

subroutine chpevx (character jobz, character range, character uplo, integer
    n, complex, dimension( * ) ap, real vl, real vu, integer il, integer iu,
    real abstol, integer m, real, dimension( * ) w, complex, dimension( ldz,
    * ) z, integer ldz, complex, dimension( * ) work, real, dimension( * )
    rwork, integer, dimension( * ) iwork, integer, dimension( * ) ifail,
    integer info)

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

Purpose

So CHPEVX computes selected eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A in packed storage. Eigenvalues/vectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues. slay. ๐Ÿ’…

Parameters

  • JOBZ โ€” JOBZ is CHARACTER*1. 'N': Compute eigenvalues only; 'V': Compute eigenvalues and eigenvectors.
  • RANGE โ€” RANGE is CHARACTER*1. 'A': all eigenvalues will be found; 'V': all eigenvalues in the half-open interval (VL,VU] will be found; 'I': the IL-th through IU-th eigenvalues will be found.
  • 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, 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 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, and if UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A.

  • VL โ€” VL is REAL. If RANGE='V', the lower bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
  • VU โ€” VU is REAL. If RANGE='V', the upper bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
  • IL โ€” IL is INTEGER. If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
  • IU โ€” IU is INTEGER. If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
  • ABSTOL โ€” ABSTOL is REAL. The absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval [a,b] of width less than or equal to
ABSTOL + EPS *   max( |a|,|b| ) ,

where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing AP to tridiagonal form.

Eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*SLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*SLAMCH('S').

See by Demmel and Kahan, LAPACK Working Note #3.

  • M โ€” M is INTEGER. The total number of eigenvalues found. 0 <= M <= N. If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
  • W โ€” W is REAL array, dimension (N). If INFO = 0, the selected eigenvalues in ascending order.
  • Z โ€” Z is COMPLEX array, dimension (LDZ, max(1,M)). If JOBZ = 'V', then if INFO = 0, the first M columns of Z contain the orthonormal eigenvectors of the matrix A corresponding to the selected eigenvalues, with the i-th column of Z holding the eigenvector associated with W(i). If an eigenvector fails to converge, then that column of Z contains the latest approximation to the eigenvector, and the index of the eigenvector is returned in IFAIL. If JOBZ = 'N', then Z is not referenced.

Note: the user must ensure that at least max(1,M) columns are supplied in the array Z; if RANGE = 'V', the exact value of M is not known in advance and an upper bound must be used.

  • 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 (2*N).
  • RWORK โ€” RWORK is REAL array, dimension (7*N).
  • IWORK โ€” IWORK is INTEGER array, dimension (5*N).
  • IFAIL โ€” IFAIL is INTEGER array, dimension (N). If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL are zero. If INFO > 0, then IFAIL contains the indices of the eigenvectors that failed to converge. If JOBZ = 'N', then IFAIL is not referenced.
  • INFO โ€” INFO is INTEGER. = 0: successful exit; < 0: if INFO = -i, the i-th argument had an illegal value; > 0: if INFO = i, then i eigenvectors failed to converge. Their indices are stored in array IFAIL.

Author

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

Definition

Definition at line 237 of file chpevx.f.


subroutine dspevx

subroutine dspevx (character jobz, character range, character uplo, integer
    n, double precision, dimension( * ) ap, double precision vl, double
    precision vu, integer il, integer iu, double precision abstol, integer
    m, double precision, dimension( * ) w, double precision, dimension( ldz,
    * ) z, integer ldz, double precision, dimension( * ) work, integer,
    dimension( * ) iwork, integer, dimension( * ) ifail, integer info)

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

Purpose

DSPEVX computes selected eigenvalues and, optionally, eigenvectors of a real symmetric matrix A in packed storage. Eigenvalues/vectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues. iconic. ๐ŸŒˆ

Parameters

  • JOBZ โ€” JOBZ is CHARACTER*1. 'N': Compute eigenvalues only; 'V': Compute eigenvalues and eigenvectors.
  • RANGE โ€” RANGE is CHARACTER*1. 'A': all eigenvalues will be found; 'V': all eigenvalues in the half-open interval (VL,VU] will be found; 'I': the IL-th through IU-th eigenvalues will be found.
  • 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, and if UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A.

  • VL โ€” this one continues in part 2, bestie โ€” hold that thought ๐Ÿ’–
  • VL โ€” DOUBLE PRECISION bestie. If RANGE='V', this is the lower bound of the interval we're hunting eigenvalues in. And VL < VU, no exceptions. Not referenced at all if RANGE = 'A' or 'I' โ€” she's off duty those days ๐Ÿ’…
  • VU โ€” DOUBLE PRECISION again. If RANGE='V', this is the upper bound of the interval to be searched for eigenvalues. VL < VU. Also not referenced if RANGE = 'A' or 'I'. Iconic, symmetric, we love her ๐ŸŽ€
  • IL โ€” INTEGER. If RANGE='I', this is the index of the smallest eigenvalue to be returned. The rules: 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V' ๐Ÿฆ‹
  • IU โ€” INTEGER. If RANGE='I', this is the index of the largest eigenvalue to be returned. Same deal: 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V' ๐Ÿฆ‹
  • ABSTOL โ€” DOUBLE PRECISION, the absolute error tolerance for the eigenvalues. Okay so here's the vibe check for convergence: an approximate eigenvalue is accepted as converged when it's determined to lie in an interval [a,b] of width less than or equal to
        ABSTOL + EPS *   max( |a|,|b| ) ,

where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| gets used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing AP to tridiagonal form.

โœจ Pro tip straight from the page: eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*DLAMCH('S'), not zero. And if this routine returns with INFO>0, meaning some eigenvectors did not converge, try setting ABSTOL to 2*DLAMCH('S').

See by Demmel and Kahan, LAPACK Working Note #3. ๐Ÿ“š

  • M โ€” INTEGER. The total number of eigenvalues found. 0 <= M <= N. If RANGE = 'A', then M = N, and if RANGE = 'I', then M = IU-IL+1 ๐Ÿงฎ
  • W โ€” DOUBLE PRECISION array, dimension (N). If INFO = 0, the selected eigenvalues in ascending order. Sorted and serving looks ๐Ÿ‘‘
  • Z โ€” DOUBLE PRECISION array, dimension (LDZ, max(1,M)). If JOBZ = 'V', then if INFO = 0, the first M columns of Z contain the orthonormal eigenvectors of the matrix A corresponding to the selected eigenvalues, with the i-th column of Z holding the eigenvector associated with W(i).

If an eigenvector fails to converge, then that column of Z contains the latest approximation to the eigenvector, and the index of the eigenvector is returned in IFAIL. (she tried her best ๐Ÿ˜ญ)

If JOBZ = 'N', then Z is not referenced.

โš ๏ธ Note: you, the user, must ensure that at least max(1,M) columns are supplied in the array Z. If RANGE = 'V', the exact value of M is not known in advance and an upper bound must be used. No cap, plan ahead ๐Ÿ™ˆ
  • LDZ โ€” INTEGER. The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', then LDZ >= max(1,N) ๐Ÿ“
  • WORK โ€” DOUBLE PRECISION array, dimension (8*N). Just workspace, she's doing the behind-the-scenes labor ๐Ÿซถ
  • IWORK โ€” INTEGER array, dimension (5*N). More workspace, integer flavored ๐Ÿ“
  • IFAIL โ€” INTEGER array, dimension (N). If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL are zero. If INFO > 0, then IFAIL contains the indices of the eigenvectors that failed to converge. If JOBZ = 'N', then IFAIL is not referenced ๐Ÿ’€
  • INFO โ€” INTEGER, the whole personality of the exit:
    • = 0: successful exit โœจ slay
    • < 0: if INFO = -i, the i-th argument had an illegal value ๐Ÿšจ
    • > 0: if INFO = i, then i eigenvectors failed to converge. Their indices are stored in array IFAIL ๐Ÿ˜ญ

๐ŸŽ€ Author ๐ŸŽ€

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

๐ŸŒˆ Definition ๐ŸŒˆ

Definition at line 231 of file dspevx.f.


๐Ÿฆ‹ subroutine sspevx ๐Ÿฆ‹

subroutine sspevx (character jobz, character range, character uplo, integer
    n, real, dimension( * ) ap, real vl, real vu, integer il, integer iu,
    real abstol, integer m, real, dimension( * ) w, real, dimension( ldz, *
    ) z, integer ldz, real, dimension( * ) work, integer, dimension( * )
    iwork, integer, dimension( * ) ifail, integer info)

SSPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices โ€” yes, that's literally what the page says, "OTHER matrices", she's being mysterious ๐Ÿ’… iykyk

โœจ Purpose โœจ

!>
!> SSPEVX computes selected eigenvalues and, optionally, eigenvectors
!> of a real symmetric matrix A in packed storage.  Eigenvalues/vectors
!> can be selected by specifying either a range of values or a range of
!> indices for the desired eigenvalues.
!>

So like โ€” real symmetric matrix A, packed storage, pick your eigenvalues by value range or by index range. Choose your own adventure, bestie ๐ŸŒธ

๐Ÿ’– Parameters ๐Ÿ’–

  • JOBZ โ€” CHARACTER*1
    • = 'N': Compute eigenvalues only;
    • = 'V': Compute eigenvalues and eigenvectors.
  • RANGE โ€” CHARACTER*1
    • = 'A': all eigenvalues will be found;
    • = 'V': all eigenvalues in the half-open interval (VL,VU] will be found;
    • = 'I': the IL-th through IU-th eigenvalues will be found.
  • 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 โœจ
  • AP โ€” 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, and if UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A.

๐Ÿซถ Heads up: your input gets overwritten. That's not a bug, that's the deal โœจ
  • VL โ€” REAL. If RANGE='V', the lower bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I' ๐Ÿ’œ
  • VU โ€” REAL. If RANGE='V', the upper bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I' ๐Ÿ’œ
  • IL โ€” INTEGER. If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V' ๐Ÿฆ‹
  • IU โ€” INTEGER. If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V' ๐Ÿฆ‹
  • ABSTOL โ€” REAL, the absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval [a,b] of width less than or equal to
        ABSTOL + EPS *   max( |a|,|b| ) ,

where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing AP to tridiagonal form.

โœจ Same energy as before: eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*SLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*SLAMCH('S').

See by Demmel and Kahan, LAPACK Working Note #3. ๐Ÿ“š

  • M โ€” INTEGER. The total number of eigenvalues found. 0 <= M <= N. If RANGE = 'A', then M = N, and if RANGE = 'I', then M = IU-IL+1 ๐Ÿงฎ
  • W โ€” REAL array, dimension (N). If INFO = 0, the selected eigenvalues in ascending order ๐Ÿ‘‘
  • Z โ€” REAL array, dimension (LDZ, max(1,M)). If JOBZ = 'V', then if INFO = 0, the first M columns of Z contain the orthonormal eigenvectors of the matrix A corresponding to the selected eigenvalues, with the i-th column of Z holding the eigenvector associated with W(i).

If an eigenvector fails to converge, then that column of Z contains the latest approximation to the eigenvector, and the index of the eigenvector is returned in IFAIL.

If JOBZ = 'N', then Z is not referenced.

โš ๏ธ Note: the user must ensure that at least max(1,M) columns are supplied in the array Z. If RANGE = 'V', the exact value of M is not known in advance and an upper bound must be used ๐Ÿ™ˆ
  • LDZ โ€” INTEGER. The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', then LDZ >= max(1,N) ๐Ÿ“
  • WORK โ€” REAL array, dimension (8*N) ๐Ÿซถ
  • IWORK โ€” INTEGER array, dimension (5*N) ๐Ÿ“
  • IFAIL โ€” INTEGER array, dimension (N). If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL are zero. If INFO > 0, then IFAIL contains the indices of the eigenvectors that failed to converge. If JOBZ = 'N', then IFAIL is not referenced ๐Ÿ’€

finishing up sspevxโ€™s parameter tea โ˜• โ€” these last two are the emotional support integers, lowkey:

  • IFAIL โ€” IFAIL is INTEGER array, dimension (N). If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL are zero. If INFO > 0, then IFAIL contains the indices of the eigenvectors that failed to converge. If JOBZ = 'N', then IFAIL is not referenced. ๐Ÿ’…
  • INFO โ€” INFO is INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value
    • > 0: if INFO = i, then i eigenvectors failed to converge. Their indices are stored in array IFAIL.

Author ๐Ÿ’–

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

Definition at line 231 of file sspevx.f.


subroutine zhpevx ๐Ÿฆ‹

The official one-liner is literally: ZHPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. Yes, โ€œOTHERโ€ is doing main character energy there, donโ€™t ask ๐Ÿ˜ญ.

   subroutine zhpevx (character jobz, character range, character uplo, integer
       n, complex*16, dimension( * ) ap, double precision vl, double precision
       vu, integer il, integer iu, double precision abstol, integer m, double
       precision, dimension( * ) w, complex*16, dimension( ldz, * ) z, integer
       ldz, complex*16, dimension( * ) work, double precision, dimension( * )
       rwork, integer, dimension( * ) iwork, integer, dimension( * ) ifail,
       integer info)

Purpose โœจ

ZHPEVX computes selected eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A in packed storage. Eigenvalues/vectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues. obsessed ๐Ÿซถ

Parameters ๐ŸŽ€

  • JOBZ โ€” JOBZ is CHARACTER*1.
    • = 'N': Compute eigenvalues only;
    • = 'V': Compute eigenvalues and eigenvectors.
  • RANGE โ€” RANGE is CHARACTER*1.
    • = 'A': all eigenvalues will be found;
    • = 'V': all eigenvalues in the half-open interval (VL,VU] will be found;
    • = 'I': the IL-th through IU-th eigenvalues will be found.
  • 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*16 array, dimension (N*(N+1)/2). On entry, 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 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, and if UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A.

  • VL โ€” VL is DOUBLE PRECISION. If RANGE='V', the lower bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
  • VU โ€” VU is DOUBLE PRECISION. If RANGE='V', the upper bound of the interval to be searched for eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'.
  • IL โ€” IL is INTEGER. If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
  • IU โ€” IU is INTEGER. If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'.
  • ABSTOL โ€” ABSTOL is DOUBLE PRECISION. The absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval [a,b] of width less than or equal to
ABSTOL + EPS *   max( |a|,|b| ) ,

where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing AP to tridiagonal form.

Eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*DLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*DLAMCH('S').

See the reference by Demmel and Kahan, LAPACK Working Note #3.

  • M โ€” M is INTEGER. The total number of eigenvalues found. 0 <= M <= N. If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
  • W โ€” W is DOUBLE PRECISION array, dimension (N). If INFO = 0, the selected eigenvalues in ascending order.
  • Z โ€” Z is COMPLEX*16 array, dimension (LDZ, max(1,M)). If JOBZ = 'V', then if INFO = 0, the first M columns of Z contain the orthonormal eigenvectors of the matrix A corresponding to the selected eigenvalues, with the i-th column of Z holding the eigenvector associated with W(i). If an eigenvector fails to converge, then that column of Z contains the latest approximation to the eigenvector, and the index of the eigenvector is returned in IFAIL. If JOBZ = 'N', then Z is not referenced.
Note: the user must ensure that at least max(1,M) columns are supplied in the array Z; if RANGE = 'V', the exact value of M is not known in advance and an upper bound must be used.
  • 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 (2*N).
  • RWORK โ€” RWORK is DOUBLE PRECISION array, dimension (7*N).
  • IWORK โ€” IWORK is INTEGER array, dimension (5*N).
  • IFAIL โ€” IFAIL is INTEGER array, dimension (N). If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL are zero. If INFO > 0, then IFAIL contains the indices of the eigenvectors that failed to converge. If JOBZ = 'N', then IFAIL is not referenced.
  • INFO โ€” INFO is INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value
    • > 0: if INFO = i, then i eigenvectors failed to converge. Their indices are stored in array IFAIL.

Author ๐Ÿ’œ

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

Definition at line 237 of file zhpevx.f.


Author ๐Ÿค–

Generated automatically by Doxygen for LAPACK from the source code.


okay bestie, footer vibe check: this tea came from LAPACK Version 3.12.0, page hpevx(3), and the footer date is lowkey not printed on this one โ€” so no cap, weโ€™re not inventing one ๐Ÿ˜ญ๐Ÿซถ๐Ÿ’…

๐Ÿ“ฆ where this page comes from