1CGEBRD(1)                LAPACK routine (version 3.2)                CGEBRD(1)
2
3
4

NAME

6       CGEBRD  -  reduces  a general complex M-by-N matrix A to upper or lower
7       bidiagonal form B by a unitary transformation
8

SYNOPSIS

10       SUBROUTINE CGEBRD( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK, INFO )
11
12           INTEGER        INFO, LDA, LWORK, M, N
13
14           REAL           D( * ), E( * )
15
16           COMPLEX        A( LDA, * ), TAUP( * ), TAUQ( * ), WORK( * )
17

PURPOSE

19       CGEBRD reduces a general complex M-by-N matrix  A  to  upper  or  lower
20       bidiagonal  form B by a unitary transformation: Q**H * A * P = B.  If m
21       >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.
22

ARGUMENTS

24       M       (input) INTEGER
25               The number of rows in the matrix A.  M >= 0.
26
27       N       (input) INTEGER
28               The number of columns in the matrix A.  N >= 0.
29
30       A       (input/output) COMPLEX array, dimension (LDA,N)
31               On entry, the M-by-N general matrix to be reduced.  On exit, if
32               m  >= n, the diagonal and the first superdiagonal are overwrit‐
33               ten with the upper bidiagonal matrix B; the elements below  the
34               diagonal,  with  the array TAUQ, represent the unitary matrix Q
35               as a product of elementary reflectors, and the  elements  above
36               the  first  superdiagonal,  with  the array TAUP, represent the
37               unitary matrix P as a product of elementary reflectors; if m  <
38               n,  the diagonal and the first subdiagonal are overwritten with
39               the lower bidiagonal matrix B; the  elements  below  the  first
40               subdiagonal,  with the array TAUQ, represent the unitary matrix
41               Q as a product of elementary reflectors, and the elements above
42               the diagonal, with the array TAUP, represent the unitary matrix
43               P as a product of elementary reflectors.  See Further  Details.
44               LDA      (input)  INTEGER The leading dimension of the array A.
45               LDA >= max(1,M).
46
47       D       (output) REAL array, dimension (min(M,N))
48               The diagonal elements  of  the  bidiagonal  matrix  B:  D(i)  =
49               A(i,i).
50
51       E       (output) REAL array, dimension (min(M,N)-1)
52               The  off-diagonal  elements of the bidiagonal matrix B: if m >=
53               n, E(i) = A(i,i+1) for i =  1,2,...,n-1;  if  m  <  n,  E(i)  =
54               A(i+1,i) for i = 1,2,...,m-1.
55
56       TAUQ    (output) COMPLEX array dimension (min(M,N))
57               The scalar factors of the elementary reflectors which represent
58               the unitary matrix Q. See Further  Details.   TAUP     (output)
59               COMPLEX  array,  dimension (min(M,N)) The scalar factors of the
60               elementary reflectors which represent the unitary matrix P. See
61               Further  Details.   WORK     (workspace/output)  COMPLEX array,
62               dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK(1)  returns
63               the optimal LWORK.
64
65       LWORK   (input) INTEGER
66               The  length of the array WORK.  LWORK >= max(1,M,N).  For opti‐
67               mum performance LWORK >= (M+N)*NB,  where  NB  is  the  optimal
68               blocksize.   If  LWORK = -1, then a workspace query is assumed;
69               the routine only calculates the optimal size of the WORK array,
70               returns this value as the first entry of the WORK array, and no
71               error message related to LWORK is issued by XERBLA.
72
73       INFO    (output) INTEGER
74               = 0:  successful exit.
75               < 0:  if INFO = -i, the i-th argument had an illegal value.
76

FURTHER DETAILS

78       The matrices Q and P are represented as products of elementary  reflec‐
79       tors:
80       If m >= n,
81          Q  = H(1) H(2) . . . H(n)  and  P = G(1) G(2) . . . G(n-1) Each H(i)
82       and G(i) has the form:
83          H(i) = I - tauq * v * v'  and G(i) = I - taup * u *  u'  where  tauq
84       and taup are complex scalars, and v and u are complex vectors; v(1:i-1)
85       = 0, v(i) = 1, and v(i+1:m) is stored on exit in A(i+1:m,i);  u(1:i)  =
86       0,  u(i+1)  =  1, and u(i+2:n) is stored on exit in A(i,i+2:n); tauq is
87       stored in TAUQ(i) and taup in TAUP(i).  If m < n,
88          Q = H(1) H(2) . . . H(m-1)  and  P = G(1) G(2) . . . G(m) Each  H(i)
89       and G(i) has the form:
90          H(i)  =  I  - tauq * v * v'  and G(i) = I - taup * u * u' where tauq
91       and taup are complex scalars, and v and u are complex vectors; v(1:i) =
92       0, v(i+1) = 1, and v(i+2:m) is stored on exit in A(i+2:m,i); u(1:i-1) =
93       0, u(i) = 1, and u(i+1:n) is stored on  exit  in  A(i,i+1:n);  tauq  is
94       stored  in  TAUQ(i) and taup in TAUP(i).  The contents of A on exit are
95       illustrated by the following examples: m =  6  and  n  =  5  (m  >  n):
96       m = 5 and n = 6 (m < n):
97         (  d   e   u1  u1  u1 )           (  d   u1  u1  u1  u1  u1 )
98         (  v1  d   e   u2  u2 )           (  e   d   u2  u2  u2  u2 )
99         (  v1  v2  d   e   u3 )           (  v1  e   d   u3  u3  u3 )
100         (  v1  v2  v3  d   e  )           (  v1  v2  e   d   u4  u4 )
101         (  v1  v2  v3  v4  d  )           (  v1  v2  v3  e   d   u5 )
102         (  v1  v2  v3  v4  v5 )
103       where  d  and  e  denote  diagonal  and  off-diagonal elements of B, vi
104       denotes an element of the vector defining H(i), and ui  an  element  of
105       the vector defining G(i).
106
107
108
109 LAPACK routine (version 3.2)    November 2008                       CGEBRD(1)
Impressum