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
call pslaqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, desch, iloz, ihiz, z, descz, work, lwork, iwork, liwork )
call pdlaqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, desch, iloz, ihiz, z, descz, work, lwork, iwork, liwork )
Description
This auxiliary subroutine 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) LOGICAL scalar wantt= .TRUE. if the quasi-triangular Schur factor is being computed. wantt is set to .FALSE. otherwise. |
wantz |
(global) LOGICAL scalar wantz= .TRUE. if the orthogonal Schur factor is being computed. wantz is set to .FALSE. otherwise. |
kacc22 |
(global) INTEGER 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) INTEGER scalar The order of the Hessenberg matrix H and, if wantzis .TRUE., the order of the orthogonal matrix Z. |
ktop, kbot |
(global) INTEGER 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) INTEGER scalar nshfts gives the number of simultaneous shifts. nshfts must be positive and even. |
sr, si |
REAL for pslaqr5 DOUBLE PRECISION for pdlaqr5 (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 |
REAL for pslaqr5 DOUBLE PRECISION for pdlaqr5 (local) Array of size (lld_h,LOCc(n)) On input h contains a Hessenberg matrix H. |
desch |
(global and local) INTEGER array of size dlen_. The array descriptor for the distributed matrix H . |
iloz, ihiz |
(global) INTEGER Specify the rows of the matrix Z to which transformations must be applied if wantzis .TRUE.. 1 ≤iloz≤ihiz≤n |
z |
REAL for pslaqr5 DOUBLE PRECISION for pdlaqr5 (local) array of size (lld_z,LOCc(n)) If wantz= .TRUE., then the QR Sweep orthogonal similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right. If wantz= .FALSE., then z is unreferenced. |
descz |
(global and local) INTEGER array of size dlen_. The array descriptor for the distributed matrix Z. |
work |
REAL for pslaqr5 DOUBLE PRECISION for pdlaqr5 (local workspace) array of size lwork |
lwork |
(local) INTEGER The size of the work array (lwork≥1). If lwork=-1, then a workspace query is assumed. |
iwork |
(local workspace) INTEGER array of size liwork |
liwork |
(local) INTEGER 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 .TRUE., z is updated with transformations applied only to the submatrix Z(iloz:ihiz,kbot:ktop). |
work(1) |
On exit, if info = 0, work(1) returns the optimal lwork. |
iwork(1) |
On exit, if info = 0, iwork(1) returns the optimal liwork. |