1DLABRD(1) LAPACK auxiliary routine (version 3.1) DLABRD(1)
2
3
4
6 DLABRD - the first NB rows and columns of a real general m by n matrix
7 A to upper or lower bidiagonal form by an orthogonal transformation Q'
8 * A * P, and returns the matrices X and Y which are needed to apply the
9 transformation to the unreduced part of A
10
12 SUBROUTINE DLABRD( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y, LDY )
13
14 INTEGER LDA, LDX, LDY, M, N, NB
15
16 DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAUP( * ),
17 TAUQ( * ), X( LDX, * ), Y( LDY, * )
18
20 DLABRD reduces the first NB rows and columns of a real general m by n
21 matrix A to upper or lower bidiagonal form by an orthogonal transforma‐
22 tion Q' * A * P, and returns the matrices X and Y which are needed to
23 apply the transformation to the unreduced part of A.
24
25 If m >= n, A is reduced to upper bidiagonal form; if m < n, to lower
26 bidiagonal form.
27
28 This is an auxiliary routine called by DGEBRD
29
30
32 M (input) INTEGER
33 The number of rows in the matrix A.
34
35 N (input) INTEGER
36 The number of columns in the matrix A.
37
38 NB (input) INTEGER
39 The number of leading rows and columns of A to be reduced.
40
41 A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
42 On entry, the m by n general matrix to be reduced. On exit,
43 the first NB rows and columns of the matrix are overwritten;
44 the rest of the array is unchanged. If m >= n, elements on and
45 below the diagonal in the first NB columns, with the array
46 TAUQ, represent the orthogonal matrix Q as a product of elemen‐
47 tary reflectors; and elements above the diagonal in the first
48 NB rows, with the array TAUP, represent the orthogonal matrix P
49 as a product of elementary reflectors. If m < n, elements
50 below the diagonal in the first NB columns, with the array
51 TAUQ, represent the orthogonal matrix Q as a product of elemen‐
52 tary reflectors, and elements on and above the diagonal in the
53 first NB rows, with the array TAUP, represent the orthogonal
54 matrix P as a product of elementary reflectors. See Further
55 Details. LDA (input) INTEGER The leading dimension of the
56 array A. LDA >= max(1,M).
57
58 D (output) DOUBLE PRECISION array, dimension (NB)
59 The diagonal elements of the first NB rows and columns of the
60 reduced matrix. D(i) = A(i,i).
61
62 E (output) DOUBLE PRECISION array, dimension (NB)
63 The off-diagonal elements of the first NB rows and columns of
64 the reduced matrix.
65
66 TAUQ (output) DOUBLE PRECISION array dimension (NB)
67 The scalar factors of the elementary reflectors which represent
68 the orthogonal matrix Q. See Further Details. TAUP (output)
69 DOUBLE PRECISION array, dimension (NB) The scalar factors of
70 the elementary reflectors which represent the orthogonal matrix
71 P. See Further Details. X (output) DOUBLE PRECISION
72 array, dimension (LDX,NB) The m-by-nb matrix X required to
73 update the unreduced part of A.
74
75 LDX (input) INTEGER
76 The leading dimension of the array X. LDX >= M.
77
78 Y (output) DOUBLE PRECISION array, dimension (LDY,NB)
79 The n-by-nb matrix Y required to update the unreduced part of
80 A.
81
82 LDY (input) INTEGER
83 The leading dimension of the array Y. LDY >= N.
84
86 The matrices Q and P are represented as products of elementary reflec‐
87 tors:
88
89 Q = H(1) H(2) . . . H(nb) and P = G(1) G(2) . . . G(nb)
90
91 Each H(i) and G(i) has the form:
92
93 H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
94
95 where tauq and taup are real scalars, and v and u are real vectors.
96
97 If m >= n, v(1:i-1) = 0, v(i) = 1, and v(i:m) is stored on exit in
98 A(i:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+1:n) is stored on exit in
99 A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
100
101 If m < n, v(1:i) = 0, v(i+1) = 1, and v(i+1:m) is stored on exit in
102 A(i+2:m,i); u(1:i-1) = 0, u(i) = 1, and u(i:n) is stored on exit in
103 A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
104
105 The elements of the vectors v and u together form the m-by-nb matrix V
106 and the nb-by-n matrix U' which are needed, with X and Y, to apply the
107 transformation to the unreduced part of the matrix, using a block
108 update of the form: A := A - V*Y' - X*U'.
109
110 The contents of A on exit are illustrated by the following examples
111 with nb = 2:
112
113 m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
114
115 ( 1 1 u1 u1 u1 ) ( 1 u1 u1 u1 u1 u1 )
116 ( v1 1 1 u2 u2 ) ( 1 1 u2 u2 u2 u2 )
117 ( v1 v2 a a a ) ( v1 1 a a a a )
118 ( v1 v2 a a a ) ( v1 v2 a a a a )
119 ( v1 v2 a a a ) ( v1 v2 a a a a )
120 ( v1 v2 a a a )
121
122 where a denotes an element of the original matrix which is unchanged,
123 vi denotes an element of the vector defining H(i), and ui an element of
124 the vector defining G(i).
125
126
127
128
129 LAPACK auxiliary routine (versionNo3v.e1m)ber 2006 DLABRD(1)