SLAQR5

   November 2010

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

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

    WANTZ  (input) logical scalar
           WANTZ = .true. if the orthogonal 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: 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: SLAQR5 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.

    SR     (input/output) REAL array of size (NSHFTS)
    SI     (input/output) REAL 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.  On output SR and SI may be
           reordered.

    H      (input/output) REAL 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) REAL array of size (LDZ,IHI)
           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.

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

    V      (workspace) REAL 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) REAL 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) REAL 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) REAL 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