SLATRD - 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 SLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW )
CHARACTER UPLO
INTEGER LDA, LDW, N, NB
REAL A( LDA, * ), E( * ), TAU( * ), W( LDW,
* )
PURPOSE
SLATRD 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', SLATRD
reduces the last NB rows and columns of a matrix, of which
the upper triangle is supplied;
if UPLO = 'L', SLATRD 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 SSYTRD.
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) 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
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) REAL 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) REAL 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) REAL 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).
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+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