blob: b3da56d32305a2c23579753ee23fab74379b1a6a [file] [log] [blame]
~~
~~ Licensed to the Apache Software Foundation (ASF) under one or more
~~ contributor license agreements. See the NOTICE file distributed with
~~ this work for additional information regarding copyright ownership.
~~ The ASF licenses this file to You under the Apache License, Version 2.0
~~ (the "License"); you may not use this file except in compliance with
~~ the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing, software
~~ distributed under the License is distributed on an "AS IS" BASIS,
~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~~ See the License for the specific language governing permissions and
~~ limitations under the License.
~~
-----------------------------------------------
The Commons Math User Guide - Special Functions
-----------------------------------------------
5 Special Functions
* 5.1 Overview
The <<<special>>> package of Commons-Math gathers several useful special
functions not provided by <<<java.lang.Math>>>.
* 5.2 Erf functions
{{{../apidocs/org/apache/commons/math3/special/Erf.html}Erf}} contains
several useful functions involving the Error Function, Erf.
*----------------+---------+-------------------------------------------------------------------+
|| Function || Method || Reference |
*----------------+---------+-------------------------------------------------------------------+
| Error Function |erf | See {{{http://mathworld.wolfram.com/Erf.html}Erf}} from MathWorld |
*----------------+---------+-------------------------------------------------------------------+
* 5.3 Gamma functions
Class {{{../apidocs/org/apache/commons/math3/special/Gamma.html}<<<Gamma>>>}}
contains several useful functions involving the Gamma Function.
** Gamma
<<<Gamma.gamma(x)>>> computes the Gamma function, Γ(x)
(see {{{http://mathworld.wolfram.com/GammaFunction.html}MathWorld}},
{{{http://dlmf.nist.gov/5}DLMF}}). The accuracy of the Commons-Math
implementation is assessed by comparison with high precision values computed
with the {{{http://maxima.sourceforge.net/}Maxima}} Computer Algebra System.
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
|| Interval || Values tested || Average error || Standard deviation || Maximum error |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
| -5 \< x \< -4 | <<<x[i] = i / 1024, i = -5119, ..., -4097>>> | 0.49 ulps | 0.57 ulps | 3.0 ulps |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
| -4 \< x \< -3 | <<<x[i] = i / 1024, i = -4095, ..., -3073>>> | 0.36 ulps | 0.51 ulps | 2.0 ulps |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
| -3 \< x \< -2 | <<<x[i] = i / 1024, i = -3071, ..., -2049>>> | 0.41 ulps | 0.53 ulps | 2.0 ulps |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
| -2 \< x \< -1 | <<<x[i] = i / 1024, i = -2047, ..., -1025>>> | 0.37 ulps | 0.50 ulps | 2.0 ulps |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
| -1 \< x \< 0 | <<<x[i] = i / 1024, i = -1023, ..., -1>>> | 0.46 ulps | 0.54 ulps | 2.0 ulps |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
| 0 \< x 8 | <<<x[i] = i / 1024, i = 1, ..., 8192>>> | 0.33 ulps | 0.48 ulps | 2.0 ulps |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
| 8 \< x 141 | <<<x[i] = i / 64, i = 513, ..., 9024>>> | 1.32 ulps | 1.19 ulps | 7.0 ulps |
*----------------+-----------------------------------------------+-----------------+----------------------+----------------+
** Log Gamma
<<<Gamma.logGamma(x)>>> computes the natural logarithm of the Gamma function,
log \u0393(x), for x > 0
(see {{{http://mathworld.wolfram.com/LogGammaFunction.html}MathWorld}},
{{{http://dlmf.nist.gov/5}DLMF}}). The accuracy of the Commons-Math
implementation is assessed by comparaison with high precision values computed
with the {{{http://maxima.sourceforge.net/}Maxima}} Computer Algebra System.
*------------------------------------------------+-----------------------------------------------+-----------------+----------------------+----------------+
|| Interval || Values tested || Average error || Standard deviation || Maximum error |
*------------------------------------------------+-----------------------------------------------+-----------------+----------------------+----------------+
| 0 \< x 8 | <<<x[i] = i / 1024, i = 1, ..., 8192>>> | 0.32 ulps | 0.50 ulps | 4.0 ulps |
*------------------------------------------------+-----------------------------------------------+-----------------+----------------------+----------------+
| 8 \< x 1024 | <<<x[i] = i / 8, i = 65, ..., 8192>>> | 0.43 ulps | 0.53 ulps | 3.0 ulps |
*------------------------------------------------+-----------------------------------------------+-----------------+----------------------+----------------+
| 1024 \< x 8192 | <<<x[i], i = 1025, ..., 8192>>> | 0.53 ulps | 0.56 ulps | 3.0 ulps |
*------------------------------------------------+-----------------------------------------------+-----------------+----------------------+----------------+
| 8933.439345993791 x 1.75555970201398e+305 | <<<x[i] = 2**(i / 8), i = 105, ..., 8112>>> | 0.35 ulps | 0.49 ulps | 2.0 ulps |
*------------------------------------------------+-----------------------------------------------+-----------------+----------------------+----------------+
** Regularized Gamma
<<<Gamma.regularizedGammaP(a, x)>>> computes the value of the regularized
Gamma function, P(a, x)
(see {{{http://mathworld.wolfram.com/RegularizedGammaFunction.html}MathWorld}}).
* 5.4 Beta functions
{{{../apidocs/org/apache/commons/math3/special/Beta.html}Beta}} contains
several useful functions involving the Beta Function.
** Log Beta
<<<Beta.logBeta(a, b)>>> computes the value of the natural logarithm of the
Beta function, log B(a, b).
(see {{{http://mathworld.wolfram.com/BetaFunction.html}MathWorld}},
{{{http://dlmf.nist.gov/5.12}DLMF}}). The accuracy of the Commons-Math
implementation is assessed by comparison with high precision values computed
with the {{{http://maxima.sourceforge.net/}Maxima}} Computer Algebra System.
*----------------+-----------------------------------------+-----------------+----------------------+----------------+
|| Interval || Values tested || Average error || Standard deviation || Maximum error |
*----------------+-----------------------------------------+-----------------+----------------------+-----------------+
| 0 \< x 8\ | <<<x[i] = i / 32, i = 1, ..., 256>>>\ | 1.80 ulps | 81.08 ulps | 14031.0 ulps |
| 0 \< y 8 | <<<y[j] = j / 32, j = 1, ..., 256>>> | | | |
*----------------+-----------------------------------------+-----------------+----------------------+-----------------+
| 0 \< x 8\ | <<<x[i] = i / 32, i = 1, ..., 256>>>\ | 0.50 ulps | 3.64 ulps | 694.0 ulps |
| 8 \< y 16 | <<<y[j] = j / 32, j = 257, ..., 512>>> | | | |
*----------------+-----------------------------------------+-----------------+----------------------+-----------------+
| 0 \< x 8\ | <<<x[i] = i / 32, i = 1, ..., 256>>>\ | 1.04 ulps | 139.32 ulps | 34509.0 ulps |
| 16 \< y 256 | <<<y[j] = j, j = 17, ..., 256>>> | | | |
*----------------+-----------------------------------------+-----------------+----------------------+-----------------+
| 8 \< x 16\ | <<<x[i] = i / 32, i = 257, ..., 512>>>\ | 0.35 ulps | 0.48 ulps | 2.0 ulps |
| 8 \< y 16 | <<<y[j] = j / 32, j = 257, ..., 512>>> | | | |
*----------------+-----------------------------------------+-----------------+----------------------+-----------------+
| 8 \< x 16\ | <<<x[i] = i / 32, i = 257, ..., 512>>>\ | 0.31 ulps | 0.47 ulps | 2.0 ulps |
| 16 \< y 256 | <<<y[j] = j, j = 17, ..., 256>>> | | | |
*----------------+-----------------------------------------+-----------------+----------------------+-----------------+
| 16 \< x 256\ | <<<x[i] = i, i = 17, ..., 256>>>\ | 0.35 ulps | 0.49 ulps | 2.0 ulps |
| 16 \< y 256 | <<<y[j] = j, j = 17, ..., 256>>> | | | |
*----------------+-----------------------------------------+-----------------+----------------------+-----------------+
** Regularized Beta
(see {{{http://mathworld.wolfram.com/RegularizedBetaFunction.html}MathWorld}})