slasdq(3)
NAME
- SLASDQ - compute the singular value decomposition (SVD) of
- a real (upper or lower) bidiagonal matrix with diagonal D and
- offdiagonal E, accumulating the transformations if desired
SYNOPSIS
SUBROUTINE SLASDQ( UPLO, SQRE, N, NCVT, NRU, NCC, D, E,
VT, LDVT, U, LDU, C, LDC, WORK, INFO )
CHARACTER UPLO
INTEGER INFO, LDC, LDU, LDVT, N, NCC, NCVT,
NRU, SQRE
REAL C( LDC, * ), D( * ), E( * ), U( LDU, *
), VT( LDVT, * ), WORK( * )
PURPOSE
- SLASDQ computes the singular value decomposition (SVD) of
- a real (upper or lower) bidiagonal matrix with diagonal D and
- offdiagonal E, accumulating the transformations if desired. Let
- ting B denote the input bidiagonal matrix, the algorithm computes
- orthogonal matrices Q and P such that B = Q * S * P' (P' denotes
- the transpose of P). The singular values S are overwritten on D.
- The input matrix U is changed to U * Q if desired.
The input matrix VT is changed to P' * VT if desired.
The input matrix C is changed to Q' * C if desired.
- See "Computing Small Singular Values of Bidiagonal Matri
- ces With Guaranteed High Relative Accuracy," by J. Demmel and W.
- Kahan, LAPACK Working Note #3, for a detailed description of the
- algorithm.
ARGUMENTS
- UPLO (input) CHARACTER*1
- On entry, UPLO specifies whether the input bidiago
- nal matrix is upper or lower bidiagonal, and wether it is square
- are not. UPLO = 'U' or 'u' B is upper bidiagonal. UPLO = 'L'
- or 'l' B is lower bidiagonal.
- SQRE (input) INTEGER
- = 0: then the input matrix is N-by-N.
= 1: then the input matrix is N-by-(N+1) if UPLU =
- 'U' and (N+1)-by-N if UPLU = 'L'.
- The bidiagonal matrix has N = NL + NR + 1 rows and M
- = N + SQRE >= N columns.
- N (input) INTEGER
- On entry, N specifies the number of rows and columns
- in the matrix. N must be at least 0.
- NCVT (input) INTEGER
- On entry, NCVT specifies the number of columns of
- the matrix VT. NCVT must be at least 0.
- NRU (input) INTEGER
- On entry, NRU specifies the number of rows of the
- matrix U. NRU must be at least 0.
- NCC (input) INTEGER
- On entry, NCC specifies the number of columns of the
- matrix C. NCC must be at least 0.
- D (input/output) REAL array, dimension (N)
- On entry, D contains the diagonal entries of the
- bidiagonal matrix whose SVD is desired. On normal exit, D con
- tains the singular values in ascending order.
- E (input/output) REAL array.
- dimension is (N-1) if SQRE = 0 and N if SQRE = 1.
- On entry, the entries of E contain the offdiagonal entries of the
- bidiagonal matrix whose SVD is desired. On normal exit, E will
- contain 0. If the algorithm does not converge, D and E will con
- tain the diagonal and superdiagonal entries of a bidiagonal ma
- trix orthogonally equivalent to the one given as input.
- VT (input/output) REAL array, dimension (LDVT, NCVT)
- On entry, contains a matrix which on exit has been
- premultiplied by P', dimension N-by-NCVT if SQRE = 0 and
- (N+1)-by-NCVT if SQRE = 1 (not referenced if NCVT=0).
- LDVT (input) INTEGER
- On entry, LDVT specifies the leading dimension of VT
- as declared in the calling (sub) program. LDVT must be at least
- 1. If NCVT is nonzero LDVT must also be at least N.
- U (input/output) REAL array, dimension (LDU, N)
- On entry, contains a matrix which on exit has been
- postmultiplied by Q, dimension NRU-by-N if SQRE = 0 and NRU
- by-(N+1) if SQRE = 1 (not referenced if NRU=0).
- LDU (input) INTEGER
- On entry, LDU specifies the leading dimension of U
- as declared in the calling (sub) program. LDU must be at least
- max( 1, NRU ) .
- C (input/output) REAL array, dimension (LDC, NCC)
- On entry, contains an N-by-NCC matrix which on exit
- has been premultiplied by Q' dimension N-by-NCC if SQRE = 0 and
- (N+1)-by-NCC if SQRE = 1 (not referenced if NCC=0).
- LDC (input) INTEGER
- On entry, LDC specifies the leading dimension of C
- as declared in the calling (sub) program. LDC must be at least 1.
- If NCC is nonzero, LDC must also be at least N.
- WORK (workspace) REAL array, dimension (4*N)
- Workspace. Only referenced if one of NCVT, NRU, or
- NCC is nonzero, and if N is at least 2.
- INFO (output) INTEGER
- On exit, a value of 0 indicates a successful exit.
- If INFO < 0, argument number -INFO is illegal. If INFO > 0, the
- algorithm did not converge, and INFO specifies how many super
- diagonals did not converge.
FURTHER DETAILS
- Based on contributions by
- Ming Gu and Huan Ren, Computer Science Division, Uni
- versity of
California at Berkeley, USA
- LAPACK version 3.0 15 June 2000