ZLATRD - reduce NB rows and columns of a complex Hermitian
matrix A to Hermitian tridiagonal form by a unitary simi
larity transformation Q' * A * Q, and returns the matrices
V and W which are needed to apply the transformation to
the unreduced part of A
SYNOPSIS
SUBROUTINE ZLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW )
CHARACTER UPLO
INTEGER LDA, LDW, N, NB
DOUBLE PRECISION E( * )
COMPLEX*16 A( LDA, * ), TAU( * ), W( LDW, * )
PURPOSE
ZLATRD reduces NB rows and columns of a complex Hermitian
matrix A to Hermitian tridiagonal form by a unitary simi
larity transformation Q' * A * Q, and returns the matrices
V and W which are needed to apply the transformation to
the unreduced part of A. If UPLO = 'U', ZLATRD reduces
the last NB rows and columns of a matrix, of which the
upper triangle is supplied;
if UPLO = 'L', ZLATRD 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 ZHETRD.
ARGUMENTS
UPLO (input) CHARACTER
Specifies whether the upper or lower triangular
part of the Hermitian 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) COMPLEX*16 array, dimension (LDA,N)
On entry, the Hermitian 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 unitary matrix Q as a product
of elementary reflectors; if UPLO = 'L', the first
NB columns have been reduced to tridiagonal form,
with the diagonal elements overwriting the diago
nal elements of A; the elements below the diagonal
with the array TAU, represent the unitary matrix
Q as a product of elementary reflectors. See Fur
ther Details. LDA (input) INTEGER The leading
dimension of the array A. LDA >= max(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) COMPLEX*16 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) COMPLEX*16 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 complex scalar, and v is a complex 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 complex scalar, and v is a complex 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 Hermi
tian 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