PDLAQR5(3) ScaLAPACK routine of NEC Numeric Library Collection PDLAQR5(3) NAME PDLAQR5 - performs a single small-bulge multi-shift QR sweep by chasing separated groups of bulges along the main block diagonal of H SYNOPSIS SUBROUTINE PDLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, SR, SI, H, DESCH, ILOZ, IHIZ, Z, DESCZ, WORK, LWORK, IWORK, LIWORK ) INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, N, NSHFTS, LWORK, LIWORK LOGICAL WANTT, WANTZ INTEGER DESCH( * ), DESCZ( * ), IWORK( * ) DOUBLE PRECISION H( * ), SI( * ), SR( * ), Z( * ), WORK( * ) PURPOSE This auxiliary subroutine called by PDLAQR0 performs a single small- bulge multi-shift QR sweep by chasing separated groups of bulges along the main block diagonal of H. ARGUMENTS WANTT (global input) logical scalar WANTT = .TRUE. if the quasi-triangular Schur factor is being computed. WANTT is set to .FALSE. otherwise. WANTZ (global input) logical scalar WANTZ = .TRUE. if the orthogonal Schur factor is being com- puted. WANTZ is set to .FALSE. otherwise. KACC22 (global input) integer with value 0, 1, or 2. Specifies the computation mode of far-from-diagonal orthogonal updates. = 1: PDLAQR5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries. = 2: PDLAQR5 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 input) integer scalar N is the order of the Hessenberg matrix H upon which this sub- routine operates. KTOP (global input) integer scalar KBOT (global input) 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 input) integer scalar NSHFTS gives the number of simultaneous shifts. NSHFTS must be positive and even. SR (global input) DOUBLE PRECISION array of size (NSHFTS) SI (global input) DOUBLE PRECISION 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 (local input/output) DOUBLE PRECISION array of size (DESCH(LLD_),*) On input H contains a Hessenberg matrix. On output 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. DESCH (global and local input) INTEGER array of dimension DLEN_. The array descriptor for the distributed matrix H. ILOZ (global input) INTEGER IHIZ (global input) INTEGER Specify the rows of Z to which transformations must be applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N Z (local input/output) DOUBLE PRECISION array of size (DESCZ(LLD_),*) If WANTZ = .TRUE., then the QR Sweep orthogonal similarity transformation is accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right. If WANTZ = .FALSE., then Z is unreferenced. DESCZ (global and local input) INTEGER array of dimension DLEN_. The array descriptor for the distributed matrix Z. WORK (local workspace) DOUBLE PRECISION array, dimension(DWORK) LWORK (local input) INTEGER The length of the workspace array WORK. IWORK (local workspace) INTEGER array, dimension (LIWORK) LIWORK (local input) INTEGER The length of the workspace array IWORK. ScaLAPACK routine 31 October 2017 PDLAQR5(3)