Developer Reference

Contents

?sygst

Reduces a real symmetric-definite generalized eigenvalue problem to the standard form.

Syntax

lapack_int
LAPACKE_ssygst
(
int
matrix_layout
,
lapack_int
itype
,
char
uplo
,
lapack_int
n
,
float
*
a
,
lapack_int
lda
,
const
float
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_dsygst
(
int
matrix_layout
,
lapack_int
itype
,
char
uplo
,
lapack_int
n
,
double
*
a
,
lapack_int
lda
,
const
double
*
b
,
lapack_int
ldb
);
Include Files
  • mkl.h
Description
The routine reduces real symmetric-definite generalized eigenproblems
A
*
z
=
λ
*
B
*
z
,
A
*
B
*
z
=
λ
*
z
, or
B
*
A
*
z
=
λ
*
z
to the standard form
C
*
y
=
λ
*
y
. Here
A
is a real symmetric matrix, and
B
is a real symmetric positive-definite matrix. Before calling this routine, call
?potrf
to compute the Cholesky factorization:
B
=
U
T
*
U
or
B
=
L
*
L
T
.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
itype
Must be 1 or 2 or 3.
If
itype
= 1
, the generalized eigenproblem is
A*z
=
lambda
*B*z
for
uplo
=
'U'
:
C
= inv(
U
T
)*
A
*inv(
U
)
,
z
= inv(
U
)*
y
;
for
uplo
=
'L'
:
C
= inv(
L
)*
A
*inv(
L
T
)
,
z
= inv(
L
T
)*
y
.
If
itype
= 2
, the generalized eigenproblem is
A
*
B
*
z
=
lambda
*
z
for
uplo
=
'U'
:
C
=
U
*
A
*
U
T
,
z
= inv(
U
)*
y
;
for
uplo
=
'L'
:
C
=
L
T
*
A
*
L
,
z
= inv(
L
T
)*
y
.
If
itype
= 3
, the generalized eigenproblem is
B*A
*
z
=
lambda
*
z
for
uplo
=
'U'
:
C
=
U
*
A
*
U
T
,
z
=
U
T
*
y
;
for
uplo
=
'L'
:
C
=
L
T
*
A
*
L
,
z
=
L
*
y
.
uplo
Must be
'U'
or
'L'
.
If
uplo
=
'U'
, the array
a
stores the upper triangle of
A
; you must supply
B
in the factored form
B
=
U
T
*U
.
If
uplo
=
'L'
, the array
a
stores the lower triangle of
A
; you must supply
B
in the factored form
B
=
L*L
T
.
n
The order of the matrices
A
and
B
(
n
0
).
,
b
Arrays:
a
(size max(1,
lda
*
n
))
contains the upper or lower triangle of
A
.
b
(size max(1,
ldb
*
n
))
contains the Cholesky-factored matrix
B
:
B
=
U
T
*U
or
B
=
L*L
T
(as returned by
?potrf
).
lda
The leading dimension of
a
; at least max(1,
n
).
ldb
The leading dimension of
b
; at least max(1,
n
).
Output Parameters
a
The upper or lower triangle of
A
is overwritten by the upper or lower triangle of
C
, as specified by the arguments
itype
and
uplo
.
Return Values
This function returns a value
info
.
If
info
=0
, the execution is successful.
If
info
=
-i
, the
i
-th parameter had an illegal value.
Application Notes
Forming the reduced matrix
C
is a stable procedure. However, it involves implicit multiplication by
inv(
B
)
(if
itype
= 1
) or
B
(if
itype
= 2
or 3). When the routine is used as a step in the computation of eigenvalues and eigenvectors of the original problem, there may be a significant loss of accuracy if
B
is ill-conditioned with respect to inversion.
The approximate number of floating-point operations is
n
3
.

Product and Performance Information

1

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