ZLAQR3(3)      LAPACK routine of NEC Numeric Library Collection      ZLAQR3(3)



NAME
       ZLAQR3

SYNOPSIS
       SUBROUTINE ZLAQR3 (WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ,
           Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK)



PURPOSE
               Aggressive early deflation:

               ZLAQR3 accepts as input an upper Hessenberg matrix
               H and performs an unitary similarity transformation
               designed to detect and deflate fully converged eigenvalues from
               a trailing principal submatrix.  On output H has been over-
               written by a new Hessenberg matrix that is a perturbation of
               an unitary similarity transformation of H.  It is to be
               hoped that the final version of H has many zero subdiagonal
               entries.




ARGUMENTS
           WANTT     (input)
                     WANTT is LOGICAL
                     If .TRUE., then the Hessenberg matrix H is fully updated
                     so that the triangular Schur factor may be
                     computed (in cooperation with the calling subroutine).
                     If .FALSE., then only enough of H is updated to preserve
                     the eigenvalues.

           WANTZ     (input)
                     WANTZ is LOGICAL
                     If .TRUE., then the unitary matrix Z is updated so
                     so that the unitary Schur factor may be computed
                     (in cooperation with the calling subroutine).
                     If .FALSE., then Z is not referenced.

           N         (input)
                     N is INTEGER
                     The order of the matrix H and (if WANTZ is .TRUE.) the
                     order of the unitary matrix Z.

           KTOP      (input)
                     KTOP is INTEGER
                     It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0.
                     KBOT and KTOP together determine an isolated block
                     along the diagonal of the Hessenberg matrix.

           KBOT      (input)
                     KBOT is INTEGER
                     It is assumed without a check that either
                     KBOT = N or H(KBOT+1,KBOT)=0.  KBOT and KTOP together
                     determine an isolated block along the diagonal of the
                     Hessenberg matrix.

           NW        (input)
                     NW is INTEGER
                     Deflation window size.  1 .LE. NW .LE. (KBOT-KTOP+1).

           H         (input/output)
                     H is COMPLEX*16 array, dimension (LDH,N)
                     On input the initial N-by-N section of H stores the
                     Hessenberg matrix undergoing aggressive early deflation.
                     On output H has been transformed by a unitary
                     similarity transformation, perturbed, and the returned
                     to Hessenberg form that (it is to be hoped) has some
                     zero subdiagonal entries.

           LDH       (input)
                     LDH is integer
                     Leading dimension of H just as declared in the calling
                     subroutine.  N .LE. LDH

           ILOZ      (input)
                     ILOZ is INTEGER

           IHIZ      (input)
                     IHIZ is 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)
                     Z is COMPLEX*16 array, dimension (LDZ,N)
                     IF WANTZ is .TRUE., then on output, the unitary
                     similarity transformation mentioned above has been
                     accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.
                     If WANTZ is .FALSE., then Z is unreferenced.

           LDZ       (input)
                     LDZ is integer
                     The leading dimension of Z just as declared in the
                     calling subroutine.  1 .LE. LDZ.

           NS        (output)
                     NS is integer
                     The number of unconverged (ie approximate) eigenvalues
                     returned in SR and SI that may be used as shifts by the
                     calling subroutine.

           ND        (output)
                     ND is integer
                     The number of converged eigenvalues uncovered by this
                     subroutine.

           SH        (output)
                     SH is COMPLEX*16 array, dimension KBOT
                     On output, approximate eigenvalues that may
                     be used for shifts are stored in SH(KBOT-ND-NS+1)
                     through SR(KBOT-ND).  Converged eigenvalues are
                     stored in SH(KBOT-ND+1) through SH(KBOT).

           V         (output)
                     V is COMPLEX*16 array, dimension (LDV,NW)
                     An NW-by-NW work array.

           LDV       (input)
                     LDV is integer scalar
                     The leading dimension of V just as declared in the
                     calling subroutine.  NW .LE. LDV

           NH        (input)
                     NH is integer scalar
                     The number of columns of T.  NH.GE.NW.

           T         (output)
                     T is COMPLEX*16 array, dimension (LDT,NW)

           LDT       (input)
                     LDT is integer
                     The leading dimension of T just as declared in the
                     calling subroutine.  NW .LE. LDT

           NV        (input)
                     NV is integer
                     The number of rows of work array WV available for
                     workspace.  NV.GE.NW.

           WV        (output)
                     WV is COMPLEX*16 array, dimension (LDWV,NW)

           LDWV      (input)
                     LDWV is integer
                     The leading dimension of W just as declared in the
                     calling subroutine.  NW .LE. LDV

           WORK      (output)
                     WORK is COMPLEX*16 array, dimension LWORK.
                     On exit, WORK(1) is set to an estimate of the optimal value
                     of LWORK for the given values of N, NW, KTOP and KBOT.

           LWORK     (input)
                     LWORK is integer
                     The dimension of the work array WORK.  LWORK = 2*NW
                     suffices, but greater efficiency may result from larger
                     values of LWORK.

                     If LWORK = -1, then a workspace query is assumed; ZLAQR3
                     only estimates the optimal workspace size for the given
                     values of N, NW, KTOP and KBOT.  The estimate is returned
                     in WORK(1).  No error message related to LWORK is issued
                     by XERBLA.  Neither H nor Z are accessed.



LAPACK routine                  31 October 2017                      ZLAQR3(3)