zlalsd(3)
NAME
- ZLALSD - use the singular value decomposition of A to
- solve the least squares problem of finding X to minimize the Eu
- clidean norm of each column of A*X-B, where A is N-by-N upper
- bidiagonal, and X and B are N-by-NRHS
SYNOPSIS
SUBROUTINE ZLALSD( UPLO, SMLSIZ, N, NRHS, D, E, B, LDB,
RCOND, RANK, WORK, RWORK, IWORK, INFO )
CHARACTER UPLO
INTEGER INFO, LDB, N, NRHS, RANK, SMLSIZ
DOUBLE PRECISION RCOND
INTEGER IWORK( * )
DOUBLE PRECISION D( * ), E( * ), RWORK( * )
COMPLEX*16 B( LDB, * ), WORK( * )
PURPOSE
- ZLALSD uses the singular value decomposition of A to solve
- the least squares problem of finding X to minimize the Euclidean
- norm of each column of A*X-B, where A is N-by-N upper bidiagonal,
- and X and B are N-by-NRHS. The solution X overwrites B. The sin
- gular values of A smaller than RCOND times the largest singular
- value are treated as zero in solving the least squares problem;
- in this case a minimum norm solution is returned. The actual
- singular values are returned in D in ascending order.
- This code makes very mild assumptions about floating point
- arithmetic. It will work on machines with a guard digit in
- add/subtract, or on those binary machines without guard digits
- which subtract like the Cray XMP, Cray YMP, Cray C 90, or Cray 2.
- It could conceivably fail on hexadecimal or decimal machines
- without guard digits, but we know of none.
ARGUMENTS
- UPLO (input) CHARACTER*1
- = 'U': D and E define an upper bidiagonal matrix.
= 'L': D and E define a lower bidiagonal matrix.
- SMLSIZ (input) INTEGER The maximum size of the sub
- problems at the bottom of the computation tree.
- N (input) INTEGER
- The dimension of the bidiagonal matrix. N >= 0.
- NRHS (input) INTEGER
- The number of columns of B. NRHS must be at least
- 1.
- D (input/output) DOUBLE PRECISION array, dimension
- (N)
- On entry D contains the main diagonal of the bidi
- agonal matrix. On exit, if INFO = 0, D contains its singular val
- ues.
- E (input) DOUBLE PRECISION array, dimension (N-1)
- Contains the super-diagonal entries of the bidiago
- nal matrix. On exit, E has been destroyed.
- B (input/output) COMPLEX*16 array, dimension
- (LDB,NRHS)
- On input, B contains the right hand sides of the
- least squares problem. On output, B contains the solution X.
- LDB (input) INTEGER
- The leading dimension of B in the calling subpro
- gram. LDB must be at least max(1,N).
- RCOND (input) DOUBLE PRECISION
- The singular values of A less than or equal to
- RCOND times the largest singular value are treated as zero in
- solving the least squares problem. If RCOND is negative, machine
- precision is used instead. For example, if diag(S)*X=B were the
- least squares problem, where diag(S) is a diagonal matrix of sin
- gular values, the solution would be X(i) = B(i) / S(i) if S(i) is
- greater than RCOND*max(S), and X(i) = 0 if S(i) is less than or
- equal to RCOND*max(S).
- RANK (output) INTEGER
- The number of singular values of A greater than
- RCOND times the largest singular value.
- WORK (workspace) COMPLEX*16 array, dimension at least
- (N * NRHS).
- RWORK (workspace) DOUBLE PRECISION array, dimension at
- least
- (9*N + 2*N*SMLSIZ + 8*N*NLVL + 3*SMLSIZ*NRHS +
- (SMLSIZ+1)**2), where NLVL = MAX( 0, INT( LOG_2( MIN( M,N )/(SML
- SIZ+1) ) ) + 1 )
- IWORK (workspace) INTEGER array, dimension at least
- (3*N*NLVL + 11*N).
- INFO (output) INTEGER
- = 0: successful exit.
< 0: if INFO = -i, the i-th argument had an ille
- gal value.
> 0: The algorithm failed to compute an singular
- value while working on the submatrix lying in rows and columns
- INFO/(N+1) through MOD(INFO,N+1).
FURTHER DETAILS
- Based on contributions by
- Ming Gu and Ren-Cang Li, Computer Science Division,
- University of
California at Berkeley, USA
- Osni Marques, LBNL/NERSC, USA
- LAPACK version 3.0 15 June 2000