GNU Scientific Library

From ArticleWorld


The GNU Scientific Library (usually referred to as GSL) is a C library designed and optimized for applied mathematics and computation. It is part of the GNU project, and distributed under a GPL license.

The motivation behind GSL was originally related to the fact that most scientific libraries restrict its use even in a scientific environment. Therefore, the project's status acknowledges that collaboration should not be restricted.

The GSL is a quite popular package, used by several other projects, including LabPlot, QtiPlot, ORSA and NEMO. Wrappers for several other languages exist, including Python, Ruby, Perl and OCAML.

Features

The GNU Scientific Library includes support for several functions and data structures heavily used in applied mathematics. The highlighted features are:

  • Complete support for basic mathematical functions
  • Support for mathematical structures, including complex numbers, polynomials, vectors and matrices
  • Support for special mathematical functions
  • Integration support, including numerical integration, Monte Carlo integration, in addition to support for numerical differentiation and ordinary differential equations.
  • Support for Fast Fourier transforms and discrete Hankel transforms
  • Root finding and minimization, in one or more dimensions.

The library is completely object-oriented in order to allow the code to be more easily added or modified. It is also completely threadsafe, and an abstract interface was recently designed so that GSL can also be used in higher-level languages. Some applications written in Python and Scheme are known to be using it.

Supported platforms

The main development platforms are Linux and GNU/Hurd with the GCC compiler. However, any UNIX-like should be able to compile and use the GCL library. At the time of writing, the project lists several other platforms as tested and supported, including:

  • HP-UX 9/10/11, PA-RISC, gcc/cc
  • IRIX 6.5, gcc
  • Compaq Alpha Tru64 Unix, gcc
  • FreeBSD, OpenBSD & NetBSD, gcc
  • Cygwin
  • Apple Darwin 5.4
  • Hitachi SR8000 Super Technical Server,