Previous: zhsein Up: ../lapack-z.html Next: zlabrd


zhseqr


 NAME
      ZHSEQR - compute the eigenvalues of a complex upper Hessen-
      berg matrix H, and, optionally, the matrices T and Z from
      the Schur decomposition H = Z T Z**H, where T is an upper
      triangular matrix (the Schur form), and Z is the unitary
      matrix of Schur vectors

 SYNOPSIS
      SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z,
                         LDZ, WORK, LWORK, INFO )

          CHARACTER      COMPZ, JOB

          INTEGER        IHI, ILO, INFO, LDH, LDZ, LWORK, N

          COMPLEX*16     H( LDH, * ), W( * ), WORK( * ), Z( LDZ, *
                         )

 PURPOSE
      ZHSEQR computes the eigenvalues of a complex upper Hessen-
      berg matrix H, and, optionally, the matrices T and Z from
      the Schur decomposition H = Z T Z**H, where T is an upper
      triangular matrix (the Schur form), and Z is the unitary
      matrix of Schur vectors.

      Optionally Z may be postmultiplied into an input unitary
      matrix Q, so that this routine can give the Schur factoriza-
      tion of a matrix A which has been reduced to the Hessenberg
      form H by the unitary matrix Q:  A = Q*H*Q**H =
      (QZ)*T*(QZ)**H.

 ARGUMENTS
      JOB     (input) CHARACTER*1
              = 'E': compute eigenvalues only;
              = 'S': compute eigenvalues and the Schur form T.

      COMPZ   (input) CHARACTER*1
              = 'N': no Schur vectors are computed;
              = 'I': Z is initialized to the unit matrix and the
              matrix Z of Schur vectors of H is returned; = 'V': Z
              must contain an unitary matrix Q on entry, and the
              product Q*Z is returned.

      N       (input) INTEGER
              The order of the matrix H.  N >= 0.

      ILO     (input) INTEGER
              IHI     (input) INTEGER It is assumed that H is
              already upper triangular in rows and columns 1:ILO-1
              and IHI+1:N. ILO and IHI are normally set by a pre-
              vious call to ZGEBAL, and then passed to CGEHRD when

              the matrix output by ZGEBAL is reduced to Hessenberg
              form. Otherwise ILO and IHI should be set to 1 and N
              respectively.  1 <= ILO <= max(1,IHI); IHI <= N.

      H       (input/output) COMPLEX*16 array, dimension (LDH,N)
              On entry, the upper Hessenberg matrix H.  On exit,
              if JOB = 'S', H contains the upper triangular matrix
              T from the Schur decomposition (the Schur form). If
              JOB = 'E', the contents of H are unspecified on
              exit.

      LDH     (input) INTEGER
              The leading dimension of the array H. LDH >=
              max(1,N).

      W       (output) COMPLEX*16 array, dimension (N)
              The computed eigenvalues. If JOB = 'S', the eigen-
              values are stored in the same order as on the diago-
              nal of the Schur form returned in H, with W(i) =
              H(i,i).

      Z       (input/output) COMPLEX*16 array, dimension (LDZ,N)
              If COMPZ = 'N': Z is not referenced.
              If COMPZ = 'I': on entry, Z need not be set, and on
              exit, Z contains the unitary matrix Z of the Schur
              vectors of H.  If COMPZ = 'V': on entry Z must con-
              tain an N-by-N matrix Q, which is assumed to be
              equal to the unit matrix except for the submatrix
              Z(ILO:IHI,ILO:IHI); on exit Z contains Q*Z.  Nor-
              mally Q is the unitary matrix generated by ZUNGHR
              after the call to ZGEHRD which formed the Hessenberg
              matrix H.

      LDZ     (input) INTEGER
              The leading dimension of the array Z.  LDZ >=
              max(1,N) if COMPZ = 'I' or 'V'; LDZ >= 1 otherwise.

      WORK    (workspace) COMPLEX*16 array, dimension (N)

      LWORK   (input) INTEGER
              This argument is currently redundant.

      INFO    (output) INTEGER
              = 0:  successful exit
              < 0:  if INFO = -i, the i-th argument had an illegal
              value
              > 0:  if INFO = i, ZHSEQR failed to compute all the
              eigenvalues in a total of 30*(IHI-ILO+1) iterations;
              elements 1:ilo-1 and i+1:n of W contain those eigen-
              values which have been successfully computed.