cgebrd(3)
NAME
- CGEBRD - reduce a general complex M-by-N matrix A to upper
- or lower bidiagonal form B by a unitary transformation
SYNOPSIS
SUBROUTINE CGEBRD( M, N, A, LDA, D, E, TAUQ, TAUP, WORK,
LWORK, INFO )
INTEGER INFO, LDA, LWORK, M, N
REAL D( * ), E( * )
COMPLEX A( LDA, * ), TAUP( * ), TAUQ( * ),
WORK( * )
PURPOSE
- CGEBRD reduces a general complex M-by-N matrix A to upper
- or lower bidiagonal form B by a unitary transformation: Q**H * A
- * P = B. If m >= n, B is upper bidiagonal; if m < n, B is lower
- bidiagonal.
ARGUMENTS
- M (input) INTEGER
- The number of rows in the matrix A. M >= 0.
- N (input) INTEGER
- The number of columns in the matrix A. N >= 0.
- A (input/output) COMPLEX array, dimension (LDA,N)
- On entry, the M-by-N general matrix to be reduced.
- On exit, if m >= n, the diagonal and the first superdiagonal are
- overwritten with the upper bidiagonal matrix B; the elements be
- low the diagonal, with the array TAUQ, represent the unitary ma
- trix Q as a product of elementary reflectors, and the elements
- above the first superdiagonal, with the array TAUP, represent the
- unitary matrix P as a product of elementary reflectors; if m < n,
- the diagonal and the first subdiagonal are overwritten with the
- lower bidiagonal matrix B; the elements below the first subdiago
- nal, with the array TAUQ, represent the unitary matrix Q as a
- product of elementary reflectors, and the elements above the di
- agonal, with the array TAUP, represent the unitary matrix P as a
- product of elementary reflectors. See Further Details. LDA
- (input) INTEGER The leading dimension of the array A. LDA >=
- max(1,M).
- D (output) REAL array, dimension (min(M,N))
- The diagonal elements of the bidiagonal matrix B:
- D(i) = A(i,i).
- E (output) REAL array, dimension (min(M,N)-1)
- The off-diagonal elements of the bidiagonal matrix
- B: if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; if m < n, E(i)
- = A(i+1,i) for i = 1,2,...,m-1.
- TAUQ (output) COMPLEX array dimension (min(M,N))
- The scalar factors of the elementary reflectors
- which represent the unitary matrix Q. See Further Details. TAUP
- (output) COMPLEX array, dimension (min(M,N)) The scalar factors
- of the elementary reflectors which represent the unitary matrix
- P. See Further Details. WORK (workspace/output) COMPLEX ar
- ray, dimension (LWORK) On exit, if INFO = 0, WORK(1) returns the
- optimal LWORK.
- LWORK (input) INTEGER
- The length of the array WORK. LWORK >=
- max(1,M,N). For optimum performance LWORK >= (M+N)*NB, where NB
- is the optimal blocksize.
- If LWORK = -1, then a workspace query is assumed;
- the routine only calculates the optimal size of the WORK array,
- returns this value as the first entry of the WORK array, and no
- error message related to LWORK is issued by XERBLA.
- INFO (output) INTEGER
- = 0: successful exit.
< 0: if INFO = -i, the i-th argument had an ille
- gal value.
FURTHER DETAILS
- The matrices Q and P are represented as products of ele
- mentary reflectors:
- If m >= n,
Q = H(1) H(2) . . . H(n) and P = G(1) G(2) . . .
- G(n-1)
- Each H(i) and G(i) has the form:
H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
- where tauq and taup are complex scalars, and v and u are
- complex vectors; v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored
- on exit in A(i+1:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is
- stored on exit in A(i,i+2:n); tauq is stored in TAUQ(i) and taup
- in TAUP(i).
- If m < n,
Q = H(1) H(2) . . . H(m-1) and P = G(1) G(2) . . .
- G(m)
- Each H(i) and G(i) has the form:
H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
- where tauq and taup are complex scalars, and v and u are
- complex vectors; v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored
- on exit in A(i+2:m,i); u(1:i-1) = 0, u(i) = 1, and u(i+1:n) is
- stored on exit in A(i,i+1:n); tauq is stored in TAUQ(i) and taup
- in TAUP(i).
- The contents of A on exit are illustrated by the following
- examples:
- m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
( d e u1 u1 u1 ) ( d u1 u1 u1 u1
- u1 )
( v1 d e u2 u2 ) ( e d u2 u2 u2
- u2 )
( v1 v2 d e u3 ) ( v1 e d u3 u3
- u3 )
( v1 v2 v3 d e ) ( v1 v2 e d u4
- u4 )
( v1 v2 v3 v4 d ) ( v1 v2 v3 e d
- u5 )
( v1 v2 v3 v4 v5 )
- where d and e denote diagonal and off-diagonal elements of
- B, vi denotes an element of the vector defining H(i), and ui an
- element of the vector defining G(i).
- LAPACK version 3.0 15 June 2000