Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
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

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804