SHSEQR  -  compute the eigenvalues of a real upper Hessen­
       berg matrix H and, optionally, the matrices T and  Z  from
       the  Schur decomposition H = Z T Z**T, where T is an upper
       quasi-triangular matrix (the Schur form),  and  Z  is  the
       orthogonal matrix of Schur vectors


SYNOPSIS

       SUBROUTINE SHSEQR( JOB,  COMPZ,  N,  ILO, IHI, H, LDH, WR,
                          WI, Z, LDZ, WORK, LWORK, INFO )

           CHARACTER      COMPZ, JOB

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

           REAL           H( LDH, * ), WI( * ), WORK( * ), WR(  *
                          ), Z( LDZ, * )


PURPOSE

       SHSEQR computes the eigenvalues of a real upper Hessenberg
       matrix H and, optionally, the matrices T and  Z  from  the
       Schur  decomposition  H  =  Z  T Z**T, where T is an upper
       quasi-triangular matrix (the Schur form),  and  Z  is  the
       orthogonal  matrix  of Schur vectors.  Optionally Z may be
       postmultiplied into an input orthogonal 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
       orthogonal matrix Q:  A = Q*H*Q**T = (QZ)*T*(QZ)**T.


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  orthogonal  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 SGEBAL, and then  passed  to
               SGEHRD when the matrix output by SGEBAL 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 quasi-triangu­
               lar matrix T from  the  Schur  decomposition  (the
               Schur form); 2-by-2 diagonal blocks (corresponding
               to complex conjugate  pairs  of  eigenvalues)  are
               returned   in   standard   form,   with  H(i,i)  =
               H(i+1,i+1) and H(i+1,i)*H(i,i+1) <  0.  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).

       WR      (output) REAL array, dimension (N)
               WI      (output) REAL  array,  dimension  (N)  The
               real  and  imaginary  parts,  respectively, of the
               computed eigenvalues. If two eigenvalues are  com­
               puted as a complex conjugate pair, they are stored
               in consecutive elements of WR and WI, say the i-th
               and  (i+1)th,  with  WI(i) > 0 and WI(i+1) < 0. If
               JOB = 'S', the eigenvalues are stored in the  same
               order  as  on  the  diagonal  of  the  Schur  form
               returned  in  H,  with  WR(i)  =  H(i,i)  and,  if
               H(i:i+1,i:i+1) is a 2-by-2 diagonal block, WI(i) =
               sqrt(H(i+1,i)*H(i,i+1)) and WI(i+1) = -WI(i).

       Z       (input/output) REAL 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 orthogonal 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 orthogonal matrix  generated  by
               SORGHR  after  the call to SGEHRD 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) REAL 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

               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, SHSEQR failed to compute all of
               the eigenvalues in a total of 30*(IHI-ILO+1) iter­
               ations;  elements  1:ilo-1  and i+1:n of WR and WI
               contain those eigenvalues which have been success­
               fully computed.


Man(1) output converted with man2html