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
voidpssygs2 ( 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 );
voidpdsygs2 ( 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 );
voidpchegs2 ( 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 );
voidpzhegs2 ( 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 * L:code:`T` (for real flavors), or as U^{H}*U or L * L:code:`H` (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 U:code:`T`*U (for real function s) or as U:code:`H`*U (for complex function s).
= ‘L’ : Lower triangular of sub( A ) is stored and sub( B ) is factorized as L*L:code:`T` (for real function s) or as L*L:code:`H` (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 .