GNU Scientific Library

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
GNU Scientific Library
Original author(s) Mark Galassi, James Theiler, Brian Gough, Gerard Jungman and many others
Developer(s) GNU Project
Initial release May 1996; 28 years ago (1996-05)
Stable release GSL-2.1 / 11 November 2015; 9 years ago (2015-11-11)
Written in C
Type Numerical library
License GNU General Public License
Website www.gnu.org/software/gsl/

The GNU Scientific Library (or GSL) is a software library for numerical computations in applied mathematics and science. The GSL is written in C; wrappers are available for other programming languages. The GSL is part of the GNU Project[1] and is distributed under the GNU General Public License.

Project History

The GSL project was initiated in 1996 by physicists Mark Galassi and James Theiler of Los Alamos National Laboratory.[2] They aimed at writing a modern replacement for widely used but somewhat outdated Fortran libraries such as Netlib.[3] They carried out the overall design and wrote early modules; with that ready they recruited other scientists to contribute.

The "overall development of the library and the design and implementation of the major modules" was carried out by Brian Gough and Gerard Jungman.[2] Other major contributors were Jim Davies, Reid Priedhorsky, M. Booth, and F. Rossi.[2]

Version 1.0 was released in 2001. The library continues to be actively developed and version 2.1 was released on November 11, 2015.

Example

The following example program calculates the value of the Bessel function for 5:[4]

#include <stdio.h>
#include <gsl/gsl_sf_bessel.h>

int main(void)
{
  double x = 5.0;
  double y = gsl_sf_bessel_J0(x);
  printf("J0(%g) = %.18e\n", x, y);
  return 0;
}

The example program has to be linked to the GSL library upon compilation:

gcc $(gsl-config --cflags) example.c $(gsl-config --libs)

The output is shown below, and should be correct to double-precision accuracy:

J0(5) = -1.775967713143382920e-01

Features

The software library provides facilities for:

Programming language bindings

Since the GSL is written in C, it is straightforward to provide wrappers for other programming languages. Such wrappers currently exist for

C++ support

The GSL can be used in C++ classes, but not using pointers to member functions, because the type of pointer to member function is different from pointer to function.[13] Instead, pointers to static functions have to be used. Another common work around is using a functor. C++ wrappers for GSL are available,[6] although many are not regularly maintained.

See also

References

<templatestyles src="Reflist/styles.css" />

Cite error: Invalid <references> tag; parameter "group" is allowed only.

Use <references />, or <references group="..." />

External links

  1. http://directory.fsf.org/GNU/
  2. 2.0 2.1 2.2 GSL homepage as of oct 2012.
  3. GSL design document https://www.gnu.org/software/gsl/design/gsl-design.html#SEC1 as of oct 2012.
  4. https://www.gnu.org/software/gsl/manual/html_node/Using-the-library.html
  5. AMPL bindings for the GNU Scientific Library
  6. 6.0 6.1 C++ wrappers for GSL
  7. FGSL - A Fortran interface to the GNU Scientific Library
  8. The hmatrix-special package, an interface to GSL special functions.
  9. The hmatrix-gsl package, a purely functional interface to selected numerical computations, internally implemented using GSL.
  10. GSLL, GNU Scientific Library for Lisp
  11. Python interface for GNU Scientific Library
  12. gsl: wrapper for the Gnu Scientific Library
  13. pointer to member function