PROPACK Version 1.1

  This directory contains a Fortran version of the PROPACK software
for computing the singular values and singular vectors of a large and
sparse or structured matrix using implicitly restarted Lanczos
bidiagonalization with partial reorthogonalization. The main driver
routine is found in "dlansvd_irl.f", which also contains a description
of the input parameters. The library also contains a version of the
algorithm without implicit restarting, which can be found in the file
"dlansvd.f".


INSTALLATION

  To install the software, follow the steps below:

1. Uncompress and untar the files using 

% gunzip PROPACK77.tar.gz
% tar xvf PROPACK77.tar

2. Edit the make.<plat> file in the PROPACK/Make directory where
<plat> corresponds to your platform. Currently makefiles for <plat> =
{ linux_gcc | linuc_intel | sgi | sun } are available.  In particular
you need to set the variables LINKFLAGS, LAPACK and BLAS such that the
LAPACK and BLAS libraries installed on your machine are linked
correctly(*see note below*).  You can also set various flags passed to
the compiler and linker. After you have done this, type

% make <plat>

in the PROPACK directory. If you wish to add a new platform, 'ibm'
say, write a new make.ibm file in PROPACK/Make and make the necessary
addition to PROPACK/Makefile.

3. Build the libraries by typing

% make lib

This will build a library libpro_<PLAT>.a, where PLAT is the platform
name specified in make.inc. To use the PROPACK routines, link your
program with libpro_<PLAT>.a and the LAPACK and BLAS libraries on your
machine. Since PROPACK uses the Divide-and-Conquer bidiagonal SVD
routine DBDSDC from LAPACK 3.0 and some systems might still have
LAPACK 2.0 installed, the LAPACK routines needed for DBDSDC are
provided in the directory DC. The command "make lib" also creates the
library libDC_<PLAT>.a, which should be used on systems with older
LAPACK (2.0) libraries.


EXAMPLE PROGRAMS

  Two example program "example.f" and "example_irl.f" are provided in
the directory Examples.  Build and run them by typing

% cd Examples
% make 
% example.x < example.in
% example_irl.x < example.in

The example programs read in a matrix stored in Harwell-Boeing format
from a file and computes a number of singular values as specified in
the input file. A test matrix from the Harwell-Boeing collection is
provided in the file "illc1850.rra". For more test matrices see, e.g.,
the Matrix Market website, http://math.nist.gov/MatrixMarket. The
output produced by the example programs, compiled with the GCC 3.2.3
compiler on a Linux workstation with a Pentium 4 processor, is
provided in the files "example.out" and "example_irl.out".


OBTAINING LAPACK AND BLAS LIBRARIES
  If your machine does not have these libraries installed, they are
freely available from the Netlib software repository at
http://www.netlib.org/lapack and http://www.netlib.org/blas
respectively. A set of fast BLAS routines optimized for various
platforms are available from the website of the ATLAS project, see
http://www.netlib.org/atlas/. Another set of very fast BLAS routines,
produced by Kazushige Goto (UT-Austin and the Japan Patent Office), is
available here: http://www.cs.utexas.edu/users/flame/goto.

CONTACT INFORMATION 
  Questions and comments about PROPACK are welcome and should be
directed to:

Rasmus Munk Larsen      
W.W. Experimental Physics Laboratory, Annex A206
Stanford University,  Stanford, CA 94305-4085
E-mail: rmunk@quake.stanford.edu 

* NOTE: If you are using the Intel compiler or the Intel Math Kernel
Library (tm), please consult read the section "Known problems" in the
Changelog file for some hints on achieving the best performance and
correct results.
