ZHSEQR  -  compute the eigenvalues of a complex upper Hes­
       senberg 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 postmulti­
       plied into an input unitary matrix Q, so that this routine
       can  give  the Schur factorization 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  previous 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  <=  IHI
               <= N, if N > 0; ILO=1 and IHI=0, if N=0.

               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 unspec­
               ified 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
               diagonal  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 contain an N-by-N matrix Q, which is  assumed
               to be equal to the unit matrix except for the sub­
               matrix Z(ILO:IHI,ILO:IHI); on exit Z contains Q*Z.
               Normally  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  other­
               wise.

       WORK    (workspace/output) COMPLEX*16 array, dimension
               (LWORK)
               On exit, if INFO = 0, WORK(1) returns the  optimal
               LWORK.

       LWORK   (input) INTEGER
               The   dimension  of  the  array  WORK.   LWORK  >=
               max(1,N).

               If LWORK = -1, then a workspace query is  assumed;
               the  routine  only  calculates the optimal size of
               the WORK array, returns this value  as  the  first
               entry  of  the  WORK  array,  and no error message
               related to LWORK is issued by XERBLA.

       INFO    (output) INTEGER
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille­
               gal value
               >  0:   if  INFO = i, ZHSEQR failed to compute all

               ations;  elements  1:ilo-1  and i+1:n of W contain
               those eigenvalues  which  have  been  successfully
               computed.


Man(1) output converted with man2html