Developer Reference

  • 0.10
  • 10/21/2020
  • Public Content
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

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