---
name: "laqr5"
section: "3"
platform: "linux"
package: "lapack-doc"
version: "3.12.1-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/laqr5"
---

# laqr5(3)

laqr5: step in hseqr

## NAME

laqr5 - laqr5: step in hseqr

## SYNOPSIS

### Functions

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.  subroutine **dlaqr5** (wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)\
 **DLAQR5** performs a single small-bulge multi-shift QR sweep.  subroutine **slaqr5** (wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)\
 **SLAQR5** performs a single small-bulge multi-shift QR sweep.  subroutine **zlaqr5** (wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)\
 **ZLAQR5** performs a single small-bulge multi-shift QR sweep.

## Detailed Description

## Function 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**.

### subroutine dlaqr5 (logical wantt, logical wantz, integer kacc22, integer n, integer ktop, integer kbot, integer nshfts, double precision, dimension( \* ) sr, double precision, dimension( \* ) si, double precision, dimension( ldh, \* ) h, integer ldh, integer iloz, integer ihiz, double precision, dimension( ldz, \* ) z, integer ldz, double precision, dimension( ldv, \* ) v, integer ldv, double precision, dimension( ldu, \* ) u, integer ldu, integer nv, double precision, dimension( ldwv, \* ) wv, integer ldwv, integer nh, double precision, dimension( ldwh, \* ) wh, integer ldwh)

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

**Purpose:**

```
!>
!>    DLAQR5, called by DLAQR0, performs a
!>    single small-bulge multi-shift QR sweep.
!>
```

**Parameters**

*WANTT*

```
!>          WANTT is LOGICAL
!>             WANTT = .true. if the quasi-triangular Schur factor
!>             is being computed.  WANTT is set to .false. otherwise.
!>
```

*WANTZ*

```
!>          WANTZ is LOGICAL
!>             WANTZ = .true. if the orthogonal 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: DLAQR5 does not accumulate reflections and does not
!>             use matrix-matrix multiply to update far-from-diagonal
!>             matrix entries.
!>        = 1: DLAQR5 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.
!>
```

*SR*

```
!>          SR is DOUBLE PRECISION array, dimension (NSHFTS)
!>
```

*SI*

```
!>          SI is DOUBLE PRECISION array, dimension (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.  On output SR and SI may be
!>             reordered.
!>
```

*H*

```
!>          H is DOUBLE PRECISION 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 DOUBLE PRECISION array, dimension (LDZ,IHIZ)
!>             If WANTZ = .TRUE., then the QR Sweep orthogonal
!>             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 DOUBLE PRECISION 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 DOUBLE PRECISION 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 DOUBLE PRECISION 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 DOUBLE PRECISION 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 **262** of file **dlaqr5.f**.

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

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

**Purpose:**

```
!>
!>    SLAQR5, called by SLAQR0, performs a
!>    single small-bulge multi-shift QR sweep.
!>
```

**Parameters**

*WANTT*

```
!>          WANTT is LOGICAL
!>             WANTT = .true. if the quasi-triangular Schur factor
!>             is being computed.  WANTT is set to .false. otherwise.
!>
```

*WANTZ*

```
!>          WANTZ is LOGICAL
!>             WANTZ = .true. if the orthogonal 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: SLAQR5 does not accumulate reflections and does not
!>             use matrix-matrix multiply to update far-from-diagonal
!>             matrix entries.
!>        = 1: SLAQR5 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.
!>
```

*SR*

```
!>          SR is REAL array, dimension (NSHFTS)
!>
```

*SI*

```
!>          SI is REAL array, dimension (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.  On output SR and SI may be
!>             reordered.
!>
```

*H*

```
!>          H is REAL 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 REAL array, dimension (LDZ,IHIZ)
!>             If WANTZ = .TRUE., then the QR Sweep orthogonal
!>             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 REAL 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 REAL 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 REAL 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 REAL 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 **262** of file **slaqr5.f**.

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

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

**Purpose:**

```
!>
!>    ZLAQR5, called by ZLAQR0, 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: ZLAQR5 does not accumulate reflections and does not
!>             use matrix-matrix multiply to update far-from-diagonal
!>             matrix entries.
!>        = 1: ZLAQR5 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*16 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*16 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*16 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*16 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*16 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*16 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*16 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 **zlaqr5.f**.

## Author

Generated automatically by Doxygen for LAPACK from the source code.
