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

NAME

6       CGEBD2  -  reduces  a complex general m by n matrix A to upper or lower
7       real bidiagonal form B by a unitary transformation
8

SYNOPSIS

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

PURPOSE

19       CGEBD2 reduces a complex general m by n matrix A to upper or lower real
20       bidiagonal form B by a unitary transformation: Q' * 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) COMPLEX array, dimension
62               (max(M,N))
63
64       INFO    (output) INTEGER
65               = 0: successful exit
66               < 0: if INFO = -i, the i-th argument had an illegal value.
67

FURTHER DETAILS

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