Visible to Intel only — GUID: GUID-F13F6758-335A-4F6F-BA48-252B87788DB9
Visible to Intel only — GUID: GUID-F13F6758-335A-4F6F-BA48-252B87788DB9
?laqr6
Performs a single small-bulge multi-shift QR sweep collecting the transformations.
call slaqr6( job, wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh )
call dlaqr6( job, wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh )
This auxiliary subroutine called by p?laqr5 performs a single small-bulge multi-shift QR sweep, moving the chain of bulges from top to bottom in the submatrix H(ktop:kbot,ktop:kbot), collecting the transformations in the matrix V or accumulating the transformations in the matrix Z (see below).
This is a modified version of ?laqr5 from LAPACK 3.1.
- job
-
CHARACTER scalar
Set the kind of job to do in ?laqr6, as follows:
job = 'I': Introduce and chase bulges in submatrix
job = 'C': Chase bulges from top to bottom of submatrix
job = 'O': Chase bulges off submatrix
- wantt
-
LOGICAL scalar
wantt= .TRUE. if the quasi-triangular Schur factor is being computed. wantt is set to .FALSE. otherwise.
- wantz
-
LOGICAL scalar
wantz= .TRUE. if the orthogonal Schur factor is being computed. wantz is set to .FALSE. otherwise.
- kacc22
-
INTEGER with value 0, 1, or 2.
Specifies the computation mode of far-from-diagonal orthogonal updates.
= 0: ?laqr6 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
= 1: ?laqr6 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
= 2: ?laqr6 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
-
INTEGER scalar
n is the order of the Hessenberg matrix H upon which this subroutine operates.
- ktop, kbot
-
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
-
INTEGER scalar
nshfts gives the number of simultaneous shifts. nshfts must be positive and even.
- sr, si
-
REAL for slaqr6
DOUBLE PRECISION for dlaqr6
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 slaqr6
DOUBLE PRECISION for dlaqr6
Array of size (ldh,n)
On input h contains a Hessenberg matrix .
- ldh
-
INTEGER scalar
ldh is the leading dimension of H just as declared in the calling procedure. ldh≥ max(1,n).
- iloz, ihiz
-
INTEGER scalar
Specify the rows of z to which transformations must be applied if wantzis .TRUE.. 1≤iloz≤ihiz≤n
- z
-
REAL for slaqr6
DOUBLE PRECISION for dlaqr6
Array of size (ldz,ktop)
If wantz= .TRUE., then the QR sweep orthogonal similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop), stored in the array z, from the right.
If wantz= .FALSE., then z is unreferenced.
- ldz
-
INTEGER scalar
ldz is the leading dimension of z just as declared in the calling procedure. ldz≥n.
- v
-
REAL for slaqr6
DOUBLE PRECISION for dlaqr6
(workspace) array of size (ldv,nshfts/2)
- ldv
-
INTEGER scalar
ldv is the leading dimension of v as declared in the calling procedure. ldv≥3.
- u
-
REAL for slaqr6
DOUBLE PRECISION for dlaqr6
(workspace) array of size (ldu,3*nshfts-3)
- ldu
-
INTEGER scalar
ldu is the leading dimension of u just as declared in the calling subroutine. ldu≥3*nshfts-3.
- nh
-
INTEGER scalar
nh is the number of columns in array wh available for workspace. nh≥1 is required for usage of this workspace, otherwise the updates of the far-from-diagonal elements will be updated without level 3 BLAS.
- wh
-
REAL for slaqr6
DOUBLE PRECISION for dlaqr6
(workspace) array of size (ldwh,nh)
- ldwh
-
INTEGER scalar
Leading dimension of wh just as declared in the calling procedure. ldwh≥3*nshfts-3.
- nv
-
INTEGER scalar
nv is the number of rows in wv available for workspace. nv≥1 is required for usage of this workspace, otherwise the updates of the far-from-diagonal elements will be updated without level 3 BLAS.
- wv
-
REAL for slaqr6
DOUBLE PRECISION for dlaqr6
(workspace) array of size (ldwv,3*nshfts-3)
- ldwv
-
INTEGER scalar
ldwv is the leading dimension of wv as declared in the in the calling subroutine. ldwv≥nv.
- 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.
- z
-
If wantzis .TRUE., then the QR sweep orthogonal/unitary similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right.
If wantzis .FALSE., then z is unreferenced.
Notes
Based on contributions by Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA Robert Granat, Department of Computing Science and HPC2N, Umea University, Sweden