1DLABRD(1)           LAPACK auxiliary routine (version 3.2)           DLABRD(1)
2
3
4

NAME

6       DLABRD - reduces the first NB rows and columns of a real general m by n
7       matrix A to upper or lower bidiagonal form by an orthogonal transforma‐
8       tion  Q'  * A * P, and returns the matrices X and Y which are needed to
9       apply the transformation to the unreduced part of A
10

SYNOPSIS

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

PURPOSE

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.  If m >= n,  A  is
24       reduced to upper bidiagonal form; if m < n, to lower bidiagonal form.
25       This is an auxiliary routine called by DGEBRD
26

ARGUMENTS

28       M       (input) INTEGER
29               The number of rows in the matrix A.
30
31       N       (input) INTEGER
32               The number of columns in the matrix A.
33
34       NB      (input) INTEGER
35               The number of leading rows and columns of A to be reduced.
36
37       A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
38               On  entry,  the  m by n general matrix to be reduced.  On exit,
39               the first NB rows and columns of the  matrix  are  overwritten;
40               the rest of the array is unchanged.  If m >= n, elements on and
41               below the diagonal in the first  NB  columns,  with  the  array
42               TAUQ, represent the orthogonal matrix Q as a product of elemen‐
43               tary reflectors; and elements above the diagonal in  the  first
44               NB rows, with the array TAUP, represent the orthogonal matrix P
45               as a product of elementary reflectors.   If  m  <  n,  elements
46               below  the  diagonal  in  the  first NB columns, with the array
47               TAUQ, represent the orthogonal matrix Q as a product of elemen‐
48               tary  reflectors, and elements on and above the diagonal in the
49               first NB rows, with the array TAUP,  represent  the  orthogonal
50               matrix  P  as  a product of elementary reflectors.  See Further
51               Details.  LDA     (input) INTEGER The leading dimension of  the
52               array A.  LDA >= max(1,M).
53
54       D       (output) DOUBLE PRECISION array, dimension (NB)
55               The  diagonal  elements of the first NB rows and columns of the
56               reduced matrix.  D(i) = A(i,i).
57
58       E       (output) DOUBLE PRECISION array, dimension (NB)
59               The off-diagonal elements of the first NB rows and  columns  of
60               the reduced matrix.
61
62       TAUQ    (output) DOUBLE PRECISION array dimension (NB)
63               The scalar factors of the elementary reflectors which represent
64               the orthogonal matrix Q. See Further Details.  TAUP    (output)
65               DOUBLE  PRECISION  array,  dimension (NB) The scalar factors of
66               the elementary reflectors which represent the orthogonal matrix
67               P.  See  Further  Details.   X        (output) DOUBLE PRECISION
68               array, dimension (LDX,NB) The  m-by-nb  matrix  X  required  to
69               update the unreduced part of A.
70
71       LDX     (input) INTEGER
72               The leading dimension of the array X. LDX >= M.
73
74       Y       (output) DOUBLE PRECISION array, dimension (LDY,NB)
75               The  n-by-nb  matrix Y required to update the unreduced part of
76               A.
77
78       LDY     (input) INTEGER
79               The leading dimension of the array Y. LDY >= N.
80

FURTHER DETAILS

82       The matrices Q and P are represented as products of elementary  reflec‐
83       tors:
84          Q  = H(1) H(2) . . . H(nb)  and  P = G(1) G(2) . . . G(nb) Each H(i)
85       and G(i) has the form:
86          H(i) = I - tauq * v * v'  and G(i) = I - taup * u *  u'  where  tauq
87       and  taup  are  real scalars, and v and u are real vectors.  If m >= n,
88       v(1:i-1) = 0, v(i) = 1, and v(i:m)  is  stored  on  exit  in  A(i:m,i);
89       u(1:i)  =  0, u(i+1) = 1, and u(i+1:n) is stored on exit in A(i,i+1:n);
90       tauq is stored in TAUQ(i) and taup in TAUP(i).  If m < n, v(1:i)  =  0,
91       v(i+1) = 1, and v(i+1:m) is stored on exit in A(i+2:m,i); u(1:i-1) = 0,
92       u(i) = 1, and u(i:n) is stored on exit in A(i,i+1:n); tauq is stored in
93       TAUQ(i)  and  taup  in  TAUP(i).   The  elements of the vectors v and u
94       together form the m-by-nb matrix V and the nb-by-n matrix U' which  are
95       needed, with X and Y, to apply the transformation to the unreduced part
96       of the matrix, using a block update of the form:  A := A - V*Y' - X*U'.
97       The contents of A on exit are illustrated  by  the  following  examples
98       with nb = 2:
99       m = 6 and n = 5 (m > n):          m = 5 and n = 6 (m < n):
100         (  1   1   u1  u1  u1 )           (  1   u1  u1  u1  u1  u1 )
101         (  v1  1   1   u2  u2 )           (  1   1   u2  u2  u2  u2 )
102         (  v1  v2  a   a   a  )           (  v1  1   a   a   a   a  )
103         (  v1  v2  a   a   a  )           (  v1  v2  a   a   a   a  )
104         (  v1  v2  a   a   a  )           (  v1  v2  a   a   a   a  )
105         (  v1  v2  a   a   a  )
106       where  a  denotes an element of the original matrix which is unchanged,
107       vi denotes an element of the vector defining H(i), and ui an element of
108       the vector defining G(i).
109
110
111
112 LAPACK auxiliary routine (versionNo3v.e2m)ber 2008                       DLABRD(1)
Impressum