Author: Jochen Küpper
Keywords: numeric, scientific, python, extension, module, GNU, library

# PyGSL: Python interface for GNU Scientific Library

## Status of GSL-Library:

The gsl-library is since version 1.0 stable and for general use. Read more about it at the GSL homepage.

## Status of this interface:

We are collecting implementations of parts of gsl. So the interface is not complete. We are looking forward to contributions of new submodules, while maintaining the awailabel code.

## Requirements:

To build the interface, you will need

- gsl-1.2 or better,
- python2.2 or better and
- NumPy, and
- a ANSI C compiler (i.e. gcc).

## Retrieving the Interface:

You can download pygsl at http://pygsl.sourceforge.net

## Installing GSL interface:

Uninstall the old version of pygsl

`gsl-config` must be on your path

`gzip -d -c pygsl-x.y.z.tar.gz|tar xvf-`
`cd pygsl-x.y.z`
`#do this with your prefered python version`
`#to set the gsl location explicitly use setup.py --gsl-prefix=/path/to/gsl`
`#If your are using cvs, remove your build directory.`
`python setup.py build`
`# change to a id, that is allowed to do installation`
`python setup.py install`

Ready....

## Using pygsl

Do NOT test the interface in the distribution root directory! -- please install it first and then change to the tests directory and execute `python run_test.py` If you want to execute it in the distribution root directory, please run python setup.py build_ext -i first! It will put the requried binary files into the pygsl directory.

Just write in python
`import pygsl.sf`
`print "%g+/-%g"%pygsl.sf.erf(1)`

or
`import pygsl.rng`
`rng=pygsl.rng.rng()`
`print rng.gaussian(1.0)`

You may set the environment variable `LD_LIBRARY_PATH` to find the gsl shared object.

## Uninstall GSL interface:

`rm -r` "python install path"`/lib/python`"version"`/site-packages/pygsl`

## Supported Platforms:

- Linux (Redhat 8/SuSE) with python2.* and gsl-1.3
- Debian stable/testing with python2.3 and gsl-1.4

## Testing:

The directory `test` will contain several testsuites, based on python `unittest`. Change to this directory to run the tests.

## What is implemented (versus gsl1.4):

- Blas
- Chebyshev
- Combination
- Const
- Diff
- Eigen
- Fit
- Ieee
- Integrate
- Interpolation
- Linalg
- Math
- Minimize
- Multifit
- Multifit_nlin
- Multimin
- Multiroots
- Odeiv
- Permutation
- Poly
- Qrng
- Rng
- Roots
- Siman
- Sf
- Spline
- Statistics

## What is not implemented yet (versus gsl1.4):

- GSL Capabilites not yet wrapped by PyGSL
  - Sorting
  - N-tuples
- GSL Capabilites partly implemented
  - Series Acceleration
  - Discrete Hankel Transforms
- PyGSL related Capabilites
  - Blas Memory handling

See also the TODO file in the distribution.

For the exact function volume for a module, please type:

`import pygsl.sf`
`dir(pygsl.sf)`

You can do this with the other modules, too. The naming scheme is the same as in gsl.

## Documentation:

There will be a small reference, but the function reference can be found in the doc strings and at the gsl-reference. See also the "examples" directory.

## Support:

Please send mails to the pygsl mailinglist.

## Developement:

You can browse our cvs tree.

Type this to check out the actual version:
`cvs -d:pserver:anonymous@cvs.pygsl.sourceforge.net:/cvsroot/pygsl login`
Hit return for no password.
`cvs -z3 -d:pserver:anonymous@cvs.pygsl.sourceforge.net:/cvsroot/pygsl co pygsl`

The script `tools/extract_tool.py` generates most of the special function code.

## ToDo:

See TODO.

## History:

- a gsl-interface for python was needed for a project at center for applied informatics cologne.
- pygsl-0.0.3 was released at May 23, 2001
- pygsl-0.0.4 was released at January 8, 2002
- pygsl-0.1a was released at August 27, 2002
- pygsl-0.1b was released at , 2003

## Thanks:

- Fabian Jakobs for blas, linalg and eigen
- Jochen Küpper for pygsl.statistics functions
- Leonardo Milano for rpm build support and test

## Maintainers:

PyGSL is currently maintained by Achim Gaedke and Pierre Schnizer.