DSYTRD(l)		LAPACK routine (version	1.1)		    DSYTRD(l)

NAME
  DSYTRD - reduce a real symmetric matrix A to real symmetric tridiagonal
  form T by an orthogonal similarity transformation

SYNOPSIS

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

      CHARACTER	     UPLO

      INTEGER	     INFO, LDA,	LWORK, N

      DOUBLE	     PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ), WORK( *
		     )

PURPOSE
  DSYTRD reduces a real	symmetric matrix A to real symmetric tridiagonal form
  T by an orthogonal similarity	transformation:	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) DOUBLE	PRECISION array, dimension (LDA,N)
	  On entry, the	symmetric 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 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 ele-
	  mentary reflectors. See Further Details.  LDA	    (input) INTEGER
	  The leading dimension	of the array A.	 LDA >=	max(1,N).

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

  WORK	  (workspace) DOUBLE PRECISION 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 perfor-
	  mance	LWORK >= N*NB, where NB	is the optimal blocksize.

  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 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

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

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


Back to the listing of computational routines for eigenvalue problems