CLAQR5

   Univ. of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..
   November 2010

   This auxiliary subroutine called by CLAQR0 performs a
   single small-bulge multi-shift QR sweep.

    WANTT  (input) logical scalar
           WANTT = .true. if the triangular Schur factor
           is being computed.  WANTT is set to .false. otherwise.

    WANTZ  (input) logical scalar
           WANTZ = .true. if the unitary Schur factor is being
           computed.  WANTZ is set to .false. otherwise.

    KACC22 (input) 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: CLAQR5 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      (input) integer scalar
           N is the order of the Hessenberg matrix H upon which this
           subroutine operates.

    KTOP   (input) integer scalar
    KBOT   (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 (input) integer scalar
           NSHFTS gives the number of simultaneous shifts.  NSHFTS
           must be positive and even.

    S      (input/output) COMPLEX array of size (NSHFTS)
           S contains the shifts of origin that define the multi-
           shift QR sweep.  On output S may be reordered.

    H      (input/output) COMPLEX array of size (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    (input) integer scalar
           LDH is the leading dimension of H just as declared in the
           calling procedure.  LDH.GE.MAX(1,N).

    ILOZ   (input) INTEGER
    IHIZ   (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      (input/output) COMPLEX array of size (LDZ,IHI)
           If WANTZ = .TRUE., then the QR Sweep unitary
           similarity transformation is accumulated into
           Z(ILOZ:IHIZ,ILO:IHI) from the right.
           If WANTZ = .FALSE., then Z is unreferenced.

    LDZ    (input) integer scalar
           LDA is the leading dimension of Z just as declared in
           the calling procedure. LDZ.GE.N.

    V      (workspace) COMPLEX array of size (LDV,NSHFTS/2)

    LDV    (input) integer scalar
           LDV is the leading dimension of V as declared in the
           calling procedure.  LDV.GE.3.

    U      (workspace) COMPLEX array of size
           (LDU,3*NSHFTS-3)

    LDU    (input) integer scalar
           LDU is the leading dimension of U just as declared in the
           in the calling subroutine.  LDU.GE.3*NSHFTS-3.

    NH     (input) integer scalar
           NH is the number of columns in array WH available for
           workspace. NH.GE.1.

    WH     (workspace) COMPLEX array of size (LDWH,NH)

    LDWH   (input) integer scalar
           Leading dimension of WH just as declared in the
           calling procedure.  LDWH.GE.3*NSHFTS-3.

    NV     (input) integer scalar
           NV is the number of rows in WV agailable for workspace.
           NV.GE.1.

    WV     (workspace) COMPLEX array of size
           (LDWV,3*NSHFTS-3)

    LDWV   (input) integer scalar
           LDWV is the leading dimension of WV as declared in the
           in the calling subroutine.  LDWV.GE.NV.

Call Graph

Caller Graph