?sbevd
?sbevd
Computes all eigenvalues and, optionally, all eigenvectors of a real symmetric band matrix using divide and conquer algorithm.
Syntax
lapack_int
LAPACKE_ssbevd
(
int
matrix_layout
,
char
jobz
,
char
uplo
,
lapack_int
n
,
lapack_int
kd
,
float
*
ab
,
lapack_int
ldab
,
float
*
w
,
float
*
z
,
lapack_int
ldz
);
lapack_int
LAPACKE_dsbevd
(
int
matrix_layout
,
char
jobz
,
char
uplo
,
lapack_int
n
,
lapack_int
kd
,
double
*
ab
,
lapack_int
ldab
,
double
*
w
,
double
*
z
,
lapack_int
ldz
);
Include Files
- mkl.h
Description
The routine computes all the eigenvalues, and optionally all the eigenvectors, of a real symmetric band matrix
A
. In other words, it can compute the spectral factorization of A
as: A
= Z
*Λ
*Z
T
Here , and . Thus,
Λ
is a diagonal matrix whose diagonal elements are the eigenvalues λ
i
Z
is the orthogonal matrix whose columns are the eigenvectors z
i
A
*z
i
λ
i
z
i
i
= 1, 2, ..., n
If the eigenvectors are requested, then this routine uses a divide and conquer algorithm to compute eigenvalues and eigenvectors. However, if only eigenvalues are required, then it uses the Pal-Walker-Kahan variant of the
QL
or QR
algorithm. Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- jobz
- Must be'N'or'V'.If, then only eigenvalues are computed.jobz='N'If, then eigenvalues and eigenvectors are computed.jobz='V'
- uplo
- Must be'U'or'L'.If,uplo='U'abstores the upper triangular part ofA.If,uplo='L'abstores the lower triangular part ofA.
- n
- The order of the matrixA().n≥0
- kd
- The number of super- or sub-diagonals inA().kd≥0
- ab
- ab(size at least max(1,is an array containing either upper or lower triangular part of the symmetric matrixldab*n) for column major layout and at least max(1,ldab*(kd+ 1)) for row major layout)A(as specified byuplo) in band storage format.
- ldab
- The leading dimension ofab; must be at leastkd+1for column major layout and.nfor row major layout
- ldz
- The leading dimension of the output arrayz.Constraints:if, thenjobz='N';ldz≥1if, thenjobz='V'ldz≥max(1,n) .
Output Parameters
- w,z
- Arrays:w, size at least max(1,n).If, contains the eigenvalues of the matrixinfo= 0Ain ascending order. See alsoinfo.z(size max(1,.ldz*nifand at least 1 ifjob='V')job='N'If, then this array is overwritten by the orthogonal matrixjob='V'Zwhich contains the eigenvectors ofA. Thei-th column ofZcontains the eigenvector which corresponds to the eigenvalue.w[i- 1]If, thenjob='N'zis not referenced.
- ab
- On exit, this array is overwritten by the values generated during the reduction to tridiagonal form.
Return Values
This function returns a value
info
.If , the execution is successful.
info
=0If , then the algorithm failed to converge;
info
= i
i
indicates the number of elements of an intermediate tridiagonal form which did not converge to zero. If , the
info
= -i
i
-th parameter had an illegal value.