
SBDSQR(l) ) SBDSQR(l)
NAME
SBDSQR  compute the singular value decomposition (SVD) of a real NbyN (upper or lower)
bidiagonal matrix B
SYNOPSIS
SUBROUTINE SBDSQR( UPLO, 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
REAL C( LDC, * ), D( * ), E( * ), U( LDU, * ), VT( LDVT, * ), WORK( * )
PURPOSE
SBDSQR computes the singular value decomposition (SVD) of a real NbyN (upper or lower)
bidiagonal matrix B: B = Q * S * P' (P' denotes the transpose of P), where S is a diagonal
matrix with nonnegative diagonal elements (the singular values of B), and Q and P are
orthogonal matrices.
The routine computes S, and optionally computes U * Q, P' * VT, or Q' * C, for given real
input matrices U, VT, and C.
See "Computing Small Singular Values of Bidiagonal Matrices With Guaranteed High Relative
Accuracy," by J. Demmel and W. Kahan, LAPACK Working Note #3 (or SIAM J. Sci. Statist.
Comput. vol. 11, no. 5, pp. 873912, Sept 1990) and
"Accurate singular values and differential qd algorithms," by B. Parlett and V. Fernando,
Technical Report CPAM554, Mathematics Department, University of California at Berkeley,
July 1992 for a detailed description of the algorithm.
ARGUMENTS
UPLO (input) CHARACTER*1
= 'U': B is upper bidiagonal;
= 'L': B is lower bidiagonal.
N (input) INTEGER
The order of the matrix B. N >= 0.
NCVT (input) INTEGER
The number of columns of the matrix VT. NCVT >= 0.
NRU (input) INTEGER
The number of rows of the matrix U. NRU >= 0.
NCC (input) INTEGER
The number of columns of the matrix C. NCC >= 0.
D (input/output) REAL array, dimension (N)
On entry, the n diagonal elements of the bidiagonal matrix B. On exit, if INFO=0,
the singular values of B in decreasing order.
E (input/output) REAL array, dimension (N)
On entry, the elements of E contain the offdiagonal elements of the bidiagonal
matrix whose SVD is desired. On normal exit (INFO = 0), E is destroyed. If the
algorithm does not converge (INFO > 0), D and E will contain the diagonal and
superdiagonal elements of a bidiagonal matrix orthogonally equivalent to the one
given as input. E(N) is used for workspace.
VT (input/output) REAL array, dimension (LDVT, NCVT)
On entry, an NbyNCVT matrix VT. On exit, VT is overwritten by P' * VT. VT is
not referenced if NCVT = 0.
LDVT (input) INTEGER
The leading dimension of the array VT. LDVT >= max(1,N) if NCVT > 0; LDVT >= 1 if
NCVT = 0.
U (input/output) REAL array, dimension (LDU, N)
On entry, an NRUbyN matrix U. On exit, U is overwritten by U * Q. U is not
referenced if NRU = 0.
LDU (input) INTEGER
The leading dimension of the array U. LDU >= max(1,NRU).
C (input/output) REAL array, dimension (LDC, NCC)
On entry, an NbyNCC matrix C. On exit, C is overwritten by Q' * C. C is not
referenced if NCC = 0.
LDC (input) INTEGER
The leading dimension of the array C. LDC >= max(1,N) if NCC > 0; LDC >=1 if NCC
= 0.
WORK (workspace) REAL array, dimension (4*N)
INFO (output) INTEGER
= 0: successful exit
< 0: If INFO = i, the ith argument had an illegal value
> 0: the algorithm did not converge; D and E contain the elements of a bidiagonal
matrix which is orthogonally similar to the input matrix B; if INFO = i, i ele
ments of E have not converged to zero.
PARAMETERS
TOLMUL REAL, default = max(10,min(100,EPS**(1/8)))
TOLMUL controls the convergence criterion of the QR loop. If it is positive, TOL
MUL*EPS is the desired relative precision in the computed singular values. If it
is negative, abs(TOLMUL*EPS*sigma_max) is the desired absolute accuracy in the
computed singular values (corresponds to relative accuracy abs(TOLMUL*EPS) in the
largest singular value. abs(TOLMUL) should be between 1 and 1/EPS, and preferably
between 10 (for fast convergence) and .1/EPS (for there to be some accuracy in the
results). Default is to lose at either one eighth or 2 of the available decimal
digits in each computed singular value (whichever is smaller).
MAXITR INTEGER, default = 6
MAXITR controls the maximum number of passes of the algorithm through its inner
loop. The algorithms stops (and so fails to converge) if the number of passes
through the inner loop exceeds MAXITR*N**2.
LAPACK version 3.0 15 June 2000 SBDSQR(l) 
