Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 12/16/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?feast_sbgv/?feast_hbgv

Extended Eigensolver interface for generalized eigenvalue problem with banded matrices.

Syntax

void sfeast_sbgv (const char * uplo, const MKL_INT * n, const MKL_INT * kla, const float * a, const MKL_INT * lda, const MKL_INT * klb, const float * b, const MKL_INT * ldb, MKL_INT * fpm, float * epsout, MKL_INT * loop, const float * emin, const float * emax, MKL_INT * m0, float * e, float * x, MKL_INT * m, float * res, MKL_INT * info);

void dfeast_sbgv (const char * uplo, const MKL_INT * n, const MKL_INT * kla, const double * a, const MKL_INT * lda, const MKL_INT * klb, const double * b, const MKL_INT * ldb, MKL_INT * fpm, double * epsout, MKL_INT * loop, const double * emin, const double * emax, MKL_INT * m0, double * e, double * x, MKL_INT * m, double * res, MKL_INT * info);

void cfeast_hbgv (const char * uplo, const MKL_INT * n, const MKL_INT * kla, const MKL_Complex8 * a, const MKL_INT * lda, const MKL_INT * klb, const MKL_Complex8 * b, const MKL_INT * ldb, MKL_INT * fpm, float * epsout, MKL_INT * loop, const float * emin, const float * emax, MKL_INT * m0, float * e, MKL_Complex8 * x, MKL_INT * m, float * res, MKL_INT * info);

void zfeast_hbgv (const char * uplo, const MKL_INT * n, const MKL_INT * kla, const MKL_Complex16 * a, const MKL_INT * lda, const MKL_INT * klb, const MKL_Complex16 * b, const MKL_INT * ldb, MKL_INT * fpm, double * epsout, MKL_INT * loop, const double * emin, const double * emax, MKL_INT * m0, double * e, MKL_Complex16 * x, MKL_INT * m, double * res, MKL_INT * info);

Include Files
  • mkl.h
Description

The routines compute all the eigenvalues and eigenvectors for generalized eigenvalue problems, Ax = λBx, within a given search interval.

NOTE:

Both matrices A and B must use the same family of storage format. The bandwidth, however, can be different (klb can be different from kla).

Input Parameters
uplo

Must be 'U' or 'L' or 'F' .

If UPLO = 'U', a and b store the upper triangular parts of A and B respectively.

If UPLO = 'L', a and b store the lower triangular parts of A and B respectively.

If UPLO= 'F', a and b store the full matrices A and B respectively.

n

Sets the size of the problem. n > 0.

kla

The number of super- or sub-diagonals within the band in A (kla 0).

a

Array of dimension lda by n, contains either full matrix A or upper or lower triangular part of the matrix A, as specified by uplo

lda

The leading dimension of the array a. Must be at least max(1, n).

klb

The number of super- or sub-diagonals within the band in B (klb 0).

b

Array of dimension ldb by n, contains either full matrix B or upper or lower triangular part of the matrix B, as specified by uplo

ldb

The leading dimension of the array B. Must be at least max(1, n).

fpm

Array, dimension of 128. This array is used to pass various parameters to Extended Eigensolver routines. See Extended Eigensolver Input Parameters for a complete description of the parameters and their default values.

emin, emax

The lower and upper bounds of the interval to be searched for eigenvalues; eminemax.

NOTE:
Users are advised to avoid situations in which eigenvalues nearly coincide with the interval endpoints. This may lead to unpredictable selection or omission of such eigenvalues. Users should instead specify a slightly larger interval than needed and, if required, pick valid eigenvalues and their corresponding eigenvectors for subsequent use.
m0

On entry, specifies the initial guess for subspace dimension to be used, 0 < m0n. Set m0m where m is the total number of eigenvalues located in the interval [emin, emax]. If the initial guess is wrong, Extended Eigensolver routines return info=3.

x

On entry, if fpm[4]=1, the array x of size n by m contains a basis of guess subspace where n is the order of the input matrix.

Output Parameters
epsout

On output, contains the relative error on the trace: |tracei - tracei-1| /max(|emin|, |emax|)

loop

On output, contains the number of refinement loop executed. Ignored on input.

e

Array of length m0. On output, the first m entries of e are eigenvalues found in the interval.

x

On output, the first m columns of x contain the orthonormal eigenvectors corresponding to the computed eigenvalues e, with the i-th column of x holding the eigenvector associated with e[i].

m

The total number of eigenvalues found in the interval [emin, emax]: 0 ≤ mm0.

res

Array of length m0. On exit, the first m components contain the relative residual vector:

for i=1, 2, …, m, and where m is the total number of eigenvalues found in the search interval.

info

If info=0, the execution is successful. If info ≠ 0, see Output Eigensolver info Details.