Developer Reference

Contents

?sygvd

Computes all eigenvalues and, optionally, eigenvectors of a real generalized symmetric definite eigenproblem using a divide and conquer method.

Syntax

lapack_int
LAPACKE_ssygvd
(
int
matrix_layout
,
lapack_int
itype
,
char
jobz
,
char
uplo
,
lapack_int
n
,
float
*
a
,
lapack_int
lda
,
float
*
b
,
lapack_int
ldb
,
float
*
w
);
lapack_int
LAPACKE_dsygvd
(
int
matrix_layout
,
lapack_int
itype
,
char
jobz
,
char
uplo
,
lapack_int
n
,
double
*
a
,
lapack_int
lda
,
double
*
b
,
lapack_int
ldb
,
double
*
w
);
Include Files
  • mkl.h
Description
The routine computes all the eigenvalues, and optionally, the eigenvectors of a real generalized symmetric-definite eigenproblem, of the form
A
*
x
=
λ
*
B
*
x
,
A
*
B
*
x
=
λ
*
x
, or
B
*
A
*
x
=
λ
*
x
.
Here
A
and
B
are assumed to be symmetric and
B
is also positive definite.
It uses a divide and conquer algorithm.
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. Specifies the problem type to be solved:
if
itype
= 1
, the problem type is
A*x
=
lambda
*B*x
;
if
itype
= 2
, the problem type is
A
*
B
*
x
=
lambda
*
x
;
if
itype
= 3
, the problem type is
B*A
*x =
lambda
*
x
.
jobz
Must be
'N'
or
'V'
.
If
jobz
=
'N'
, then compute eigenvalues only.
If
jobz
=
'V'
, then compute eigenvalues and eigenvectors.
uplo
Must be
'U'
or
'L'
.
If
uplo
=
'U'
, arrays
a
and
b
store the upper triangles of
A
and
B
;
If
uplo
=
'L'
, arrays
a
and
b
store the lower triangles of
A
and
B
.
n
The order of the matrices
A
and
B
(
n
0
).
a
,
b
Arrays:
a
(size at least
lda
*
n
)
contains the upper or lower triangle of the symmetric matrix
A
, as specified by
uplo
.
b
(size at least
ldb
*
n
)
contains the upper or lower triangle of the symmetric positive definite matrix
B
, as specified by
uplo
.
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
On exit, if
jobz
=
'V'
, then if
info
= 0
,
a
contains the matrix
Z
of eigenvectors. The eigenvectors are normalized as follows:
if
itype
= 1
or
2
,
Z
T
*
B
*
Z
= I
;
if
itype
= 3
,
Z
T
*inv(
B
)*
Z
= I
;
If
jobz
=
'N'
, then on exit the upper triangle (if
uplo
=
'U'
) or the lower triangle (if
uplo
=
'L'
) of
A
, including the diagonal, is destroyed.
b
On exit, if
info
n
, the part of
b
containing the matrix is overwritten by the triangular factor
U
or
L
from the Cholesky factorization
B
=
U
T
*U
or
B
=
L*
L
T
.
w
Array, size at least max(1,
n
).
If
info
= 0
, contains the eigenvalues in ascending order.
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.
If
info
> 0
, an error code is returned as specified below.
  • For
    info
    n
    :
    • If
      info
      =
      i
      and
      jobz
      =
      'N'
      , then the algorithm failed to converge;
      i
      off-diagonal elements of an intermediate tridiagonal form did not converge to zero.
    • If
      jobz
      =
      'V'
      , then the algorithm failed to compute an eigenvalue while working on the submatrix lying in rows and columns
      info
      /(
      n
      +1)
      through
      mod(
      info
      ,
      n
      +1)
      .
  • For
    info
    >
    n
    :
    • If
      info
      =
      n
      +
      i
      , for
      1
      i
      n
      , then the leading minor of order
      i
      of
      B
      is not positive-definite. The factorization of
      B
      could not be completed and no eigenvalues or eigenvectors were computed.

Product and Performance Information

1

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