hbevx#

Functions

void chbevx(
    const char*          jobz,
    const char*          range,
    const char*          uplo,
    const INT            n,
    const INT            kd,
          c64*  restrict AB,
    const INT            ldab,
          c64*  restrict Q,
    const INT            ldq,
    const f32            vl,
    const f32            vu,
    const INT            il,
    const INT            iu,
    const f32            abstol,
          INT*           m,
          f32*  restrict W,
          c64*  restrict Z,
    const INT            ldz,
          c64*  restrict work,
          f32*  restrict rwork,
          INT*  restrict iwork,
          INT*  restrict ifail,
          INT*           info
);
void chbevx(const char *jobz, const char *range, const char *uplo, const INT n, const INT kd, c64 *restrict AB, const INT ldab, c64 *restrict Q, const INT ldq, const f32 vl, const f32 vu, const INT il, const INT iu, const f32 abstol, INT *m, f32 *restrict W, c64 *restrict Z, const INT ldz, c64 *restrict work, f32 *restrict rwork, INT *restrict iwork, INT *restrict ifail, INT *info)#

CHBEVX computes selected eigenvalues and, optionally, eigenvectors of a complex Hermitian band matrix A.

Eigenvalues and eigenvectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues.

Parameters

in
jobz

= ‘N’: Compute eigenvalues only = ‘V’: Compute eigenvalues and eigenvectors

in
range

= ‘A’: all eigenvalues = ‘V’: eigenvalues in (vl,vu] = ‘I’: eigenvalues il through iu

in
uplo

= ‘U’: Upper triangle of A is stored = ‘L’: Lower triangle of A is stored

in
n

The order of the matrix A. n >= 0.

in
kd

The number of super-/sub-diagonals of A. kd >= 0.

inout
AB

Complex array, dimension (ldab, n). On entry, the upper or lower triangle of the Hermitian band matrix A. On exit, overwritten by reduction values.

in
ldab

The leading dimension of AB. ldab >= kd+1.

out
Q

Complex array, dimension (ldq, n). If jobz=’V’, the unitary matrix used in the reduction to tridiagonal form.

in
ldq

The leading dimension of Q. ldq >= max(1,n) if jobz=’V’.

in
vl

Lower bound of interval (if range=’V’).

in
vu

Upper bound of interval (if range=’V’).

in
il

Index of smallest eigenvalue (if range=’I’).

in
iu

Index of largest eigenvalue (if range=’I’).

in
abstol

Absolute error tolerance for eigenvalues.

out
m

The total number of eigenvalues found.

out
W

The selected eigenvalues in ascending order.

out
Z

Complex array, dimension (ldz, max(1,m)). If jobz=’V’, the eigenvectors.

in
ldz

The leading dimension of Z. ldz >= 1, and >= n if jobz=’V’.

out
work

Complex workspace array of dimension (n).

out
rwork

Single precision workspace array of dimension (7*n).

out
iwork

Integer workspace array of dimension (5*n).

out
ifail

If jobz=’V’, indices of eigenvectors that failed to converge.

out
info

  • = 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

Functions

void zhbevx(
    const char*          jobz,
    const char*          range,
    const char*          uplo,
    const INT            n,
    const INT            kd,
          c128* restrict AB,
    const INT            ldab,
          c128* restrict Q,
    const INT            ldq,
    const f64            vl,
    const f64            vu,
    const INT            il,
    const INT            iu,
    const f64            abstol,
          INT*           m,
          f64*  restrict W,
          c128* restrict Z,
    const INT            ldz,
          c128* restrict work,
          f64*  restrict rwork,
          INT*  restrict iwork,
          INT*  restrict ifail,
          INT*           info
);
void zhbevx(const char *jobz, const char *range, const char *uplo, const INT n, const INT kd, c128 *restrict AB, const INT ldab, c128 *restrict Q, const INT ldq, const f64 vl, const f64 vu, const INT il, const INT iu, const f64 abstol, INT *m, f64 *restrict W, c128 *restrict Z, const INT ldz, c128 *restrict work, f64 *restrict rwork, INT *restrict iwork, INT *restrict ifail, INT *info)#

ZHBEVX computes selected eigenvalues and, optionally, eigenvectors of a complex Hermitian band matrix A.

Eigenvalues and eigenvectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues.

Parameters

in
jobz

= ‘N’: Compute eigenvalues only = ‘V’: Compute eigenvalues and eigenvectors

in
range

= ‘A’: all eigenvalues = ‘V’: eigenvalues in (vl,vu] = ‘I’: eigenvalues il through iu

in
uplo

= ‘U’: Upper triangle of A is stored = ‘L’: Lower triangle of A is stored

in
n

The order of the matrix A. n >= 0.

in
kd

The number of super-/sub-diagonals of A. kd >= 0.

inout
AB

Complex array, dimension (ldab, n). On entry, the upper or lower triangle of the Hermitian band matrix A. On exit, overwritten by reduction values.

in
ldab

The leading dimension of AB. ldab >= kd+1.

out
Q

Complex array, dimension (ldq, n). If jobz=’V’, the unitary matrix used in the reduction to tridiagonal form.

in
ldq

The leading dimension of Q. ldq >= max(1,n) if jobz=’V’.

in
vl

Lower bound of interval (if range=’V’).

in
vu

Upper bound of interval (if range=’V’).

in
il

Index of smallest eigenvalue (if range=’I’).

in
iu

Index of largest eigenvalue (if range=’I’).

in
abstol

Absolute error tolerance for eigenvalues.

out
m

The total number of eigenvalues found.

out
W

The selected eigenvalues in ascending order.

out
Z

Complex array, dimension (ldz, max(1,m)). If jobz=’V’, the eigenvectors.

in
ldz

The leading dimension of Z. ldz >= 1, and >= n if jobz=’V’.

out
work

Complex workspace array of dimension (n).

out
rwork

Double precision workspace array of dimension (7*n).

out
iwork

Integer workspace array of dimension (5*n).

out
ifail

If jobz=’V’, indices of eigenvectors that failed to converge.

out
info

  • = 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