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.
void slaqr6(char* job, 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* ldh, MKL_INT* iloz, MKL_INT* ihiz, float* z, MKL_INT* ldz, float* v, MKL_INT* ldv, float* u, MKL_INT* ldu, MKL_INT* nv, float* wv, MKL_INT* ldwv, MKL_INT* nh, float* wh, MKL_INT* ldwh);
void dlaqr6(char* job, 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* ldh, MKL_INT* iloz, MKL_INT* ihiz, double* z, MKL_INT* ldz, double* v, MKL_INT* ldv, double* u, MKL_INT* ldu, MKL_INT* nv, double* wv, MKL_INT* ldwv, MKL_INT* nh, double* wh, MKL_INT* ldwh);
- mkl_scalapack.h
This auxiliary function 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
-
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
-
wanttis non-zero if the quasi-triangular Schur factor is being computed. wantt is set to zero otherwise.
- wantz
-
wantzis non-zero if the orthogonal Schur factor is being computed. wantz is set to zero otherwise.
- kacc22
-
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
-
n is the order of the Hessenberg matrix H upon which this function operates.
- ktop, kbot
-
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
-
nshfts gives the number of simultaneous shifts. nshfts must be positive and even.
- sr, si
-
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
-
Array of size ldh * n
On input h contains a Hessenberg matrix H.
- ldh
-
ldh is the leading dimension of H just as declared in the calling function. ldh≥ max(1,n).
- iloz, ihiz
-
Specify the rows of the matrix Zto which transformations must be applied if wantzis non-zero. 1≤iloz≤ihiz≤n
- z
-
Array of size ldz * ktop
If wantzis non-zero, 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 wantzequals zero, then z is unreferenced.
- ldz
-
ldz is the leading dimension of z just as declared in the calling function. ldz≥n.
- v
-
(workspace) array of size ldv * nshfts/2
- ldv
-
ldv is the leading dimension of v as declared in the calling function. ldv≥3.
- u
-
(workspace) array of size ldu * (3*nshfts-3)
- ldu
-
ldu is the leading dimension of u just as declared in the calling function. ldu≥3*nshfts-3.
- nh
-
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
-
(workspace) array of size ldwh * nh
- ldwh
-
Leading dimension of wh just as declared in the calling function. ldwh≥3*nshfts-3.
- nv
-
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
-
(workspace) array of size ldwv * 3*nshfts
- ldwv
-
scalar
ldwv is the leading dimension of wv as declared in the in the calling function. ldwv≥nv.
- h
-
A multi-shift QR sweep with shifts sr[j]+i*si[j] is applied to the isolated diagonal block in matrix rows and columns ktop through kbot.
- z
-
If wantzis non-zero, then the QR sweep orthogonal/unitary similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right.
If wantzequals zero, 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