Visible to Intel only — GUID: GUID-E777948C-130D-4BFB-9B7E-D65A979CCF1C
Visible to Intel only — GUID: GUID-E777948C-130D-4BFB-9B7E-D65A979CCF1C
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
The p?sygs2/p?hegs2function 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(UT)*sub(A)*inv(U) or inv(L)*sub(A)*inv(LT) - for real flavors, and
inv(UH)*sub(A)*inv(U) or inv(L)*sub(A)*inv(LH) - 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)*UT or L**T*sub(A)*L- for real flavors and
U*sub(A)*UH or L**H*sub(A)*L- for complex flavors.
The matrix sub(B) must have been previously factorized as UT*U or L*LT (for real flavors), or as UH*U or L*LH (for complex flavors) by p?potrf.
Input Parameters
- ibtype
-
(global)
= 1:
compute inv(UT)*sub(A)*inv(U), or inv(L)*sub(A)*inv(LT) for real functions,
and inv(UH)*sub(A)*inv(U), or inv(L)*sub(A)*inv(LH) for complex functions;
= 2 or 3:
compute U*sub(A)*UT, or LT*sub(A)*L for real functions,
and U*sub(A)*UH or LH*sub(A)*L for complex functions.
- uplo
-
(global)
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 functions) or as UH*U (for complex functions).
= 'L': Lower triangular of sub(A) is stored and sub(B) is factorized as L*LT (for real functions) or as L*LH (for complex functions)
- n
-
(global)
The order of the matrices sub(A) and sub(B). n ≥ 0.
- a
-
(local)
Pointer into the local memory to an array of size 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)
Pointer into the local memory to an array of size 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.
- 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.