Visible to Intel only — GUID: GUID-84DE0984-4809-46E4-B6C0-6629E85D5EF9
Visible to Intel only — GUID: GUID-84DE0984-4809-46E4-B6C0-6629E85D5EF9
p?laqr5
Performs a single small-bulge multi-shift QR sweep.
Syntax
void pslaqr5(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* kacc22, MKL_INT* n, MKL_INT* ktop, MKL_INT* kbot, MKL_INT* nshfts, float* sr, float* si, float* h, MKL_INT* desch, MKL_INT* iloz, MKL_INT* ihiz, float* z, MKL_INT* descz, float* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork);
void pdlaqr5(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* kacc22, MKL_INT* n, MKL_INT* ktop, MKL_INT* kbot, MKL_INT* nshfts, double* sr, double* si, double* h, MKL_INT* desch, MKL_INT* iloz, MKL_INT* ihiz, double* z, MKL_INT* descz, double* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork);
Include Files
- mkl_scalapack.h
Description
This auxiliary function called by p?laqr0 performs a single small-bulge multi-shift QR sweep by chasing separated groups of bulges along the main block diagonal of a Hessenberg matrix H.
Input Parameters
wantt |
(global) scalar wanttis non-zero if the quasi-triangular Schur factor is being computed. wantt is set to zero otherwise. |
wantz |
(global) scalar wantzis non-zero if the orthogonal Schur factor is being computed. wantz is set to zero otherwise. |
kacc22 |
(global) Value 0, 1, or 2. Specifies the computation mode of far-from-diagonal orthogonal updates. = 0: p?laqr5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries. = 1: p?laqr5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries. = 2: p?laqr5 accumulates reflections, uses matrix-matrix multiply to update the far-from-diagonal matrix entries, and takes advantage of 2-by-2 block structure during matrix multiplies. |
n |
(global) scalar The order of the Hessenberg matrix H and, if wantzis non-zero, the order of the orthogonal matrix Z. |
ktop, kbot |
(global) scalar These are the first and last rows and columns of an isolated diagonal block upon which the QR sweep is to be applied. It is assumed without a check that either ktop = 1 or H(ktop,ktop-1) = 0 and either kbot = n or H(kbot+1,kbot) = 0. |
nshfts |
(global) scalar nshfts gives the number of simultaneous shifts. nshfts must be positive and even. |
sr, si |
(global) Array of size nshfts sr contains the real parts and si contains the imaginary parts of the nshfts shifts of origin that define the multi-shift QR sweep. |
h |
(local) Array of size lld_h * LOCc(n) On input h contains a Hessenberg matrix H. |
desch |
(global and local) array of size dlen_. The array descriptor for the distributed matrix H . |
iloz, ihiz |
(global) Specify the rows of the matrix Z to which transformations must be applied if wantzis non-zero. 1 ≤iloz≤ihiz≤n |
z |
(local) array of size lld_z * LOCc(n) If wantzis non-zero, then the QR Sweep orthogonal similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right. If wantzequals zero, then z is unreferenced. |
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 size of the work array (lwork≥1). If lwork=-1, then a workspace query is assumed. |
iwork |
(local workspace) array of size liwork |
liwork |
(local) The size of the iwork array (liwork≥1). If liwork=-1, then a workspace query is assumed. |
Output Parameters
h |
A multi-shift QR sweep with shifts sr(j)+i*si(j) is applied to the isolated diagonal block in rows and columns ktop through kbot of the matrix H. |
z |
If wantzis non-zero, z is updated with transformations applied only to the submatrix Z(iloz:ihiz,kbot:ktop). |
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. |