chetrd(3S)

CHETRD - reduce a complex Hermitian matrix A to real symmetric tridiagonal form T by a unitary similarity transformation

As shipped in IRIX 6.5.22. Added in IRIX 6.5.15.

NAME
     CHETRD - reduce a complex Hermitian matrix A to real symmetric
     tridiagonal form T by a unitary similarity transformation

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( * )

IMPLEMENTATION
     These routines are part of the SCSL Scientific Library and can be loaded
     using either the -lscs or the -lscs_mp option.  The -lscs_mp option
     directs the linker to use the multi-processor version of the library.

     When linking to SCSL with -lscs or -lscs_mp, the default integer size is
     4 bytes (32 bits). Another version of SCSL is available in which integers
     are 8 bytes (64 bits).  This version allows the user access to larger
     memory sizes and helps when porting legacy Cray codes.  It can be loaded
     by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
     only one of the two versions; 4-byte integer and 8-byte integer library
     calls cannot be mixed.

PURPOSE
     CHETRD reduces a complex Hermitian matrix A to real symmetric tridiagonal
     form T by a unitary similarity transformation: 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 contains 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 triangular 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
             superdiagonal of A are overwritten by the corresponding elements
             of the tridiagonal matrix T, and the elements 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).

     D       (output) REAL array, dimension (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 illegal 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).

     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(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).


SEE ALSO
     INTRO_LAPACK(3S), INTRO_SCSL(3S)

     This man page is available only online.