Developer Reference for Intel® oneAPI Math Kernel Library for C
p?sygs2/p?hegs2
Reduces a symmetric/Hermitian positive-definite generalized eigenproblem to standard form, using the factorization results obtained from p?potrf (local unblocked algorithm).
Syntax
void pssygs2(MKL_INT *ibtype, char *uplo, MKL_INT *n, float *a, MKL_INT *ia, MKL_INT *ja,
MKL_INT *desca, float *b, MKL_INT *ib, MKL_INT *jb, MKL_INT *descb,
MKL_INT *info);
void pdsygs2(MKL_INT *ibtype, char *uplo, MKL_INT *n, double *a, MKL_INT *ia, MKL_INT *ja,
MKL_INT *desca, double *b, MKL_INT *ib, MKL_INT *jb, MKL_INT *descb,
MKL_INT *info);
void pchegs2(MKL_INT *ibtype, char *uplo, MKL_INT *n, MKL_Complex8 *a, MKL_INT *ia,
MKL_INT *ja, MKL_INT *desca, MKL_Complex8 *b, MKL_INT *ib, MKL_INT *jb,
MKL_INT *descb, MKL_INT *info);
void pzhegs2(MKL_INT *ibtype, char *uplo, MKL_INT *n, MKL_Complex16 *a, MKL_INT *ia,
MKL_INT *ja, MKL_INT *desca, MKL_Complex16 *b, MKL_INT *ib, MKL_INT *jb,
MKL_INT *descb, MKL_INT *info);
Include Files
mkl_scalapack.h
Description
pssygs2 pdsygs2 pchegs2 pzhegs2 The p?sygs2/p?hegs2 routine function reduces a real symmetric-definite or a complex Hermitian positive-definite generalized eigenproblem to standard form.
Here sub(A) denotes A(ia:ia+n-1 , ja:ja+n-1) , and sub(B) denotes B(ib:ib+n-1 , jb:jb+n-1) .
If ibtype = 1 , the problem is
sub(A)*x = λ*sub(B)*x
and sub(A) is overwritten by
inv(U^{T})*sub(A)*inv(U) or inv(L)*sub(A)*inv(L^{T}) - for real flavors, and
inv(U^{H})*sub(A)*inv(U) or inv(L)*sub(A)*inv(L^{H}) - for complex flavors.
If ibtype = 2 or 3 , the problem is
sub(A)*sub(B)x = λ*x or sub(B)*sub(A)x =λ*x
and sub(A) is overwritten by
U*sub(A)*U^{T} or L**T*sub(A)*L - for real flavors and
U*sub(A)*U^{H} or L**H*sub(A)*L - for complex flavors.
The matrix sub(B) must have been previously factorized as U^{T}*U or L * LT (for real flavors), or as U^{H}*U or L * LH (for complex flavors) by p?potrf (Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite distributed matrix.) .
Input Parameters
ibtype
(global)
= 1:
compute inv(U^{T})*sub(A)*inv(U) , or inv(L)*sub(A)*inv(L^{T}) for real function s,
and inv(U^{H})*sub(A)*inv(U) , or inv(L)*sub(A)*inv(L^{H}) for complex function s;
= 2 or 3:
compute U*sub(A)*U^{T} , or L^{T}*sub(A)*L for real function s,
and U*sub(A)*U^{H} or L^{H}*sub(A)*L for complex function s.
- uplo
-
(global) CHARACTER Specifies whether the upper or lower triangular part of the symmetric/Hermitian matrix sub( A ) is stored, and how sub( B ) is factorized.
= ‘U’ : Upper triangular of sub( A ) is stored and sub( B ) is factorized as UT*U (for real function s) or as UH*U (for complex function s).
= ‘L’ : Lower triangular of sub( A ) is stored and sub( B ) is factorized as L*LT (for real function s) or as L*LH (for complex function s)
n
(global)
The order of the matrices sub( A ) and sub( B ). n ≥ 0 .
- a
-
(local) REAL for pssygs2 DOUBLE PRECISION for pdsygs2 COMPLEX for pchegs2 COMPLEX*16 for pzhegs2 .
Pointer into the local memory to an array of size (lld_a, LOCc(ja+n-1))lld_a * LOCc ( ja + n -1) .
On entry, this array contains the local pieces of the n -by- n symmetric/Hermitian distributed matrix sub( A ). If uplo = 'U' , the leading n -by- n upper triangular part of sub( A ) contains the upper triangular part of the matrix, and the strictly lower triangular part of sub( A ) is not referenced. If uplo = 'L' , the leading n -by- n lower triangular part of sub( A ) contains the lower triangular part of the matrix, and the strictly upper triangular part of sub( A ) is not referenced.
ia , ja
(global)
The row and column indices in the global matrix A indicating the first row and the first column of the sub( A ), respectively.
desca
(global and local) array of size dlen_ . The array descriptor for the distributed matrix A .
- B
-
(local) REAL for pssygs2 DOUBLE PRECISION for pdsygs2 COMPLEX for pchegs2 COMPLEX*16 for pzhegs2 .
Pointer into the local memory to an array of size (lld_b, LOCc(jb+n-1))lld_b * LOCc ( jb + n -1) .
On entry, this array contains the local pieces of the triangular factor from the Cholesky factorization of sub( B ) as returned by p?potrf (Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite distributed matrix.) .
ib , jb
(global)
The row and column indices in the global matrix B indicating the first row and the first column of the sub( B ), respectively.
descb
(global and local) array of size dlen_ . The array descriptor for the distributed matrix B .
Output Parameters
- a
-
(local) On exit, if info = 0 , the transformed matrix is stored in the same format as sub( A ).
info
= 0: successful exit.
< 0: if the i -th argument is an array and the j -th entry , indexed j -1, had an illegal value,
then info = - ( i* 100+ j ), if the i -th argument is a scalar and had an illegal value, then info = - i .