PROPACK Version 1.2, January 2004

  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 Lanczos bidiagonalization and
partial reorthogonalization, with or without implicit restarting. The
main driver routines DLANSVD and DLANSVD_IRL are found in "dlansvd.f"
and "dlansvd_irl.f", which also contain descriptions of the input
parameters. 


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_ia32 | linux_icc_ia32 | linux_gcc_ia64 | linux_icc_ia64 |
irix | sunos } are available.  In particular you need to set the
variables LINKFLAGS, LINKPATH and BLAS such that the BLAS library
installed on your system is linked correctly (see below). You can also
set various flags passed to the compiler and linker. After you have
done this type

% ./configure

in the PROPACK directory.  On Intel based platforms (ia32 and ia64)
the configure script takes the optional argument "-icc", which will
select the make configuration in make.linux_icc_ia32 and
make.linux_icc_ia64, which uses the Intel icc and ifc/ifort
compilers. If available, the Intel compilers usually generate
significantly faster code than gcc, in particular for the ia64
platform. On the ia32, ia64, and IRIX platforms, the option "-openmp"
to the configure script will cause a multi-threaded (parallel) version
of PROPACK to be built. The parallelization is done using the OpenMP
shared memory programming model (see http://www.openmp.org/), and the
number of threads (processors) used can be selected by setting the
environment variable OMP_NUM_THREADS before running the program.

3. Build the libraries by typing

% make

This will build the libraries libpropack_<PLAT>.a, which contains the
PROPACK routines proper, and liblapack_util_<PLAT>.a, which contains
various LAPACK 3.0 routines called by PROPACK. Here <PLAT> refers to
the platform name specified in make.inc. To use the PROPACK routines,
link your program with libpropack_<PLAT>.a, liblapack_util_<PLAT>.a
and the BLAS library on your system.


EXAMPLE PROGRAMS

  Two example programs "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_irl.in

The example programs read a matrix stored in Harwell-Boeing format
from a file and compute a number of singular values as specified in
the input file. A test matrix from the Harwell-Boeing collection is
provided in the file Examples/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.2 compiler on a Linux workstation with a Pentium 4 processor, is
provided in the files 

  example.out, Sigma_200_illc1850.ascii, U_200_illc1850.bin,
  V_200_illc1850.bin

and

  example_irl.out, Sigma_IRL_200_illc1850.ascii, U_IRL_200_illc1850.bin,
  V_IRL_200_illc1850.bin 

respectively. The example programs can also read matrices stored in
diagonal, coordinate or dense formats (binary or ASCII), which is
useful for, e.g., testing the algorithms with known test matrices
without having to write new code. See Examples/matvec.F for
details. Examples of matrices stored in coordinate and diagonal ASCII
format are provided in Examples/illc1850.coord and
Examples/illc1850.diag.

OBTAINING THE BLAS
  If your system does not already have this library installed, we
recommend using the freely available and very fast version by
Kazushige Goto (UT-Austin and the Japan Patent Office), which can be
downloaded here: http://www.cs.utexas.edu/users/flame/goto. Another
set of fast BLAS routines optimized for various platforms is available
from the ATLAS project at the Netlib software repository, see
http://www.netlib.org/atlas. More information about BLAS as well as
generic (un-optimized) Fortran source code is available at
http://www.netlib.org/blas.

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

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

(C) Rasmus Munk Larsen, Stanford University, January 2004.
