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


SYNOPSIS

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

           CHARACTER      UPLO

           INTEGER        INFO, LDA, LWORK, N

           REAL           D( * ), E( * )

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


PURPOSE

       CHETRD 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 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) REAL 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 array, dimension (N-1)
               The scalar factors of  the  elementary  reflectors
               (see Further Details).

       WORK    (workspace/output) COMPLEX 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