DLATRD - reduce NB rows and columns of a real symmetric
matrix A to symmetric tridiagonal form by an orthogonal
similarity transformation Q' * A * Q, and returns the
matrices V and W which are needed to apply the transforma
tion to the unreduced part of A
SYNOPSIS
SUBROUTINE DLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW )
CHARACTER UPLO
INTEGER LDA, LDW, N, NB
DOUBLE PRECISION A( LDA, * ), E( * ), TAU( *
), W( LDW, * )
PURPOSE
DLATRD reduces NB rows and columns of a real symmetric
matrix A to symmetric tridiagonal form by an orthogonal
similarity transformation Q' * A * Q, and returns the
matrices V and W which are needed to apply the transforma
tion to the unreduced part of A. If UPLO = 'U', DLATRD
reduces the last NB rows and columns of a matrix, of which
the upper triangle is supplied;
if UPLO = 'L', DLATRD reduces the first NB rows and
columns of a matrix, of which the lower triangle is sup
plied.
This is an auxiliary routine called by DSYTRD.
ARGUMENTS
UPLO (input) CHARACTER
Specifies whether the upper or lower triangular
part of the symmetric matrix A is stored:
= 'U': Upper triangular
= 'L': Lower triangular
N (input) INTEGER
The order of the matrix A.
NB (input) INTEGER
The number of rows and columns to be reduced.
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 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
exit: if UPLO = 'U', the last NB columns have been
reduced to tridiagonal form, with the diagonal
elements overwriting the diagonal elements of A;
the elements above the diagonal with the array
TAU, represent the orthogonal matrix Q as a prod
uct of elementary reflectors; if UPLO = 'L', the
first NB columns have been reduced to tridiagonal
form, with the diagonal elements overwriting the
diagonal elements of A; the elements below the
diagonal 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
>= (1,N).
E (output) DOUBLE PRECISION array, dimension (N-1)
If UPLO = 'U', E(n-nb:n-1) contains the superdiag
onal elements of the last NB columns of the
reduced matrix; if UPLO = 'L', E(1:nb) contains
the subdiagonal elements of the first NB columns
of the reduced matrix.
TAU (output) DOUBLE PRECISION array, dimension (N-1)
The scalar factors of the elementary reflectors,
stored in TAU(n-nb:n-1) if UPLO = 'U', and in
TAU(1:nb) if UPLO = 'L'. See Further Details. W
(output) DOUBLE PRECISION array, dimension
(LDW,NB) The n-by-nb matrix W required to update
the unreduced part of A.
LDW (input) INTEGER
The leading dimension of the array W. LDW >=
max(1,N).
FURTHER DETAILS
If UPLO = 'U', the matrix Q is represented as a product of
elementary reflectors
Q = H(n) H(n-1) . . . H(n-nb+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:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in
A(1:i-1,i), and tau in TAU(i-1).
If UPLO = 'L', the matrix Q is represented as a product of
elementary reflectors
Q = H(1) H(2) . . . H(nb).
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+1:n) is stored on exit in
A(i+1:n,i), and tau in TAU(i).
The elements of the vectors v together form the n-by-nb
matrix V which is needed, with W, to apply the transforma
tion to the unreduced part of the matrix, using a symmet
ric rank-2k update of the form: A := A - V*W' - W*V'.
The contents of A on exit are illustrated by the following
examples with n = 5 and nb = 2:
if UPLO = 'U': if UPLO = 'L':
( a a a v4 v5 ) ( d
)
( a a v4 v5 ) ( 1 d
)
( a 1 v5 ) ( v1 1 a
)
( d 1 ) ( v1 v2 a a
)
( d ) ( v1 v2 a a
a )
where d denotes a diagonal element of the reduced matrix,
a denotes an element of the original matrix that is
unchanged, and vi denotes an element of the vector defin
ing H(i).
Man(1) output converted with
man2html