# claqr5.f - Man Page

SRC/claqr5.f

## Synopsis

### Functions/Subroutines

subroutine **claqr5** (wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)**CLAQR5** performs a single small-bulge multi-shift QR sweep.

## Function/Subroutine Documentation

### subroutine claqr5 (logical wantt, logical wantz, integer kacc22, integer n, integer ktop, integer kbot, integer nshfts, complex, dimension( * ) s, complex, dimension( ldh, * ) h, integer ldh, integer iloz, integer ihiz, complex, dimension( ldz, * ) z, integer ldz, complex, dimension( ldv, * ) v, integer ldv, complex, dimension( ldu, * ) u, integer ldu, integer nv, complex, dimension( ldwv, * ) wv, integer ldwv, integer nh, complex, dimension( ldwh, * ) wh, integer ldwh)

**CLAQR5** performs a single small-bulge multi-shift QR sweep.

**Purpose:**

CLAQR5 called by CLAQR0 performs a single small-bulge multi-shift QR sweep.

**Parameters***WANTT*WANTT is LOGICAL WANTT = .true. if the triangular Schur factor is being computed. WANTT is set to .false. otherwise.

*WANTZ*WANTZ is LOGICAL WANTZ = .true. if the unitary Schur factor is being computed. WANTZ is set to .false. otherwise.

*KACC22*KACC22 is INTEGER with value 0, 1, or 2. Specifies the computation mode of far-from-diagonal orthogonal updates. = 0: CLAQR5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries. = 1: CLAQR5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries. = 2: Same as KACC22 = 1. This option used to enable exploiting the 2-by-2 structure during matrix multiplications, but this is no longer supported.

*N*N is INTEGER N is the order of the Hessenberg matrix H upon which this subroutine operates.

*KTOP*KTOP is INTEGER

*KBOT*KBOT is INTEGER 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 is INTEGER NSHFTS gives the number of simultaneous shifts. NSHFTS must be positive and even.

*S*S is COMPLEX array, dimension (NSHFTS) S contains the shifts of origin that define the multi- shift QR sweep. On output S may be reordered.

*H*H is COMPLEX array, dimension (LDH,N) 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.

*LDH*LDH is INTEGER LDH is the leading dimension of H just as declared in the calling procedure. LDH >= MAX(1,N).

*ILOZ*ILOZ is INTEGER

*IHIZ*IHIZ is INTEGER Specify the rows of Z to which transformations must be applied if WANTZ is .TRUE.. 1 <= ILOZ <= IHIZ <= N

*Z*Z is COMPLEX array, dimension (LDZ,IHIZ) If WANTZ = .TRUE., then the QR Sweep unitary similarity transformation is accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. If WANTZ = .FALSE., then Z is unreferenced.

*LDZ*LDZ is INTEGER LDA is the leading dimension of Z just as declared in the calling procedure. LDZ >= N.

*V*V is COMPLEX array, dimension (LDV,NSHFTS/2)

*LDV*LDV is INTEGER LDV is the leading dimension of V as declared in the calling procedure. LDV >= 3.

*U*U is COMPLEX array, dimension (LDU,2*NSHFTS)

*LDU*LDU is INTEGER LDU is the leading dimension of U just as declared in the in the calling subroutine. LDU >= 2*NSHFTS.

*NV*NV is INTEGER NV is the number of rows in WV agailable for workspace. NV >= 1.

*WV*WV is COMPLEX array, dimension (LDWV,2*NSHFTS)

*LDWV*LDWV is INTEGER LDWV is the leading dimension of WV as declared in the in the calling subroutine. LDWV >= NV.

*NH*NH is INTEGER NH is the number of columns in array WH available for workspace. NH >= 1.

*WH*WH is COMPLEX array, dimension (LDWH,NH)

*LDWH*LDWH is INTEGER Leading dimension of WH just as declared in the calling procedure. LDWH >= 2*NSHFTS.

**Author**Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

**Contributors:**Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA

Lars Karlsson, Daniel Kressner, and Bruno Lang

Thijs Steel, Department of Computer science, KU Leuven, Belgium

**References:**K. Braman, R. Byers and R. Mathias, The Multi-Shift QR Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 Performance, SIAM Journal of Matrix Analysis, volume 23, pages 929--947, 2002.

Lars Karlsson, Daniel Kressner, and Bruno Lang, Optimally packed chains of bulges in multishift QR algorithms. ACM Trans. Math. Softw. 40, 2, Article 12 (February 2014).

Definition at line **254** of file **claqr5.f**.

## Author

Generated automatically by Doxygen for LAPACK from the source code.

## Referenced By

The man page claqr5(3) is an alias of claqr5.f(3).