Developer Reference for Intel® oneAPI Math Kernel Library for C
?stein
Computes the eigenvectors corresponding to specified eigenvalues of a real symmetric tridiagonal matrix.
Syntax
lapack_int LAPACKE_sstein ( intmatrix_layout , lapack_intn , const float*d , const float*e , lapack_intm , const float*w , const lapack_int*iblock , const lapack_int*isplit , float*z , lapack_intldz , lapack_int*ifailv );
lapack_int LAPACKE_dstein ( intmatrix_layout , lapack_intn , const double*d , const double*e , lapack_intm , const double*w , const lapack_int*iblock , const lapack_int*isplit , double*z , lapack_intldz , lapack_int*ifailv );
lapack_int LAPACKE_cstein ( intmatrix_layout , lapack_intn , const float*d , const float*e , lapack_intm , const float*w , const lapack_int*iblock , const lapack_int*isplit , lapack_complex_float*z , lapack_intldz , lapack_int*ifailv );
lapack_int LAPACKE_zstein ( intmatrix_layout , lapack_intn , const double*d , const double*e , lapack_intm , const double*w , const lapack_int*iblock , const lapack_int*isplit , lapack_complex_double*z , lapack_intldz , lapack_int*ifailv );
Include Files
mkl.h
Description
sstein dstein cstein zstein stein
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 Ti 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
-
REAL for single-precision flavors DOUBLE PRECISION for double-precision flavors. 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 T1 must be supplied first, in non-decreasing order; then those of T2 , again in non-decreasing order, and so on. Constraint:
if iblock(i) = iblock(i+1) , w(i) ≤w(i+1) . 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(1)[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 .
- work
-
REAL for single-precision flavors DOUBLE PRECISION for double-precision flavors. Workspace array, size at least max(1, 5 n ).
iwork
Workspace array, size at least max(1, n ).
Output Parameters
- z
-
REAL for sstein DOUBLE PRECISION for dstein COMPLEX for cstein DOUBLE COMPLEX for zstein .
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.
LAPACK 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.
Application Notes
Each computed eigenvector zi is an exact eigenvector of a matrix \(T+E_{i}\) , where \(||E_{i}||_{2} = O(\varepsilon) ||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 .