### slaSvd -

### SYNOPSYS

double rms()

### PARAMETERS

### DESCRIPTION

Singular value decomposition.
(double precision)
This routine expresses a given matrix a as the product of

#### three matrices u, w, v

a = u x w x vt

#### where

a is any m (rows) x n (columns) matrix, where m >= n
u is an m x n column-orthogonal matrix
w is an n x n diagonal matrix with w(i,i) >= 0
vt is the transpose of an n x n orthogonal matrix
Note that m and n, above, are the logical dimensions of the
matrices and vectors concerned, which can be located in
arrays of larger physical dimensions, given by mp and np.

#### Given

m,n int numbers of rows and columns in matrix a
mp,np int physical dimensions of the array containing a
a double[mp][np] array containing m x n matrix a

#### Returned

a double[mp][np] array containing m x n column-orthogonal matrix u
w double[n] n x n diagonal matrix w (diagonal elements only)
v double[np][np] array containing n x n orthogonal matrix v
work double[n] workspace
*jstat int 0 = OK
-1 = the a array is the wrong shape
>0 = 1 + index of w for which convergence failed.
(n.b. v contains matrix v, not the transpose of matrix v)

#### References

The algorithm is an adaptation of the routine SVD in the EISPACK
library (Garbow et al 1977, Eispack guide extension, Springer
Verlag), which is a Fortran 66 implementation of the Algol
routine SVD of Wilkinson & Reinsch 1971 (Handbook for Automatic
Computation, vol 2, Ed Bauer et al, Springer Verlag). For the
non-specialist, probably the clearest general account of the use
of SVD in least squares problems is given in Numerical Recipes
(Press et al 1986, Cambridge University Press).
From slamac.h: TRUE, FALSE
P.T.Wallace Starlink 22 December 1993

### SEE ALSO