diff options
Diffstat (limited to 'gsl-1.9/doc/specfunc.texi')
-rw-r--r-- | gsl-1.9/doc/specfunc.texi | 352 |
1 files changed, 352 insertions, 0 deletions
diff --git a/gsl-1.9/doc/specfunc.texi b/gsl-1.9/doc/specfunc.texi new file mode 100644 index 0000000..50c93c3 --- /dev/null +++ b/gsl-1.9/doc/specfunc.texi @@ -0,0 +1,352 @@ +@cindex special functions + +This chapter describes the GSL special function library. The library +includes routines for calculating the values of Airy functions, Bessel +functions, Clausen functions, Coulomb wave functions, Coupling +coefficients, the Dawson function, Debye functions, Dilogarithms, +Elliptic integrals, Jacobi elliptic functions, Error functions, +Exponential integrals, Fermi-Dirac functions, Gamma functions, +Gegenbauer functions, Hypergeometric functions, Laguerre functions, +Legendre functions and Spherical Harmonics, the Psi (Digamma) Function, +Synchrotron functions, Transport functions, Trigonometric functions and +Zeta functions. Each routine also computes an estimate of the numerical +error in the calculated value of the function. + +The functions in this chapter are declared in individual header files, +such as @file{gsl_sf_airy.h}, @file{gsl_sf_bessel.h}, etc. The complete +set of header files can be included using the file @file{gsl_sf.h}. + +@menu +* Special Function Usage:: +* The gsl_sf_result struct:: +* Special Function Modes:: +* Airy Functions and Derivatives:: +* Bessel Functions:: +* Clausen Functions:: +* Coulomb Functions:: +* Coupling Coefficients:: +* Dawson Function:: +* Debye Functions:: +* Dilogarithm:: +* Elementary Operations:: +* Elliptic Integrals:: +* Elliptic Functions (Jacobi):: +* Error Functions:: +* Exponential Functions:: +* Exponential Integrals:: +* Fermi-Dirac Function:: +* Gamma and Beta Functions:: +* Gegenbauer Functions:: +* Hypergeometric Functions:: +* Laguerre Functions:: +* Lambert W Functions:: +* Legendre Functions and Spherical Harmonics:: +* Logarithm and Related Functions:: +* Mathieu Functions:: +* Power Function:: +* Psi (Digamma) Function:: +* Synchrotron Functions:: +* Transport Functions:: +* Trigonometric Functions:: +* Zeta Functions:: +* Special Functions Examples:: +* Special Functions References and Further Reading:: +@end menu + +@node Special Function Usage +@section Usage + +The special functions are available in two calling conventions, a +@dfn{natural form} which returns the numerical value of the function and +an @dfn{error-handling form} which returns an error code. The two types +of function provide alternative ways of accessing the same underlying +code. + +The @dfn{natural form} returns only the value of the function and can be +used directly in mathematical expressions. For example, the following +function call will compute the value of the Bessel function +@math{J_0(x)}, + +@example +double y = gsl_sf_bessel_J0 (x); +@end example + +@noindent +There is no way to access an error code or to estimate the error using +this method. To allow access to this information the alternative +error-handling form stores the value and error in a modifiable argument, + +@example +gsl_sf_result result; +int status = gsl_sf_bessel_J0_e (x, &result); +@end example + +@noindent +The error-handling functions have the suffix @code{_e}. The returned +status value indicates error conditions such as overflow, underflow or +loss of precision. If there are no errors the error-handling functions +return @code{GSL_SUCCESS}. + +@node The gsl_sf_result struct +@section The gsl_sf_result struct +@cindex gsl_sf_result +@cindex gsl_sf_result_e10 + +The error handling form of the special functions always calculate an +error estimate along with the value of the result. Therefore, +structures are provided for amalgamating a value and error estimate. +These structures are declared in the header file @file{gsl_sf_result.h}. + +The @code{gsl_sf_result} struct contains value and error fields. + +@example +typedef struct +@{ + double val; + double err; +@} gsl_sf_result; +@end example + +@noindent +The field @var{val} contains the value and the field @var{err} contains +an estimate of the absolute error in the value. + +In some cases, an overflow or underflow can be detected and handled by a +function. In this case, it may be possible to return a scaling exponent +as well as an error/value pair in order to save the result from +exceeding the dynamic range of the built-in types. The +@code{gsl_sf_result_e10} struct contains value and error fields as well +as an exponent field such that the actual result is obtained as +@code{result * 10^(e10)}. + +@example +typedef struct +@{ + double val; + double err; + int e10; +@} gsl_sf_result_e10; +@end example + +@node Special Function Modes +@section Modes + +The goal of the library is to achieve double precision accuracy wherever +possible. However the cost of evaluating some special functions to +double precision can be significant, particularly where very high order +terms are required. In these cases a @code{mode} argument allows the +accuracy of the function to be reduced in order to improve performance. +The following precision levels are available for the mode argument, + +@table @code +@item GSL_PREC_DOUBLE +Double-precision, a relative accuracy of approximately @c{$2 \times 10^{-16}$} +@math{2 * 10^-16}. +@item GSL_PREC_SINGLE +Single-precision, a relative accuracy of approximately @c{$1 \times 10^{-7}$} +@math{10^-7}. +@item GSL_PREC_APPROX +Approximate values, a relative accuracy of approximately @c{$5 \times 10^{-4}$} +@math{5 * 10^-4}. +@end table + +@noindent +The approximate mode provides the fastest evaluation at the lowest +accuracy. + +@node Airy Functions and Derivatives +@section Airy Functions and Derivatives +@include specfunc-airy.texi + +@node Bessel Functions +@section Bessel Functions +@include specfunc-bessel.texi + +@node Clausen Functions +@section Clausen Functions +@include specfunc-clausen.texi + +@node Coulomb Functions +@section Coulomb Functions +@include specfunc-coulomb.texi + +@node Coupling Coefficients +@section Coupling Coefficients +@include specfunc-coupling.texi + +@node Dawson Function +@section Dawson Function +@include specfunc-dawson.texi + +@node Debye Functions +@section Debye Functions +@include specfunc-debye.texi + +@node Dilogarithm +@section Dilogarithm +@include specfunc-dilog.texi + +@node Elementary Operations +@section Elementary Operations +@include specfunc-elementary.texi + +@node Elliptic Integrals +@section Elliptic Integrals +@include specfunc-ellint.texi + +@node Elliptic Functions (Jacobi) +@section Elliptic Functions (Jacobi) +@include specfunc-elljac.texi + +@node Error Functions +@section Error Functions +@include specfunc-erf.texi + +@node Exponential Functions +@section Exponential Functions +@include specfunc-exp.texi + +@node Exponential Integrals +@section Exponential Integrals +@include specfunc-expint.texi + +@node Fermi-Dirac Function +@section Fermi-Dirac Function +@include specfunc-fermi-dirac.texi + +@node Gamma and Beta Functions +@section Gamma and Beta Functions +@include specfunc-gamma.texi + +@node Gegenbauer Functions +@section Gegenbauer Functions +@include specfunc-gegenbauer.texi + +@node Hypergeometric Functions +@section Hypergeometric Functions +@include specfunc-hyperg.texi + +@node Laguerre Functions +@section Laguerre Functions +@include specfunc-laguerre.texi + +@node Lambert W Functions +@section Lambert W Functions +@include specfunc-lambert.texi + +@node Legendre Functions and Spherical Harmonics +@section Legendre Functions and Spherical Harmonics +@include specfunc-legendre.texi + +@node Logarithm and Related Functions +@section Logarithm and Related Functions +@include specfunc-log.texi + +@node Mathieu Functions +@section Mathieu Functions +@include specfunc-mathieu.texi + +@node Power Function +@section Power Function +@include specfunc-pow-int.texi + +@node Psi (Digamma) Function +@section Psi (Digamma) Function +@include specfunc-psi.texi + +@node Synchrotron Functions +@section Synchrotron Functions +@include specfunc-synchrotron.texi + +@node Transport Functions +@section Transport Functions +@include specfunc-transport.texi + +@node Trigonometric Functions +@section Trigonometric Functions +@include specfunc-trig.texi + +@node Zeta Functions +@section Zeta Functions +@include specfunc-zeta.texi + +@node Special Functions Examples +@section Examples + +The following example demonstrates the use of the error handling form of +the special functions, in this case to compute the Bessel function +@math{J_0(5.0)}, + +@example +@verbatiminclude examples/specfun_e.c +@end example + +@noindent +Here are the results of running the program, + +@example +$ ./a.out +@verbatiminclude examples/specfun_e.out +@end example + +@noindent +The next program computes the same quantity using the natural form of +the function. In this case the error term @var{result.err} and return +status are not accessible. + +@example +@verbatiminclude examples/specfun.c +@end example + +@noindent +The results of the function are the same, + +@example +$ ./a.out +@verbatiminclude examples/specfun.out +@end example + + + +@node Special Functions References and Further Reading +@section References and Further Reading + +The library follows the conventions of @cite{Abramowitz & Stegun} where +possible, +@itemize @asis +@item +Abramowitz & Stegun (eds.), @cite{Handbook of Mathematical Functions} +@end itemize + +@noindent +The following papers contain information on the algorithms used +to compute the special functions, +@cindex MISCFUN +@itemize @asis +@item +MISCFUN: A software package to compute uncommon special functions. +@cite{ACM Trans.@: Math.@: Soft.}, vol.@: 22, 1996, 288--301 + +@item +G.N. Watson, A Treatise on the Theory of Bessel Functions, +2nd Edition (Cambridge University Press, 1944). + +@item +G. Nemeth, Mathematical Approximations of Special Functions, +Nova Science Publishers, ISBN 1-56072-052-2 + +@item +B.C. Carlson, Special Functions of Applied Mathematics (1977) + +@item +W.J. Thompson, Atlas for Computing Mathematical Functions, John Wiley & Sons, +New York (1997). + +@item +Y.Y. Luke, Algorithms for the Computation of Mathematical Functions, Academic +Press, New York (1977). + +@comment @item +@comment Fermi-Dirac functions of orders @math{-1/2}, @math{1/2}, @math{3/2}, and +@comment @math{5/2}. @cite{ACM Trans. Math. Soft.}, vol. 24, 1998, 1-12. +@end itemize |