|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
license of GSL
|
|
Packit |
67cb25 |
GNU General Public License
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
************
|
|
Packit |
67cb25 |
Introduction
|
|
Packit |
67cb25 |
************
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The GNU Scientific Library (GSL) is a collection of routines for
|
|
Packit |
67cb25 |
numerical computing. The routines have been written from scratch in C,
|
|
Packit |
67cb25 |
and present a modern Applications Programming Interface
|
|
Packit |
67cb25 |
(API) for C programmers, allowing wrappers to be written for very
|
|
Packit |
67cb25 |
high level languages. The source code is distributed under the GNU
|
|
Packit |
67cb25 |
General Public License.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Routines available in GSL
|
|
Packit |
67cb25 |
=========================
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The library covers a wide range of topics in numerical computing.
|
|
Packit |
67cb25 |
Routines are available for the following areas,
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
=========================== =========================== ===========================
|
|
Packit |
67cb25 |
Complex Numbers Roots of Polynomials Special Functions
|
|
Packit |
67cb25 |
Vectors and Matrices Permutations Combinations
|
|
Packit |
67cb25 |
Sorting BLAS Support Linear Algebra
|
|
Packit |
67cb25 |
CBLAS Library Fast Fourier Transforms Eigensystems
|
|
Packit |
67cb25 |
Random Numbers Quadrature Random Distributions
|
|
Packit |
67cb25 |
Quasi-Random Sequences Histograms Statistics
|
|
Packit |
67cb25 |
Monte Carlo Integration N-Tuples Differential Equations
|
|
Packit |
67cb25 |
Simulated Annealing Numerical Differentiation Interpolation
|
|
Packit |
67cb25 |
Series Acceleration Chebyshev Approximations Root-Finding
|
|
Packit |
67cb25 |
Discrete Hankel Transforms Least-Squares Fitting Minimization
|
|
Packit |
67cb25 |
IEEE Floating-Point Physical Constants Basis Splines
|
|
Packit |
67cb25 |
Wavelets Sparse BLAS Support Sparse Linear Algebra
|
|
Packit |
67cb25 |
=========================== =========================== ===========================
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The use of these routines is described in this manual. Each chapter
|
|
Packit |
67cb25 |
provides detailed definitions of the functions, followed by example
|
|
Packit |
67cb25 |
programs and references to the articles on which the algorithms are
|
|
Packit |
67cb25 |
based.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Where possible the routines have been based on reliable public-domain
|
|
Packit |
67cb25 |
packages such as FFTPACK and QUADPACK, which the developers of GSL
|
|
Packit |
67cb25 |
have reimplemented in C with modern coding conventions.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
single: free software, explanation of
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
GSL is Free Software
|
|
Packit |
67cb25 |
====================
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The subroutines in the GNU Scientific Library are "free software";
|
|
Packit |
67cb25 |
this means that everyone is free to use them, and to redistribute them
|
|
Packit |
67cb25 |
in other free programs. The library is not in the public domain; it is
|
|
Packit |
67cb25 |
copyrighted and there are conditions on its distribution. These
|
|
Packit |
67cb25 |
conditions are designed to permit everything that a good cooperating
|
|
Packit |
67cb25 |
citizen would want to do. What is not allowed is to try to prevent
|
|
Packit |
67cb25 |
others from further sharing any version of the software that they might
|
|
Packit |
67cb25 |
get from you.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Specifically, we want to make sure that you have the right to share
|
|
Packit |
67cb25 |
copies of programs that you are given which use the GNU Scientific
|
|
Packit |
67cb25 |
Library, that you receive their source code or else can get it if you
|
|
Packit |
67cb25 |
want it, that you can change these programs or use pieces of them in new
|
|
Packit |
67cb25 |
free programs, and that you know you can do these things.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
To make sure that everyone has such rights, we have to forbid you to
|
|
Packit |
67cb25 |
deprive anyone else of these rights. For example, if you distribute
|
|
Packit |
67cb25 |
copies of any code which uses the GNU Scientific Library, you must give
|
|
Packit |
67cb25 |
the recipients all the rights that you have received. You must make
|
|
Packit |
67cb25 |
sure that they, too, receive or can get the source code, both to the
|
|
Packit |
67cb25 |
library and the code which uses it. And you must tell them their
|
|
Packit |
67cb25 |
rights. This means that the library should not be redistributed in
|
|
Packit |
67cb25 |
proprietary programs.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Also, for our own protection, we must make certain that everyone finds
|
|
Packit |
67cb25 |
out that there is no warranty for the GNU Scientific Library. If these
|
|
Packit |
67cb25 |
programs are modified by someone else and passed on, we want their
|
|
Packit |
67cb25 |
recipients to know that what they have is not what we distributed, so
|
|
Packit |
67cb25 |
that any problems introduced by others will not reflect on our
|
|
Packit |
67cb25 |
reputation.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The precise conditions for the distribution of software related to the
|
|
Packit |
67cb25 |
GNU Scientific Library are found in the
|
|
Packit |
67cb25 |
`GNU General Public License <https://www.gnu.org/software/gsl/manual/html_node/GNU-General-Public-License.html#GNU-General-Public-License>`_.
|
|
Packit |
67cb25 |
Further information about this
|
|
Packit |
67cb25 |
license is available from the GNU Project webpage `Frequently Asked
|
|
Packit |
67cb25 |
Questions about the GNU GPL <http://www.gnu.org/copyleft/gpl-faq.html>`_.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The Free Software Foundation also operates a license consulting
|
|
Packit |
67cb25 |
service for commercial users (contact details available from
|
|
Packit |
67cb25 |
http://www.fsf.org.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
obtaining GSL
|
|
Packit |
67cb25 |
downloading GSL
|
|
Packit |
67cb25 |
mailing list for GSL announcements
|
|
Packit |
67cb25 |
info-gsl mailing list
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Obtaining GSL
|
|
Packit |
67cb25 |
=============
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The source code for the library can be obtained in different ways, by
|
|
Packit |
67cb25 |
copying it from a friend, purchasing it on CDROM or downloading it
|
|
Packit |
67cb25 |
from the internet. A list of public ftp servers which carry the source
|
|
Packit |
67cb25 |
code can be found on the GNU website, http://www.gnu.org/software/gsl/.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The preferred platform for the library is a GNU system, which allows it
|
|
Packit |
67cb25 |
to take advantage of additional features in the GNU C compiler and GNU C
|
|
Packit |
67cb25 |
library. However, the library is fully portable and should compile on
|
|
Packit |
67cb25 |
most systems with a C compiler.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Announcements of new releases, updates and other relevant events are
|
|
Packit |
67cb25 |
made on the info-gsl@gnu.org mailing list. To subscribe to this
|
|
Packit |
67cb25 |
low-volume list, send an email of the following form::
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
To: info-gsl-request@gnu.org
|
|
Packit |
67cb25 |
Subject: subscribe
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
You will receive a response asking you to reply in order to confirm
|
|
Packit |
67cb25 |
your subscription.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
warranty (none)
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
No Warranty
|
|
Packit |
67cb25 |
===========
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The software described in this manual has no warranty, it is provided
|
|
Packit |
67cb25 |
"as is". It is your responsibility to validate the behavior of the
|
|
Packit |
67cb25 |
routines and their accuracy using the source code provided, or to
|
|
Packit |
67cb25 |
purchase support and warranties from commercial redistributors. Consult the
|
|
Packit |
67cb25 |
`GNU General Public License <https://www.gnu.org/software/gsl/manual/html_node/GNU-General-Public-License.html#GNU-General-Public-License>`_
|
|
Packit |
67cb25 |
for further details.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
reporting bugs in GSL
|
|
Packit |
67cb25 |
bugs, how to report
|
|
Packit |
67cb25 |
bug-gsl mailing list
|
|
Packit |
67cb25 |
mailing list, bug-gsl
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Reporting Bugs
|
|
Packit |
67cb25 |
==============
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
A list of known bugs can be found in the :file:`BUGS` file included in
|
|
Packit |
67cb25 |
the GSL distribution or online in the GSL bug tracker. [#f1]_
|
|
Packit |
67cb25 |
Details of compilation problems can be found in the :file:`INSTALL` file.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
If you find a bug which is not listed in these files, please report it to
|
|
Packit |
67cb25 |
bug-gsl@gnu.org.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
All bug reports should include:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- The version number of GSL
|
|
Packit |
67cb25 |
- The hardware and operating system
|
|
Packit |
67cb25 |
- The compiler used, including version number and compilation options
|
|
Packit |
67cb25 |
- A description of the bug behavior
|
|
Packit |
67cb25 |
- A short program which exercises the bug
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
It is useful if you can check whether the same problem occurs when the
|
|
Packit |
67cb25 |
library is compiled without optimization. Thank you.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Any errors or omissions in this manual can also be reported to the
|
|
Packit |
67cb25 |
same address.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
mailing list archives
|
|
Packit |
67cb25 |
single: website, developer information
|
|
Packit |
67cb25 |
contacting the GSL developers
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Further Information
|
|
Packit |
67cb25 |
===================
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Additional information, including online copies of this manual, links to
|
|
Packit |
67cb25 |
related projects, and mailing list archives are available from the
|
|
Packit |
67cb25 |
website mentioned above.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Any questions about the use and installation of the library can be asked
|
|
Packit |
67cb25 |
on the mailing list help-gsl@gnu.org. To subscribe to this
|
|
Packit |
67cb25 |
list, send an email of the following form::
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
To: help-gsl-request@gnu.org
|
|
Packit |
67cb25 |
Subject: subscribe
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
This mailing list can be used to ask questions not covered by this
|
|
Packit |
67cb25 |
manual, and to contact the developers of the library.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
If you would like to refer to the GNU Scientific Library in a journal
|
|
Packit |
67cb25 |
article, the recommended way is to cite this reference manual,
|
|
Packit |
67cb25 |
e.g.::
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
M. Galassi et al, GNU Scientific Library Reference Manual (3rd Ed.), ISBN 0954612078.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
If you want to give a url, use "http://www.gnu.org/software/gsl/".
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
single: conventions, used in manual
|
|
Packit |
67cb25 |
single: examples, conventions used in
|
|
Packit |
67cb25 |
single: shell prompt
|
|
Packit |
67cb25 |
single: $, shell prompt
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Conventions used in this manual
|
|
Packit |
67cb25 |
===============================
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. index::
|
|
Packit |
67cb25 |
single: dollar sign $, shell prompt
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
This manual contains many examples which can be typed at the keyboard.
|
|
Packit |
67cb25 |
A command entered at the terminal is shown like this::
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
$ command
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The first character on the line is the terminal prompt, and should not
|
|
Packit |
67cb25 |
be typed. The dollar sign $ is used as the standard prompt in
|
|
Packit |
67cb25 |
this manual, although some systems may use a different character.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The examples assume the use of the GNU operating system. There may be
|
|
Packit |
67cb25 |
minor differences in the output on other systems. The commands for
|
|
Packit |
67cb25 |
setting environment variables use the Bourne shell syntax of the
|
|
Packit |
67cb25 |
standard GNU shell (:code:`bash`).
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. rubric:: Footnotes
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
.. [#f1] http://savannah.gnu.org/bugs/?group=gsl
|