.help svd Jun99 "Slalib Package" .nf SUBROUTINE slSVD (M, N, MP, NP, A, W, V, WORK, JSTAT) - - - - S V D - - - - 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.GE.N U is an M x N column-orthogonal matrix W is an N x N diagonal matrix with W(I,I).GE.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 i numbers of rows and columns in matrix A MP,NP i physical dimensions of array containing matrix A A d(MP,NP) array containing MxN matrix A Returned: A d(MP,NP) array containing MxN column-orthogonal matrix U W d(N) NxN diagonal matrix W (diagonal elements only) V d(NP,NP) array containing NxN orthogonal matrix V WORK d(N) workspace JSTAT i 0 = OK, -1 = A wrong shape, >0 = index of W for which convergence failed. See note 2, below. Notes: 1) V contains matrix V, not the transpose of matrix V. 2) If the status JSTAT is greater than zero, this need not necessarily be treated as a failure. It means that, due to chance properties of the matrix A, the QR transformation phase of the routine did not fully converge in a predefined number of iterations, something that very seldom occurs. When this condition does arise, it is possible that the elements of the diagonal matrix W have not been correctly found. However, in practice the results are likely to be trustworthy. Applications should report the condition as a warning, but then proceed normally. 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). These references give full details of the algorithm used here. A good account of the use of SVD in least squares problems is given in Numerical Recipes (Press et al 1986, Cambridge University Press), which includes another variant of the EISPACK code. P.T.Wallace Starlink 22 December 1993 Copyright (C) 1995 Rutherford Appleton Laboratory Copyright (C) 1995 Association of Universities for Research in Astronomy Inc. .fi .endhelp