Performs a single small-bulge multi-shift QR sweep collecting the transformations.
subroutine called byperforms a single small-bulge multi-shift QR sweep, moving the chain of bulges from top to bottom in the submatrix
kbot), collecting the transformations in the matrix
oraccumulating the transformations in the matrix
This is a modified version of
?laqr5from LAPACK 3.1.
- CHARACTERscalarSet the kind of job to do in?laqr6, as follows:job= 'I': Introduce and chase bulges in submatrixjob= 'C': Chase bulges from top to bottom of submatrixjob= 'O': Chase bulges off submatrix
- LOGICALscalarwantt= .TRUE.if the quasi-triangular Schur factor is being computed.wanttis set to.FALSE.otherwise.
- LOGICALscalarwantz= .TRUE.if the orthogonal Schur factor is being computed.wantzis set to.FALSE.otherwise.
- INTEGERwith value 0, 1, or 2.Specifies the computation mode of far-from-diagonal orthogonal updates.= 0:?laqr6does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.= 1:?laqr6accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.= 2:?laqr6accumulates 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.
- INTEGERscalarnis the order of the Hessenberg matrixHupon which thissubroutineoperates.
- INTEGERscalarThese 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 eitherktop= 1 orH(ktop,ktop-1) = 0 and eitherkbot=norH(kbot+1,kbot) = 0.
- INTEGERscalarnshftsgives the number of simultaneous shifts.nshftsmust be positive and even.
- REALforslaqr6DOUBLE PRECISIONfordlaqr6Array of sizenshftssrcontains the real parts andsicontains the imaginary parts of thenshftsshifts of origin that define the multi-shift QR sweep.
- REALforslaqr6DOUBLE PRECISIONfordlaqr6Array of size(ldh,