Developer Reference

Contents

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?hegs2
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
T
(for real flavors), or as
U
H
*
U
or
L
*
L
H
(for complex flavors) by
p?potrf
.
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)
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
T
*U
(for real
function
s) or as
U
H
*U
(for complex
function
s).
=
'L'
: Lower triangular of sub(
A
) is stored and sub(
B
) is factorized as
L*L
T
(for real
function
s) or as
L*L
H
(for complex
function
s)
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
.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.