1ZLATRD(1) LAPACK auxiliary routine (version 3.1) ZLATRD(1)
2
3
4
6 ZLATRD - NB rows and columns of a complex Hermitian matrix A to Hermit‐
7 ian tridiagonal form by a unitary similarity transformation Q' * A * Q,
8 and returns the matrices V and W which are needed to apply the trans‐
9 formation to the unreduced part of A
10
12 SUBROUTINE ZLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW )
13
14 CHARACTER UPLO
15
16 INTEGER LDA, LDW, N, NB
17
18 DOUBLE PRECISION E( * )
19
20 COMPLEX*16 A( LDA, * ), TAU( * ), W( LDW, * )
21
23 ZLATRD reduces NB rows and columns of a complex Hermitian matrix A to
24 Hermitian tridiagonal form by a unitary similarity transformation Q' *
25 A * Q, and returns the matrices V and W which are needed to apply the
26 transformation to the unreduced part of A.
27
28 If UPLO = 'U', ZLATRD reduces the last NB rows and columns of a matrix,
29 of which the upper triangle is supplied;
30 if UPLO = 'L', ZLATRD reduces the first NB rows and columns of a
31 matrix, of which the lower triangle is supplied.
32
33 This is an auxiliary routine called by ZHETRD.
34
35
37 UPLO (input) CHARACTER*1
38 Specifies whether the upper or lower triangular part of the
39 Hermitian matrix A is stored:
40 = 'U': Upper triangular
41 = 'L': Lower triangular
42
43 N (input) INTEGER
44 The order of the matrix A.
45
46 NB (input) INTEGER
47 The number of rows and columns to be reduced.
48
49 A (input/output) COMPLEX*16 array, dimension (LDA,N)
50 On entry, the Hermitian matrix A. If UPLO = 'U', the leading
51 n-by-n upper triangular part of A contains the upper triangular
52 part of the matrix A, and the strictly lower triangular part of
53 A is not referenced. If UPLO = 'L', the leading n-by-n lower
54 triangular part of A contains the lower triangular part of the
55 matrix A, and the strictly upper triangular part of A is not
56 referenced. On exit: if UPLO = 'U', the last NB columns have
57 been reduced to tridiagonal form, with the diagonal elements
58 overwriting the diagonal elements of A; the elements above the
59 diagonal with the array TAU, represent the unitary matrix Q as
60 a product of elementary reflectors; if UPLO = 'L', the first NB
61 columns have been reduced to tridiagonal form, with the diago‐
62 nal elements overwriting the diagonal elements of A; the ele‐
63 ments below the diagonal with the array TAU, represent the
64 unitary matrix Q as a product of elementary reflectors. See
65 Further Details. LDA (input) INTEGER The leading dimension
66 of the array A. LDA >= max(1,N).
67
68 E (output) DOUBLE PRECISION array, dimension (N-1)
69 If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal elements
70 of the last NB columns of the reduced matrix; if UPLO = 'L',
71 E(1:nb) contains the subdiagonal elements of the first NB col‐
72 umns of the reduced matrix.
73
74 TAU (output) COMPLEX*16 array, dimension (N-1)
75 The scalar factors of the elementary reflectors, stored in
76 TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.
77 See Further Details. W (output) COMPLEX*16 array, dimen‐
78 sion (LDW,NB) The n-by-nb matrix W required to update the unre‐
79 duced part of A.
80
81 LDW (input) INTEGER
82 The leading dimension of the array W. LDW >= max(1,N).
83
85 If UPLO = 'U', the matrix Q is represented as a product of elementary
86 reflectors
87
88 Q = H(n) H(n-1) . . . H(n-nb+1).
89
90 Each H(i) has the form
91
92 H(i) = I - tau * v * v'
93
94 where tau is a complex scalar, and v is a complex vector with v(i:n) =
95 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i), and tau in
96 TAU(i-1).
97
98 If UPLO = 'L', the matrix Q is represented as a product of elementary
99 reflectors
100
101 Q = H(1) H(2) . . . H(nb).
102
103 Each H(i) has the form
104
105 H(i) = I - tau * v * v'
106
107 where tau is a complex scalar, and v is a complex vector with v(1:i) =
108 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), and tau in
109 TAU(i).
110
111 The elements of the vectors v together form the n-by-nb matrix V which
112 is needed, with W, to apply the transformation to the unreduced part of
113 the matrix, using a Hermitian rank-2k update of the form: A := A - V*W'
114 - W*V'.
115
116 The contents of A on exit are illustrated by the following examples
117 with n = 5 and nb = 2:
118
119 if UPLO = 'U': if UPLO = 'L':
120
121 ( a a a v4 v5 ) ( d )
122 ( a a v4 v5 ) ( 1 d )
123 ( a 1 v5 ) ( v1 1 a )
124 ( d 1 ) ( v1 v2 a a )
125 ( d ) ( v1 v2 a a a )
126
127 where d denotes a diagonal element of the reduced matrix, a denotes an
128 element of the original matrix that is unchanged, and vi denotes an
129 element of the vector defining H(i).
130
131
132
133
134 LAPACK auxiliary routine (versionNo3v.e1m)ber 2006 ZLATRD(1)