Visible to Intel only — GUID: GUID-830E109D-B055-45DB-9CCD-D20C716FF20A
Visible to Intel only — GUID: GUID-830E109D-B055-45DB-9CCD-D20C716FF20A
p?laqr0
Computes the eigenvalues of a Hessenberg matrix and optionally returns the matrices from the Schur decomposition.
Syntax
void pslaqr0(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* n, MKL_INT* ilo, MKL_INT* ihi, float* h, MKL_INT* desch, float* wr, float* wi, MKL_INT* iloz, MKL_INT* ihiz, float* z, MKL_INT* descz, float* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork, MKL_INT* info, MKL_INT* reclevel);
void pdlaqr0(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* n, MKL_INT* ilo, MKL_INT* ihi, double* h, MKL_INT* desch, double* wr, double* wi, MKL_INT* iloz, MKL_INT* ihiz, double* z, MKL_INT* descz, double* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork, MKL_INT* info, MKL_INT* reclevel);
Include Files
- mkl_scalapack.h
Description
p?laqr0 computes the eigenvalues of a Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z*T*ZT, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors.
Optionally Z may be postmultiplied into an input orthogonal matrix Q so that this function can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the orthogonal matrix Q: A = Q * H * QT = (QZ) * T * (QZ)T.
Input Parameters
- wantt
-
(global )
Non-zero : the full Schur form T is required;
Zero : only eigenvalues are required.
- wantz
-
(global )
Non-zero : the matrix of Schur vectors Z is required;
Zero: Schur vectors are not required.
- n
-
(global )
The order of the Hessenberg matrix H (and Z if wantzis non-zero). n≥ 0.
- ilo, ihi
-
(global )
It is assumed that the matrix H is already upper triangular in rows and columns 1:ilo-1 and ihi+1:n. ilo and ihi are normally set by a previous call to p?gebal, and then passed to p?gehrd when the matrix output by ihi is reduced to Hessenberg form. Otherwise ilo and ihi should be set to 1 and n, respectively. If n > 0, then 1 ≤ilo≤ihi≤n.
If n = 0, then ilo = 1 and ihi = 0.
- h
-
(global ) array of size lld_h * LOCc(n)
The upper Hessenberg matrix H.
- desch
-
(global and local )
Array of size dlen_.
The array descriptor for the distributed matrix H.
- iloz, ihiz
-
Specify the rows of the matrix Z to which transformations must be applied if wantz is non-zero, 1 ≤iloz≤ilo; ihi≤ihiz≤n.
- z
-
Array of size lld_z * LOCc(n).
If wantz is non-zero, contains the matrix Z.
If wantzequals zero, z is not referenced.
- descz
-
(global and local ) array of size dlen_.
The array descriptor for the distributed matrix Z.
- work
-
(local workspace) array of size lwork
- lwork
-
(local )
The length of the workspace array work.
- iwork
-
(local workspace) array of size liwork
- liwork
-
(local )
The length of the workspace array iwork.
- reclevel
-
(local )
Level of recursion. reclevel = 0 must hold on entry.
OUTPUT Parameters
- h
-
On exit, if wantt is non-zero, the matrix H is upper quasi-triangular in rows and columns ilo:ihi, with 1-by-1 and 2-by-2 blocks on the main diagonal. The 2-by-2 diagonal blocks (corresponding to complex conjugate pairs of eigenvalues) are returned in standard form, with H(i,i) = H(i+1,i+1) and H(i+1,i)*H(i,i+1) < 0. If info = 0 and wanttequals zero, the contents of h are unspecified on exit.
- wr, wi
-
The real and imaginary parts, respectively, of the computed eigenvalues ilo to ihi are stored in the corresponding elements of wr and wi. If two eigenvalues are computed as a complex conjugate pair, they are stored in consecutive elements of wr and wi, say the i-th and (i+1)th, with wi[i-1] > 0 and wi[i] < 0. If wantt is non-zero, the eigenvalues are stored in the same order as on the diagonal of the Schur form returned in h.
- z
-
Updated matrix with transformations applied only to the submatrix Z(ilo:ihi,ilo:ihi).
If COMPZ = 'I', on exit, if info = 0, z contains the orthogonal matrix Z of the Schur vectors of H.
If wantz is non-zero, then Z(ilo:ihi,iloz:ihiz) is replaced by Z(ilo:ihi,iloz:ihiz)*U, when U is the orthogonal/unitary Schur factor of H(ilo:ihi,ilo:ihi).
If wantzequals zero, then z is not defined.
- work[0]
-
On exit, if info = 0, work[0] returns the optimal lwork.
- iwork[0]
-
On exit, if info = 0, iwork[0] returns the optimal liwork.
- info
-
> 0: if info = i, then the function failed to compute all the eigenvalues. Elements 0:ilo-2 and i:n-1 of wr and wi contain those eigenvalues which have been successfully computed.
> 0: if wanttequals zero, then the remaining unconverged eigenvalues are the eigenvalues of the upper Hessenberg matrix rows and columns ilo through ihi of the final output value of H.
> 0: if wantt is non-zero, then (initial value of H)*U = U*(final value of H), where U is an orthogonal/unitary matrix. The final value of H is upper Hessenberg and quasi-triangular/triangular in rows and columns info+1 through ihi.
> 0: if wantz is non-zero, then (final value of Z(ilo:ihi,iloz:ihiz))=(initial value of Z(ilo:ihi,iloz:ihiz))*U, where U is the orthogonal/unitary matrix in the previous expression (regardless of the value of wantt).
> 0: if wantzequals zero, then z is not accessed.