ANFFT version 0.1
=================

ANFFT is an FFT package for Python, based on FFTW.  It provides a means to
perform multi-threaded, self-tuning FFTs via the following high-level
functions, similar to those found in NumPy and SciPy:

    * fft, ifft, fftn, ifftn        (real/complex -> complex and inverse)
    * rfft, irfft, rfftn, irfftn    (real->complex and complex->real)

How it works
------------

ANFFT is intended to be used in situations where large numbers of expensive
FFTs must be performed, and for which the speed of the built-in NumPy or SciPy
functions has been found insufficient.

By default, ANFFT provides immediate results by using FFTW's "estimate" mode,
which does not require tuning and is still very fast. However, each high-level
function provides a keyword named "measure" which will invoke the full
FFTW planning machinery. FFTW will investigate which implementations are
fastest on your hardware for the given problem size, and ANFFT will
transparently cache this information to speed up later transforms on arrays
of the same size and type.  Accummulated FFTW "wisdom" about which methods
work best is stored across Python sessions in a dotfile.  

Limitations
-----------

In order to maximize speed, ANFFT performs transforms only over the last *n*
fastest-varying dimensions.  There are no "axis" or "axes" keywords, only
(for fftn and friends) the rank of the desired transform.  It also does not
perform zero padding.  Real-to-real transforms (DCT/DST), and inplace
transforms are not implemented at this time.

Download and Installation
-------------------------

Available for UNIX platforms; install via setup.py or easy_install. Does
NOT require a C compiler. Downloads and docs are at:

    http://anfft.googlecode.com.

Requires a shared-library build of FFTW (threaded or non-threaded).  Both
the single and double precision libraries must be available.

At runtime, if your FFTW libraries are somewhere the dynamic linker can't
find them, set the environment variable FFTW_PATH to the directory
containing the .so files.

Contact:  Andrew Collette <andrew dot collette at gmail dot com>

ANFFT is licensed under the GNU GPL (version 3).



