\input texinfo @c -*-texinfo-*-
@c This will be for the printing version of the manual
@c @input config-local.texi
@c %**start of header
@setfilename gsl-ref.info
@settitle GNU Scientific Library -- Reference Manual
@finalout
@set frontcontents
@ifset publish
@setchapternewpage odd
@end ifset
@c %**end of header

@dircategory Software libraries
@direntry
* gsl-ref: (gsl-ref).                   GNU Scientific Library -- Reference
@end direntry

@c How to use the math macros
@c ==========================
@c 
@c For simple expressions, simply use the @math{} command, e.g.
@c
@c     @math{\exp(x)/(1+x^2)}
@c 
@c but if the expression includes characters that need to be 'escaped'
@c in texinfo, like '{' or '}', or needs different output for TeX and info,
@c then use the following form,
@c
@c     blah blah blah @c{$y^{1+b} \le \pi$}
@c     @math{y^@{1+b@} <= \pi}
@c
@c The first part using @c{} must appear at the end of a line (it reads
@c up to the line end -- as far as texinfo is concerned it's actually
@c a 'comment').  The comment command @c has been modified to capture
@c a TeX expression which is output by the next @math.
@c
@c For ordinary comments use the @comment command.

@tex
% Mathematical macros taken from the GNU Calc Manual
% ==================================================
%
% Some special kludges to make TeX formatting prettier.
% Because makeinfo.c exists, we can't just define new commands.
% So instead, we take over little-used existing commands.
%
\gdef\goodtex{\tex \let\rm\goodrm \let\t\ttfont \mathactive}
\gdef\goodrm{\fam0\tenrm}
\gdef\math{\goodtex$\mathxxx}
\gdef\mathxxx#1{#1$\endgroup}
%
\global\let\oldxrefX=\xrefX
\gdef\xrefX[#1]{\begingroup\let\math=\dfn\oldxrefX[#1]\endgroup}
%
% Redefine @c{tex-stuff} \n @whatever{info-stuff}.
\gdef\c{\futurelet\next\mycxxx}
\gdef\mycxxx{%
  \ifx\next\bgroup \goodtex\let\next\mycxxy
  \else\ifx\next\mindex \let\next\relax
  \else\ifx\next\kindex \let\next\relax
  \else\ifx\next\starindex \let\next\relax \else \let\next\comment
  \fi\fi\fi\fi \next
}
\gdef\mycxxy#1#2{#1\endgroup\mycxxz}
\gdef\mycxxz#1{}
%
% Define \Hat to take over from \hat as an accent
\gdef\Hat{\mathaccent "705E}
%
%\gdef\beforedisplay{\vskip-10pt}
%\gdef\afterdisplay{\vskip-5pt}
\gdef\beforedisplay{}
\gdef\afterdisplay{}
{\globaldefs = 1
\abovedisplayskip=7pt plus 2pt minus 1pt
\belowdisplayskip=7pt plus 2pt minus 1pt
\abovedisplayshortskip=7pt plus 2pt minus 1pt
\belowdisplayshortskip=7pt plus 2pt minus 1pt}
%\abovedisplayskip=12pt plus 3pt minus 3pt
%\belowdisplayskip=12pt plus 3pt minus 3pt
%\abovedisplayshortskip=7pt plus 1pt minus 1pt
%\belowdisplayshortskip=7pt plus 1pt minus 1pt
%\gdef\beforedisplayh{\vskip-25pt}
%\gdef\afterdisplayh{\vskip-10pt}
%
\gdef\arcsec{\hbox{\rm arcsec}}
\gdef\arccsc{\hbox{\rm arccsc}}
\gdef\arccot{\hbox{\rm arccot}}
\gdef\sech{\hbox{\rm sech}}
\gdef\csch{\hbox{\rm csch}}
\gdef\coth{\hbox{\rm coth}}
\gdef\arcsinh{\hbox{\rm arcsinh}}
\gdef\arccosh{\hbox{\rm arccosh}}
\gdef\arctanh{\hbox{\rm arctanh}}
\gdef\arcsech{\hbox{\rm arcsech}}
\gdef\arccsch{\hbox{\rm arccsch}}
\gdef\arccoth{\hbox{\rm arccoth}}
%
\gdef\Re{\hbox{\rm Re}}
\gdef\Im{\hbox{\rm Im}}
\gdef\Sin{\hbox{\rm Sin}}
\gdef\Cos{\hbox{\rm Cos}}
\gdef\Log{\hbox{\rm Log}}
%
\gdef\erf{\hbox{\rm erf}}
\gdef\erfc{\hbox{\rm erfc}}
\gdef\sinc{\hbox{\rm sinc}}
\gdef\sgn{\hbox{\rm sgn}}
\gdef\sign{\hbox{\rm sign}}
\gdef\det{\hbox{\rm det}}
\gdef\Var{\hbox{\rm Var}}
\gdef\arg{\hbox{\rm arg}} % avoid temporary clobbering of arg in texinfo-4.8
@end tex

@macro inlinefn
An inline version of this function is used when @code{HAVE_INLINE} is defined.
@end macro

@macro inlinefns
Inline versions of these functions are used when @code{HAVE_INLINE} is defined.
@end macro

@include version.texi
@set GSL @i{GNU Scientific Library}

@copying
Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 The GSL Team.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'' and ``Free Software
Needs Free Documentation'', the Front-Cover text being ``A GNU Manual'',
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled ``GNU Free Documentation
License''.

(a) The Back-Cover Text is: ``You have the freedom to copy and modify this
GNU Manual.''
@end copying

@titlepage
@title GNU Scientific Library
@subtitle Reference Manual
@subtitle Edition @value{EDITION}, for GSL Version @value{VERSION}
@subtitle @value{UPDATED}

@author Mark Galassi 
Los Alamos National Laboratory
@comment @email{rosalia@@lanl.gov}
@sp 1

@author Jim Davies 
Department of Computer Science, Georgia Institute of Technology
@comment @email{jimmyd@@nis.lanl.gov}
@sp 1

@author James Theiler 
Astrophysics and Radiation Measurements Group, Los Alamos National Laboratory
@comment @email{jt@@nis.lanl.gov}
@sp 1

@author Brian Gough 
Network Theory Limited
@comment @email{bjg@@network-theory.co.uk}
@sp 1

@comment Asked to be moved to 'contributors' appendix
@comment @author Reid Priedhorsky 
@comment Mathematical Modeling and Analysis Group, Los Alamos National Laboratory
@comment @email{rp@@lanl.gov}
@comment @sp 1

@author Gerard Jungman 
Theoretical Astrophysics Group, Los Alamos National Laboratory
@comment @email{jungman@@lanl.gov}
@sp 1

@author Patrick Alken
University of Colorado at Boulder
@sp 1

@author Michael Booth
Department of Physics and Astronomy, The Johns Hopkins University
@comment @email{booth@@planck.pha.jhu.edu} or @email{booth@@debian.org}
@sp 1

@author Fabrice Rossi
University of Paris-Dauphine
@comment @email{rossi@@ufrmd.dauphine.fr}
@sp 1

@author Rhys Ulerich
@comment @email{rhys.ulerich@gmail.com}
@sp 1
@page
@vskip 0pt plus 1filll
@insertcopying
@ifclear publish
Printed copies of this manual can be purchased from Network Theory Ltd
at @uref{http://www.network-theory.co.uk/gsl/manual/}.

The money raised from sales of the manual helps support the
development of GSL.
@end ifclear
@end titlepage

@iftex
@ifset frontcontents
@contents
@end ifset
@end iftex

@ifnottex
@node Top, Introduction, (dir), (dir)
@top GSL

This file documents the @value{GSL} (GSL), a collection of numerical
routines for scientific computing.  It corresponds to release
@value{VERSION} of the library.  Please report any errors in this
manual to @email{bug-gsl@@gnu.org}.

More information about GSL can be found at the project homepage,
@uref{http://www.gnu.org/software/gsl/}.

Printed copies of this manual can be purchased from Network Theory Ltd
at @uref{http://www.network-theory.co.uk/gsl/manual/}. The money
raised from sales of the manual helps support the development of GSL.

A Japanese translation of this manual is available from the GSL
project homepage thanks to Daisuke Tominaga.

@insertcopying
@sp 1
@end ifnottex

@menu
* Introduction::                
* Using the library::           
* Error Handling::              
* Mathematical Functions::      
* Complex Numbers::             
* Polynomials::                 
* Special Functions::           
* Vectors and Matrices::        
* Permutations::                
* Combinations::                
* Multisets::                   
* Sorting::                     
* BLAS Support::                
* Linear Algebra::              
* Eigensystems::                
* Fast Fourier Transforms::     
* Numerical Integration::       
* Random Number Generation::    
* Quasi-Random Sequences::      
* Random Number Distributions::  
* Statistics::                  
* Running Statistics::                  
* Histograms::                  
* N-tuples::                    
* Monte Carlo Integration::     
* Simulated Annealing::         
* Ordinary Differential Equations::  
* Interpolation::               
* Numerical Differentiation::   
* Chebyshev Approximations::    
* Series Acceleration::         
* Wavelet Transforms::          
* Discrete Hankel Transforms::  
* One dimensional Root-Finding::  
* One dimensional Minimization::  
* Multidimensional Root-Finding::  
* Multidimensional Minimization::  
* Least-Squares Fitting::       
* Nonlinear Least-Squares Fitting::  
* Basis Splines::
* Sparse Matrices::
* Sparse BLAS Support::
* Sparse Linear Algebra::
* Physical Constants::          
* IEEE floating-point arithmetic::  
* Debugging Numerical Programs::  
* Contributors to GSL::         
* Autoconf Macros::             
* GSL CBLAS Library::           
* GNU General Public License::  
* GNU Free Documentation License::  
* Function Index::              
* Variable Index::              
* Type Index::                  
* Concept Index::               
@end menu

@node  Introduction, Using the library, Top, Top
@chapter Introduction
@include intro.texi

@node Using the library, Error Handling, Introduction, Top
@chapter Using the library
@cindex usage, compiling application programs
@include usage.texi

@node Error Handling, Mathematical Functions, Using the library, Top
@chapter Error Handling
@cindex Errors
@include err.texi

@node  Mathematical Functions, Complex Numbers, Error Handling, Top
@chapter Mathematical Functions
@include math.texi

@node Complex Numbers, Polynomials, Mathematical Functions, Top
@chapter Complex Numbers
@include complex.texi

@node Polynomials, Special Functions, Complex Numbers, Top
@chapter Polynomials
@include poly.texi

@node Special Functions, Vectors and Matrices, Polynomials, Top
@chapter Special Functions
@include specfunc.texi

@node Vectors and Matrices, Permutations, Special Functions, Top
@chapter Vectors and Matrices
@include vectors.texi

@node   Permutations, Combinations, Vectors and Matrices, Top
@chapter Permutations
@include permutation.texi

@node   Combinations, Multisets, Permutations, Top
@chapter Combinations
@include combination.texi

@node   Multisets, Sorting, Combinations, Top
@chapter Multisets
@include multiset.texi

@node  Sorting, BLAS Support, Multisets, Top
@chapter Sorting
@include sort.texi

@node BLAS Support, Linear Algebra, Sorting, Top
@chapter BLAS Support
@include blas.texi

@node Linear Algebra, Eigensystems, BLAS Support, Top
@chapter Linear Algebra
@include linalg.texi

@node Eigensystems, Fast Fourier Transforms, Linear Algebra, Top
@chapter Eigensystems
@include eigen.texi

@node Fast Fourier Transforms, Numerical Integration, Eigensystems, Top
@chapter Fast Fourier Transforms (FFTs)
@include fft.texi

@node Numerical Integration, Random Number Generation, Fast Fourier Transforms, Top
@chapter Numerical Integration
@include integration.texi

@node Random Number Generation, Quasi-Random Sequences, Numerical Integration, Top
@chapter Random Number Generation
@include rng.texi

@node Quasi-Random Sequences, Random Number Distributions, Random Number Generation, Top
@chapter Quasi-Random Sequences
@include qrng.texi

@node  Random Number Distributions, Statistics, Quasi-Random Sequences, Top
@chapter Random Number Distributions
@include randist.texi

@node Statistics, Running Statistics, Random Number Distributions, Top
@chapter Statistics
@include statistics.texi

@node Running Statistics, Histograms, Statistics, Top
@chapter Running Statistics
@include rstat.texi

@node Histograms, N-tuples, Running Statistics, Top
@chapter Histograms
@include histogram.texi

@node  N-tuples, Monte Carlo Integration, Histograms, Top
@chapter N-tuples
@include ntuple.texi

@node Monte Carlo Integration, Simulated Annealing, N-tuples, Top
@chapter Monte Carlo Integration
@include montecarlo.texi

@node Simulated Annealing, Ordinary Differential Equations, Monte Carlo Integration, Top
@chapter Simulated Annealing
@include siman.texi

@node Ordinary Differential Equations, Interpolation, Simulated Annealing, Top
@chapter Ordinary Differential Equations
@include ode-initval.texi

@node   Interpolation, Numerical Differentiation, Ordinary Differential Equations, Top
@chapter Interpolation
@include interp.texi

@node  Numerical Differentiation, Chebyshev Approximations, Interpolation, Top
@chapter Numerical Differentiation
@include diff.texi

@node  Chebyshev Approximations, Series Acceleration, Numerical Differentiation, Top
@chapter Chebyshev Approximations
@include cheb.texi

@node Series Acceleration, Wavelet Transforms, Chebyshev Approximations, Top
@chapter Series Acceleration
@include sum.texi

@node  Wavelet Transforms, Discrete Hankel Transforms, Series Acceleration, Top
@chapter Wavelet Transforms
@include dwt.texi

@node  Discrete Hankel Transforms, One dimensional Root-Finding, Wavelet Transforms, Top
@chapter Discrete Hankel Transforms
@include dht.texi

@node  One dimensional Root-Finding, One dimensional Minimization, Discrete Hankel Transforms, Top
@chapter One dimensional Root-Finding
@include roots.texi

@node   One dimensional Minimization, Multidimensional Root-Finding, One dimensional Root-Finding, Top
@chapter One dimensional Minimization
@include min.texi

@node  Multidimensional Root-Finding, Multidimensional Minimization, One dimensional Minimization, Top
@chapter Multidimensional Root-Finding
@include multiroots.texi

@node   Multidimensional Minimization, Least-Squares Fitting, Multidimensional Root-Finding, Top
@chapter Multidimensional Minimization
@include multimin.texi

@node Least-Squares Fitting, Nonlinear Least-Squares Fitting, Multidimensional Minimization, Top
@chapter Least-Squares Fitting
@include fitting.texi

@node Nonlinear Least-Squares Fitting, Basis Splines, Least-Squares Fitting, Top
@chapter Nonlinear Least-Squares Fitting
@include multifit.texi

@node Basis Splines, Sparse Matrices, Nonlinear Least-Squares Fitting, Top
@chapter Basis Splines
@include bspline.texi

@node Sparse Matrices, Sparse BLAS Support, Basis Splines, Top
@chapter Sparse Matrices
@include spmatrix.texi

@node Sparse BLAS Support, Sparse Linear Algebra, Sparse Matrices, Top
@chapter Sparse BLAS Support
@include spblas.texi

@node Sparse Linear Algebra, Physical Constants, Sparse BLAS Support, Top
@chapter Sparse Linear Algebra
@include splinalg.texi

@node Physical Constants, IEEE floating-point arithmetic, Sparse Linear Algebra, Top
@chapter Physical Constants
@include const.texi

@node IEEE floating-point arithmetic, Debugging Numerical Programs, Physical Constants, Top
@chapter IEEE floating-point arithmetic
@include ieee754.texi

@node Debugging Numerical Programs, Contributors to GSL, IEEE floating-point arithmetic, Top
@appendix Debugging Numerical Programs
@include debug.texi

@node Contributors to GSL, Autoconf Macros, Debugging Numerical Programs, Top
@appendix Contributors to GSL

(See the AUTHORS file in the distribution for up-to-date information.)

@table @strong
@item Mark Galassi
Conceived GSL (with James Theiler) and wrote the design document.  Wrote
the simulated annealing package and the relevant chapter in the manual.

@item James Theiler
Conceived GSL (with Mark Galassi).  Wrote the random number generators
and the relevant chapter in this manual.

@item Jim Davies
Wrote the statistical routines and the relevant chapter in this
manual.

@item Brian Gough
FFTs, numerical integration, random number generators and distributions,
root finding, minimization and fitting, polynomial solvers, complex
numbers, physical constants, permutations, vector and matrix functions,
histograms, statistics, ieee-utils, revised @sc{cblas} Level 2 & 3,
matrix decompositions, eigensystems, cumulative distribution functions,
testing, documentation and releases.

@item Reid Priedhorsky 
Wrote and documented the initial version of the root finding routines
while at Los Alamos National Laboratory, Mathematical Modeling and
Analysis Group.  
@comment email: reid@reidster.net

@item Gerard Jungman
Special Functions, Series acceleration, ODEs, BLAS, Linear Algebra,
Eigensystems, Hankel Transforms.

@item Mike Booth
Wrote the Monte Carlo library.

@item Jorma Olavi T@"ahtinen 
Wrote the initial complex arithmetic functions.

@item  Thomas Walter 
Wrote the initial heapsort routines and Cholesky decomposition.

@item  Fabrice Rossi
Multidimensional minimization.

@item Carlo Perassi
Implementation of the random number generators in Knuth's
@cite{Seminumerical Algorithms}, 3rd Ed.

@item Szymon Jaroszewicz 
@comment <sj@cs.umb.edu>
Wrote the routines for generating combinations.

@item Nicolas Darnis
Wrote the cyclic functions and the initial functions for canonical 
permutations.

@item Jason H. Stover
@comment (jason@sakla.net) 
Wrote the major cumulative distribution functions.

@item Ivo Alxneit
Wrote the routines for wavelet transforms.

@item Tuomo Keskitalo
Improved the implementation of the ODE solvers and wrote the
ode-initval2 routines.

@item Lowell Johnson
Implementation of the Mathieu functions.

@item Patrick Alken
Implementation of nonsymmetric and generalized eigensystems, B-splines,
robust linear regression, and sparse matrices.

@item Rhys Ulerich 
Wrote the multiset routines.

@item Pavel Holoborodko 
Wrote the fixed order Gauss-Legendre quadrature routines.

@item Pedro Gonnet
Wrote the @sc{cquad} integration routines.



@end table

Thanks to Nigel Lowry for help in proofreading the manual.

The non-symmetric eigensystems routines contain code based on the
LAPACK linear algebra library.  LAPACK is distributed under the
following license:

@iftex
@smallerfonts @rm
@end iftex
@sp 1
@quotation
Copyright (c) 1992-2006 The University of Tennessee.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

@bullet{} Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer. 
  
@bullet{} Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer listed
in this license in the documentation and/or other materials
provided with the distribution.
  
@bullet{} Neither the name of the copyright holders nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
  
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT  
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
@end quotation

@iftex
@textfonts @rm
@end iftex



@node  Autoconf Macros, GSL CBLAS Library, Contributors to GSL, Top
@appendix Autoconf Macros
@include autoconf.texi

@node GSL CBLAS Library, GNU General Public License, Autoconf Macros, Top
@appendix GSL CBLAS Library
@include cblas.texi

@comment @node  Copyright, GNU General Public License, Contributors to GSL, Top
@comment @unnumbered Copyright
@comment @include science.texi

@comment @node  Free Software Needs Free Documentation, GNU General Public License, GSL CBLAS Library, Top
@comment @unnumbered Free Software Needs Free Documentation
@comment @include freemanuals.texi

@node  GNU General Public License, GNU Free Documentation License, GSL CBLAS Library, Top
@unnumbered GNU General Public License
@include gpl.texi

@node GNU Free Documentation License, Function Index, GNU General Public License, Top
@unnumbered GNU Free Documentation License
@include fdl.texi

@comment htmlhelp: @printindex fn
@comment htmlhelp: @printindex vr
@comment htmlhelp: @printindex tp
@comment htmlhelp: @printindex cp
@comment htmlhelp: @bye

@iftex
@normalbottom
@end iftex

@node Function Index, Variable Index, GNU Free Documentation License, Top
@unnumbered Function Index

@printindex fn

@node Variable Index, Type Index, Function Index, Top
@unnumbered Variable Index

@printindex vr

@node Type Index, Concept Index, Variable Index, Top
@unnumbered Type Index

@printindex tp

@node Concept Index,  , Type Index, Top
@unnumbered Concept Index

@printindex cp

@ifclear frontcontents
@comment Use @setchapternewpage odd to ensure that the contents starts 
@comment on an odd page so that it can always be moved to the front when 
@comment printing two-up.
@setchapternewpage odd
@contents
@end ifclear

@ifset extrablankpages
@comment final page must be blank for printed version
@page
@headings off
@*
@page
@*
@comment @page
@comment @*
@comment @page
@comment @*
@end ifset
@bye
