Singular Value Decomposition of a Complex Matrix

TOMS358 is a FORTRAN77 library which implements ACM TOMS algorithm 358, which computes the singular value decomposition of a complex matrix.

The text of many ACM TOMS algorithms is available online through ACM: or NETLIB:


TOMS358 is available in a FORTRAN77 version and a FORTRAN90 version.

Related Data and Programs:

LAPACK_EXAMPLES, a FORTRAN90 program which demonstrates the use of the LAPACK linear algebra library.

SVD_BASIS, a FORTRAN90 program which computes a reduced basis for a collection of data vectors using the SVD.

TOMS581, a FORTRAN77 library which implements an improved algorithm for computing the singular value decomposition (SVD) of a rectangular matrix; this is ACM TOMS algorithm 581, by Tony Chan.


  1. Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford, James Demmel, Jack Dongarra, Jeremy DuCroz, Anne Greenbaum, Sven Hammarling, Alan McKenney, Danny Sorensen,
    LAPACK User's Guide,
    Third Edition,
    SIAM, 1999,
    ISBN: 0898714478,
    LC: QA76.73.F25L36.
  2. Peter Businger, Gene Golub,
    Algorithm 358: Singular Value Decomposition of a Complex Matrix,
    Communications of the ACM,
    Volume 12, Number 10, October 1969, pages 564-565.
  3. Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
    LINPACK User's Guide,
    SIAM, 1979,
    ISBN13: 978-0-898711-72-1,
    LC: QA214.L56.
  4. Gene Golub, Charles VanLoan,
    Matrix Computations, Third Edition,
    Johns Hopkins, 1996,
    ISBN: 0-8018-4513-X,
    LC: QA188.G65.
  5. Lloyd Trefethen, David Bau,
    Numerical Linear Algebra,
    SIAM, 1997,
    ISBN: 0-89871-361-7,
    LC: QA184.T74.

Source Code:

Examples and Tests:

The example program calls CSVD for several matrices; it compares the results to those obtained by the LINPACK routine CSVDC, whose source is included in the calling program.

List of Routines:

You can go up one level to the FORTRAN77 source codes.

Last revised on 03 May 2007.