Developer Reference for Intel® oneAPI Math Kernel Library for C
?laqr6
Performs a single small-bulge multi-shift QR sweep collecting the transformations.
Syntax
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);
Include Files
- mkl_scalapack.h
Description
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.
Input Parameters
- 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. 
OUTPUT Parameters
- 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. 
Application Notes
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