SSYTRD  - reduce a real symmetric matrix A to real symmet­
       ric tridiagonal form T by an orthogonal similarity  trans­
       formation


SYNOPSIS

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

           CHARACTER      UPLO

           INTEGER        INFO, LDA, LWORK, N

           REAL           A( LDA, * ), D( * ), E( * ), TAU( *  ),
                          WORK( * )


PURPOSE

       SSYTRD reduces a real symmetric matrix A to real symmetric
       tridiagonal form T by an orthogonal similarity transforma­
       tion: Q**T * 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) REAL array, dimension (LDA,N)
               On  entry, the symmetric 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 orthogonal 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 orthogonal 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) REAL array, dimension (N-1)
               The  scalar  factors  of the elementary reflectors
               (see Further Details).

       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 >= 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 real scalar, and v is a real 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).

       Each H(i) has the form


       where tau is a real scalar, and v is a real 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