Developer Reference for Intel® oneAPI Math Kernel Library for C
?feast_scsrgv/?feast_hcsrgv
Extended Eigensolver interface for generalized eigenvalue problem with sparse matrices.
Syntax
voidsfeast_scsrgv ( constchar*uplo , constMKL_INT*n , constfloat*a , constMKL_INT*ia , constMKL_INT*ja , constfloat*b , constMKL_INT*ib , constMKL_INT*jb , MKL_INT*fpm , float*epsout , MKL_INT*loop , constfloat*emin , constfloat*emax , MKL_INT*m0 , float*e , float*x , MKL_INT*m , float*res , MKL_INT*info );
voiddfeast_scsrgv ( constchar*uplo , constMKL_INT*n , constdouble*a , constMKL_INT*ia , constMKL_INT*ja , constdouble*b , constMKL_INT*ib , constMKL_INT*jb , MKL_INT*fpm , double*epsout , MKL_INT*loop , constdouble*emin , constdouble*emax , MKL_INT*m0 , double*e , double*x , MKL_INT*m , double*res , MKL_INT*info );
voidcfeast_hcsrgv ( constchar*uplo , constMKL_INT*n , constMKL_Complex8*a , constMKL_INT*ia , constMKL_INT*ja , constMKL_Complex8*b , constMKL_INT*ib , constMKL_INT*jb , MKL_INT*fpm , float*epsout , MKL_INT*loop , constfloat*emin , constfloat*emax , MKL_INT*m0 , float*e , MKL_Complex8*x , MKL_INT*m , float*res , MKL_INT*info );
voidzfeast_hcsrgv ( constchar*uplo , constMKL_INT*n , constMKL_Complex16*a , constMKL_INT*ia , constMKL_INT*ja , constMKL_Complex16*b , constMKL_INT*ib , constMKL_INT*jb , MKL_INT*fpm , double*epsout , MKL_INT*loop , constdouble*emin , constdouble*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 = \lambda Bx\) , within a given search interval.
Input Parameters
- uplo
-
CHARACTER*1 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
-
INTEGER Sets the size of the problem. n > 0.
- a
-
REAL for sfeast_scsrgv DOUBLE PRECISION for dfeast_scsrgv COMPLEX for cfeast_hcsrgv COMPLEX*16 for zfeast_hcsrgv Array containing the nonzero elements of either the full matrix A or the upper or lower triangular part of the matrix A , as specified by uplo .
- ia
-
INTEGER Array of length n + 1, containing indices of elements in the array a , such that ia(i)[i - 1] is the index in the array a of the first non-zero element from the row i . The value of the last element ia(n + 1)[n] is equal to the number of non-zeros plus one.
- ja
-
INTEGER Array containing the column indices for each non-zero element of the matrix A being represented in the array a . Its length is equal to the length of the array a .
- b
-
REAL for sfeast_scsrgv DOUBLE PRECISION for dfeast_scsrgv COMPLEX for cfeast_hcsrgv COMPLEX*16 for zfeast_hcsrgv Array of dimension ldb by *, contains the nonzero elements of either the full matrix B or the upper or lower triangular part of the matrix B , as specified by uplo .
- ib
-
INTEGER
Array of length n + 1, containing indices of elements in the array b , such that ib(i)[i - 1] is the index in the array b of the first non-zero element from the row i . The value of the last element ib [ n ] is equal to the number of non-zeros plus one.
- jb
-
INTEGER Array containing the column indices for each non-zero element of the matrix B being represented in the array b . Its length is equal to the length of the array b .
- fpm
-
INTEGER 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
-
REAL for sfeast_scsrgv and cfeast_hcsrgv DOUBLE PRECISION for dfeast_scsrgv and zfeast_hcsrgv The lower and upper bounds of the interval to be searched for eigenvalues; emin ≤ emax.
- m0
-
INTEGER On entry, specifies the initial guess for subspace dimension to be used, 0 < m0 ≤ n . Set m0 ≥ m 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
-
REAL for sfeast_scsrgv DOUBLE PRECISION for dfeast_scsrgv COMPLEX for cfeast_hcsrgv COMPLEX*16 for zfeast_hcsrgv
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
- fpm
-
On output, the last 64 values correspond to Intel® oneAPI Math Kernel Library (oneMKL) PARDISO iparm(1) / iparm[0] to iparm(64) / iparm[63] (regardless of the value of fpm(64)[63] on input).
- epsout
-
REAL for sfeast_scsrgv and cfeast_hcsrgv DOUBLE PRECISION for dfeast_scsrgv and zfeast_hcsrgv On output, contains the relative error on the trace: \(|trace_{i} - trace_{i-1} | / max(|emin|, |emax|)\).
- loop
-
INTEGER On output, contains the number of refinement loop executed. Ignored on input.
- e
-
REAL for sfeast_scsrgv and cfeast_hcsrgv DOUBLE PRECISION for dfeast_scsrgv and zfeast_hcsrgv 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
-
INTEGER The total number of eigenvalues found in the interval [ emin , emax ]: 0 ≤ m ≤ m0 .
- res
-
REAL for sfeast_scsrgv and cfeast_hcsrgv DOUBLE PRECISION for dfeast_scsrgv and zfeast_hcsrgv 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
-
INTEGER If info =0, the execution is successful. If info ≠ 0, see Output Eigensolver info Details .