Developer Reference

Contents

?stein

Computes the eigenvectors corresponding to specified eigenvalues of a real symmetric tridiagonal matrix.

Syntax

lapack_int LAPACKE_sstein
(
int
matrix_layout
,
lapack_int
n
,
const float*
d
,
const float*
e
,
lapack_int
m
,
const float*
w
,
const lapack_int*
iblock
,
const lapack_int*
isplit
,
float*
z
,
lapack_int
ldz
,
lapack_int*
ifailv
);
lapack_int LAPACKE_dstein
(
int
matrix_layout
,
lapack_int
n
,
const double*
d
,
const double*
e
,
lapack_int
m
,
const double*
w
,
const lapack_int*
iblock
,
const lapack_int*
isplit
,
double*
z
,
lapack_int
ldz
,
lapack_int*
ifailv
);
lapack_int LAPACKE_cstein
(
int
matrix_layout
,
lapack_int
n
,
const float*
d
,
const float*
e
,
lapack_int
m
,
const float*
w
,
const lapack_int*
iblock
,
const lapack_int*
isplit
,
lapack_complex_float*
z
,
lapack_int
ldz
,
lapack_int*
ifailv
);
lapack_int LAPACKE_zstein
(
int
matrix_layout
,
lapack_int
n
,
const double*
d
,
const double*
e
,
lapack_int
m
,
const double*
w
,
const lapack_int*
iblock
,
const lapack_int*
isplit
,
lapack_complex_double*
z
,
lapack_int
ldz
,
lapack_int*
ifailv
);
Include Files
  • mkl.h
Description
The routine computes the eigenvectors of a real symmetric tridiagonal matrix
T
corresponding to specified eigenvalues, by inverse iteration. It is designed to be used in particular after the specified eigenvalues have been computed by
?stebz
with
order
=
'B'
, but may also be used when the eigenvalues have been computed by other routines.
If you use this routine after
?stebz
, it can take advantage of the block structure by performing inverse iteration on each block
T
i
separately, which is more efficient than using the whole matrix
T
.
If
T
has been formed by reduction of a full symmetric or Hermitian matrix
A
to tridiagonal form, you can transform eigenvectors of
T
to eigenvectors of
A
by calling
?ormtr
or
?opmtr
(for real flavors) or by calling
?unmtr
or
?upmtr
(for complex flavors).
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
n
The order of the matrix
T
(
n
0
).
m
The number of eigenvectors to be returned.
d
,
e
,
w
Arrays:
d
contains the diagonal elements of
T
.
The size of
d
must be at least max(1,
n
).
e
contains the sub-diagonal elements of
T
stored in elements 1 to
n
-1
The size of
e
must be at least max(1,
n
-1).
w
contains the eigenvalues of
T
, stored in
w
[0]
to
w
[
m
- 1]
(as returned by stebz). Eigenvalues of
T
1
must be supplied first, in non-decreasing order; then those of
T
2
, again in non-decreasing order, and so on. Constraint:
if
iblock
[
i
] =
iblock
[
i
+1]
,
w
[
i
]
w
[
i
+1]
.
The size of
w
must be at least max(1,
n
).
iblock
,
isplit
Arrays, size at least max(1,
n
). The arrays
iblock
and
isplit
, as returned by
?stebz
with
order
=
'B'
.
If you did not call
?stebz
with
order
=
'B'
, set all elements of
iblock
to 1, and
isplit
[0]
to
n
.)
ldz
The leading dimension of the output array
z
;
ldz
max(1,
n
)
for column major layout and
ldz
>=max(1,
m
)
for row major layout
.
Output Parameters
z
Array, size
at least max(1,
ldz
*
m
) for column major layout and max(1,
ldz
*
n
) for row major layout
.
If
info
= 0
,
z
contains an
n
-by-
n
matrix the columns of which are orthonormal eigenvectors. (The
i
-th column corresponds to the
i
th eigenvalue.)
ifailv
Array, size at least max(1,
m
).
If
info
=
i
> 0, the first
i
elements of
ifailv
contain the indices of any eigenvectors that failed to converge.
Return Values
This function returns a value
info
.
If
info
=0
, the execution is successful.
If
info
=
i
, then
i
eigenvectors (as indicated by the parameter
ifailv
) each failed to converge in 5 iterations. The current iterates are stored in the corresponding columns/rows of the array
z
.
If
info
=
-i
, the
i
-th parameter had an illegal value.
Application Notes
Each computed eigenvector
z
i
is an exact eigenvector of a matrix
T
+
E
i
, where
||
E
i
||
2
=
O
(
ε
)*||
T
||
2
. However, a set of eigenvectors computed by this routine may not be orthogonal to so high a degree of accuracy as those computed by
?steqr
.

Product and Performance Information

1

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