?spevd
?spevd
Uses divide and conquer algorithm to compute all eigenvalues and (optionally) all eigenvectors of a real symmetric matrix held in packed storage.
Syntax
lapack_int
LAPACKE_sspevd
(
int
matrix_layout
,
char
jobz
,
char
uplo
,
lapack_int
n
,
float
*
ap
,
float
*
w
,
float
*
z
,
lapack_int
ldz
);
lapack_int
LAPACKE_dspevd
(
int
matrix_layout
,
char
jobz
,
char
uplo
,
lapack_int
n
,
double
*
ap
,
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 matrix
A
(held in packed storage). 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'apstores the packed upper triangular part ofA.If,uplo='L'apstores the packed lower triangular part ofA.
- n
- The order of the matrixA().n≥0
- ap
- apcontains the packed upper or lower triangle of symmetric matrixA, as specified byuplo.The dimension ofapmust be max(1,n*(n+1)/2)
- 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*n))If, then this array is overwritten by the orthogonal matrixjobz='V'Zwhich contains the eigenvectors ofA. If, thenjobz='N'zis not referenced.
- ap
- On exit, this array is overwritten by the values generated during the reduction to tridiagonal form. The elements of the diagonal and the off-diagonal of the tridiagonal matrix overwrite the corresponding elements of A.
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.