ZHETRD  - reduce a complex Hermitian matrix A to real sym­
       metric tridiagonal form T by a unitary  similarity  trans­
       formation


SYNOPSIS

       SUBROUTINE ZHETRD( UPLO,  N,  A,  LDA,  D,  E,  TAU, WORK,
                          LWORK, INFO )

           CHARACTER      UPLO

           INTEGER        INFO, LDA, LWORK, N

           DOUBLE         PRECISION D( * ), E( * )

           COMPLEX*16     A( LDA, * ), TAU( * ), WORK( * )


PURPOSE

       ZHETRD reduces a complex Hermitian matrix A to  real  sym­
       metric  tridiagonal  form T by a unitary similarity trans­
       formation: Q**H * A * Q = T.


ARGUMENTS

       UPLO    (input) CHARACTER*1
               = 'U':  Upper triangle of A is stored;
               = 'L':  Lower triangle of A is stored.

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

       A       (input/output) COMPLEX*16 array, dimension (LDA,N)
               On  entry, the Hermitian matrix A.  If UPLO = 'U',
               the leading N-by-N upper triangular part of A con­
               tains  the  upper triangular part of the matrix A,
               and the strictly lower triangular part of A is not
               referenced.   If  UPLO  =  'L', the leading N-by-N
               lower triangular part of A contains the lower tri­
               angular  part  of  the  matrix A, and the strictly
               upper triangular part of A is not referenced.   On
               exit, if UPLO = 'U', the diagonal and first super­
               diagonal of A are overwritten by the corresponding
               elements of the tridiagonal matrix T, and the ele­
               ments above  the  first  superdiagonal,  with  the
               array  TAU,  represent  the  unitary matrix Q as a
               product of elementary reflectors; if UPLO  =  'L',
               the  diagonal and first subdiagonal of A are over-
               written  by  the  corresponding  elements  of  the
               tridiagonal  matrix  T, and the elements below the
               first subdiagonal, with the array  TAU,  represent
               the  unitary  matrix  Q as a product of elementary
               reflectors. See Further Details.  LDA      (input)
               INTEGER The leading dimension of the array A.  LDA
               >= max(1,N).

               The diagonal elements of the tridiagonal matrix T:
               D(i) = A(i,i).

       E       (output) DOUBLE PRECISION array, dimension (N-1)
               The   off-diagonal  elements  of  the  tridiagonal
               matrix T: E(i) = A(i,i+1) if UPLO =  'U',  E(i)  =
               A(i+1,i) if UPLO = 'L'.

       TAU     (output) COMPLEX*16 array, dimension (N-1)
               The  scalar  factors  of the elementary reflectors
               (see Further Details).

       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 >= 1.  For
               optimum performance LWORK >= N*NB, where NB is the
               optimal blocksize.

               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


FURTHER DETAILS

       If UPLO = 'U', the matrix Q is represented as a product of
       elementary reflectors

          Q = H(n-1) . . . H(2) H(1).

       Each H(i) has the form

          H(i) = I - tau * v * v'

       where tau is a complex scalar, and v is a  complex  vector
       with v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit
       in
       A(1:i-1,i+1), and tau in TAU(i).

       If UPLO = 'L', the matrix Q is represented as a product of
       elementary reflectors

          Q = H(1) H(2) . . . H(n-1).


          H(i) = I - tau * v * v'

       where  tau  is a complex scalar, and v is a complex vector
       with v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit
       in A(i+2:n,i), and tau in TAU(i).

       The contents of A on exit are illustrated by the following
       examples with n = 5:

       if UPLO = 'U':                       if UPLO = 'L':

         (   d     e     v2    v3    v4   )                (    d
       )
         (        d     e     v3   v4  )               (   e    d
       )
         (          d    e    v4  )               (   v1   e    d
       )
         (               d    e   )              (  v1  v2  e   d
       )
         (                  d  )              (  v1   v2   v3   e
       d  )

       where d and e denote diagonal and off-diagonal elements of
       T, and vi denotes an element of the vector defining  H(i).


Man(1) output converted with man2html