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