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

NAME

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

SYNOPSIS

12       SUBROUTINE ZLABRD( 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 D( * ), E( * )
17
18           COMPLEX*16     A( LDA, * ), TAUP( * ), TAUQ( * ), X( LDX, *  ),  Y(
19                          LDY, * )
20

PURPOSE

22       ZLABRD  reduces the first NB rows and columns of a complex general m by
23       n matrix A to upper or lower real bidiagonal form by a  unitary  trans‐
24       formation Q' * A * P, and returns the matrices X and Y which are needed
25       to apply the transformation to the unreduced part of A.  If m >=  n,  A
26       is  reduced  to  upper  bidiagonal  form; if m < n, to lower bidiagonal
27       form.
28       This is an auxiliary routine called by ZGEBRD
29

ARGUMENTS

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

FURTHER DETAILS

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