sbgvd#

Functions

void ssbgvd(
    const char*          jobz,
    const char*          uplo,
    const INT            n,
    const INT            ka,
    const INT            kb,
          f32*  restrict AB,
    const INT            ldab,
          f32*  restrict BB,
    const INT            ldbb,
          f32*  restrict W,
          f32*  restrict Z,
    const INT            ldz,
          f32*  restrict work,
    const INT            lwork,
          INT*  restrict iwork,
    const INT            liwork,
          INT*           info
);
void ssbgvd(const char *jobz, const char *uplo, const INT n, const INT ka, const INT kb, f32 *restrict AB, const INT ldab, f32 *restrict BB, const INT ldbb, f32 *restrict W, f32 *restrict Z, const INT ldz, f32 *restrict work, const INT lwork, INT *restrict iwork, const INT liwork, INT *info)#

SSBGVD computes all the eigenvalues, and optionally, the eigenvectors of a real generalized symmetric-definite banded eigenproblem, of the form A*x = lambda*B*x.

Here A and B are assumed to be symmetric and banded, and B is also positive definite. If eigenvectors are desired, it uses a divide and conquer algorithm.

Parameters

in
jobz

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

in
uplo

= ‘U’: Upper triangles of A and B are stored = ‘L’: Lower triangles of A and B are stored

in
n

The order of the matrices A and B. n >= 0.

in
ka

The number of superdiagonals (if uplo=’U’) or subdiagonals (if uplo=’L’) of A. ka >= 0.

in
kb

The number of superdiagonals (if uplo=’U’) or subdiagonals (if uplo=’L’) of B. kb >= 0.

inout
AB

The banded matrix A. Array of dimension (ldab, n). On exit, contents are destroyed.

in
ldab

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

inout
BB

The banded matrix B. Array of dimension (ldbb, n). On exit, the split Cholesky factor S from spbstf.

in
ldbb

The leading dimension of BB. ldbb >= kb+1.

out
W

The eigenvalues in ascending order. Array of dimension (n).

out
Z

If jobz=’V’, the eigenvectors. Array of dimension (ldz, n).

in
ldz

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

out
work

Workspace array of dimension (max(1,lwork)).

in
lwork

The dimension of work. If n <= 1, lwork >= 1. If jobz=’N’ and n > 1, lwork >= 2*n. If jobz=’V’ and n > 1, lwork >= 1 + 5*n + 2*n**2. If lwork = -1, workspace query mode.

out
iwork

Integer workspace array of dimension (max(1,liwork)).

in
liwork

The dimension of iwork. If jobz=’N’ or n <= 1, liwork >= 1. If jobz=’V’ and n > 1, liwork >= 3 + 5*n. If liwork = -1, workspace query mode.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: if info = i, for i <= n, the algorithm failed to converge if info = n + i, spbstf returned info = i (B not positive definite)

Functions

void dsbgvd(
    const char*          jobz,
    const char*          uplo,
    const INT            n,
    const INT            ka,
    const INT            kb,
          f64*  restrict AB,
    const INT            ldab,
          f64*  restrict BB,
    const INT            ldbb,
          f64*  restrict W,
          f64*  restrict Z,
    const INT            ldz,
          f64*  restrict work,
    const INT            lwork,
          INT*  restrict iwork,
    const INT            liwork,
          INT*           info
);
void dsbgvd(const char *jobz, const char *uplo, const INT n, const INT ka, const INT kb, f64 *restrict AB, const INT ldab, f64 *restrict BB, const INT ldbb, f64 *restrict W, f64 *restrict Z, const INT ldz, f64 *restrict work, const INT lwork, INT *restrict iwork, const INT liwork, INT *info)#

DSBGVD computes all the eigenvalues, and optionally, the eigenvectors of a real generalized symmetric-definite banded eigenproblem, of the form A*x = lambda*B*x.

Here A and B are assumed to be symmetric and banded, and B is also positive definite. If eigenvectors are desired, it uses a divide and conquer algorithm.

Parameters

in
jobz

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

in
uplo

= ‘U’: Upper triangles of A and B are stored = ‘L’: Lower triangles of A and B are stored

in
n

The order of the matrices A and B. n >= 0.

in
ka

The number of superdiagonals (if uplo=’U’) or subdiagonals (if uplo=’L’) of A. ka >= 0.

in
kb

The number of superdiagonals (if uplo=’U’) or subdiagonals (if uplo=’L’) of B. kb >= 0.

inout
AB

The banded matrix A. Array of dimension (ldab, n). On exit, contents are destroyed.

in
ldab

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

inout
BB

The banded matrix B. Array of dimension (ldbb, n). On exit, the split Cholesky factor S from dpbstf.

in
ldbb

The leading dimension of BB. ldbb >= kb+1.

out
W

The eigenvalues in ascending order. Array of dimension (n).

out
Z

If jobz=’V’, the eigenvectors. Array of dimension (ldz, n).

in
ldz

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

out
work

Workspace array of dimension (max(1,lwork)).

in
lwork

The dimension of work. If n <= 1, lwork >= 1. If jobz=’N’ and n > 1, lwork >= 2*n. If jobz=’V’ and n > 1, lwork >= 1 + 5*n + 2*n**2. If lwork = -1, workspace query mode.

out
iwork

Integer workspace array of dimension (max(1,liwork)).

in
liwork

The dimension of iwork. If jobz=’N’ or n <= 1, liwork >= 1. If jobz=’V’ and n > 1, liwork >= 3 + 5*n. If liwork = -1, workspace query mode.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: if info = i, for i <= n, the algorithm failed to converge if info = n + i, dpbstf returned info = i (B not positive definite)