THE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND "WITH ALL
FAULTS". THE AUTHOR MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
CONCERNING THE QUALITY, SAFETY OR SUITABILITY OF THE SOFTWARE, EITHER
EXPRESSED OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
NON-INFRINGEMENT.

Overview
--------

PySparse extends the Python interpreter by a set of sparse matrix
types holding double precision values. PySparse also includes modules
that implement

 - iterative methods for solving linear systems of equations
 - a set of standard preconditioners
 - an interface to a direct solver for sparse linear systems of
   equations (SuperLU)
 - a Jacobi-Davidson eigenvalue solver for the symmetric, generalised
   matrix eigenvalue problem (JDSYM)

All these modules are implemented as C extension modules for maximum
performance.

PySparse uses Numerical Python (NumPy) for handling dense vectors and
matrices and makes use of SuperLU for factorising sparse matrices.

Installation
------------

1. Install Numerical Python

   - Download NumPy from http://www.numpy.org/

     PySparse was tested with NumPy version 1.0
     Pysparse works with both the new "numpy" and the old "Numeric".

   - Unpack and Install the NumPy package

     Refer to the documentation provided in the NumPy package for
     installation hints.

     CAUTION: On 64-bit machines the NumPy distribution will not work
     together with PySparse, since NumPy uses a non-standard datatype
     to store Fortran integers. I have submitted a patch to the NumPy
     developers, that fixes this. Hopefully this patch will be
     incorporated in future releases (> 21.0) of NumPy. Please contact
     me, if you need the 64-bit patch.

2. Customise the setup.py file

   PySparse is needs to link against the BLAS and LAPACK libraries,
   which must be available on your system.

   Set the library_dirs_list, libraries_list, superlu_defs, f77_defs
   variables according to your local configuration. Examples for
   several architectures are provided.

   Change the "use_numpy" flag to False in setup.py when using the old
   "Numeric".

3. Install PySparse

   Run 'python setup.py install' to install PySparse into the default
   directory of your Python installation. Refer to the Python
   documentation, if you have advanced installation needs.

4. Testing

   Testing support is only rudimentary.

   Run the scripts in the Examples directory. Check if the results are
   meaningful :-;

   PySparse was successfully tested on many UNIX brands, including
   Linux, Solaris (SunOS 5.6), Digital UNIX (OSF1 V4.0) and HP-UX
   11.11, and Windows XP.
   PySparse was tested using Python version 2.1 and 2.2.

Documentation
-------------

Some documentation is located in the Doc subdirectory. Alternatively
you can consult the documentation in the source code using the 'pydoc'
utility.


Acknowledgements
----------------

Major parts of this work was done while I was working as a PhD student at

Institute of Scientific Computing
ETH Zentrum
CH-8092 Zurich, Switzerland

and while I was working as a postdoc at

Paul Scherrer Institute
CH-5232 Villigen, Switzerland


I would like thank the developers of the SuperLU and Umfpack
packages. Both SuperLU and Umfpack are incorporated into the PySparse
software distribution.


Contact
-------

For comments, questions, bug reports, etc. contact me by email: roman@geus.ch

Roman Geus
