DLAQR5

   November 2010

   This auxiliary subroutine called by DLAQR0 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: 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: DLAQR5 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) DOUBLE PRECISION array of size (NSHFTS)
    SI     (input/output) 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.  On output SR and SI may be
           reordered.

    H      (input/output) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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