1ZGEBRD(1) LAPACK routine (version 3.2) ZGEBRD(1)
2
3
4
6 ZGEBRD - reduces a general complex M-by-N matrix A to upper or lower
7 bidiagonal form B by a unitary transformation
8
10 SUBROUTINE ZGEBRD( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK, INFO )
11
12 INTEGER INFO, LDA, LWORK, M, N
13
14 DOUBLE PRECISION D( * ), E( * )
15
16 COMPLEX*16 A( LDA, * ), TAUP( * ), TAUQ( * ), WORK( * )
17
19 ZGEBRD 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
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*16 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) DOUBLE PRECISION array, dimension (min(M,N))
48 The diagonal elements of the bidiagonal matrix B: D(i) =
49 A(i,i).
50
51 E (output) DOUBLE PRECISION 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*16 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*16 array, dimension (min(M,N)) The scalar factors of
60 the elementary reflectors which represent the unitary matrix P.
61 See Further Details. WORK (workspace/output) COMPLEX*16
62 array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK(1)
63 returns 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
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 ZGEBRD(1)