math-functions-0.1.6.0: Special functions and Chebyshev polynomials

Copyright (c) 2009 2011 2012 Bryan O'Sullivan BSD3 bos@serpentine.com experimental portable None Haskell98

Numeric.SpecFunctions

Description

Special functions and factorials.

Synopsis

# Error function

Error function.

erf -∞ = -1
erf  0 =  0
erf +∞ =  1

Complementary error function.

erfc -∞ = 2
erfc  0 = 1
errc +∞ = 0

Arguments

 :: Double p ∈ [-1,1] -> Double

Inverse of erf.

Arguments

 :: Double p ∈ [0,2] -> Double

Inverse of erfc.

# Gamma function

Compute the logarithm of the gamma function Γ(x). Uses Algorithm AS 245 by Macleod.

Gives an accuracy of 10-12 significant decimal digits, except for small regions around x = 1 and x = 2, where the function goes to zero. For greater accuracy, use logGammaL.

Returns ∞ if the input is outside of the range (0 < x ≤ 1e305).

Compute the logarithm of the gamma function, Γ(x). Uses a Lanczos approximation.

This function is slower than logGamma, but gives 14 or more significant decimal digits of accuracy, except around x = 1 and x = 2, where the function goes to zero.

Returns ∞ if the input is outside of the range (0 < x ≤ 1e305).

Arguments

 :: Double s ∈ (0,∞) -> Double x ∈ (0,∞) -> Double

Compute the normalized lower incomplete gamma function γ(s,x). Normalization means that γ(s,∞)=1. Uses Algorithm AS 239 by Shea.

Arguments

 :: Double s ∈ (0,∞) -> Double p ∈ [0,1] -> Double

Inverse incomplete gamma function. It's approximately inverse of incompleteGamma for the same s. So following equality approximately holds:

invIncompleteGamma s . incompleteGamma s = id

Compute ψ0(x), the first logarithmic derivative of the gamma function. Uses Algorithm AS 103 by Bernardo, based on Minka's C implementation.

# Beta function

Compute the natural logarithm of the beta function.

Arguments

 :: Double p > 0 -> Double q > 0 -> Double x, must lie in [0,1] range -> Double

Regularized incomplete beta function. Uses algorithm AS63 by Majumder and Bhattachrjee and quadrature approximation for large p and q.

Arguments

 :: Double logarithm of beta function for given p and q -> Double p > 0 -> Double q > 0 -> Double x, must lie in [0,1] range -> Double

Regularized incomplete beta function. Same as incompleteBeta but also takes logarithm of beta function as parameter.

Arguments

 :: Double p > 0 -> Double q > 0 -> Double a ∈ [0,1] -> Double

Compute inverse of regularized incomplete beta function. Uses initial approximation from AS109, AS64 and Halley method to solve equation.

# Sinc

Compute sinc function sin(x)/x

# Logarithm

Compute the natural logarithm of 1 + x. This is accurate even for values of x near zero, where use of log(1+x) would lose precision.

O(log n) Compute the logarithm in base 2 of the given value.

# Factorial

Compute the factorial function n!. Returns +∞ if the input is above 170 (above which the result cannot be represented by a 64-bit Double).

logFactorial :: Integral a => a -> Double Source #

Compute the natural logarithm of the factorial function. Gives 16 decimal digits of precision.

Calculate the error term of the Stirling approximation. This is only defined for non-negative values.

stirlingError @n@ = @log(n!) - log(sqrt(2*pi*n)*(n/e)^n)

# Combinatorics

Compute the binomial coefficient n choose k. For values of k > 50, this uses an approximation for performance reasons. The approximation is accurate to 12 decimal places in the worst case

Example:

7 choose 3 == 35

Compute logarithm of the binomial coefficient.

# References

• Bernardo, J. (1976) Algorithm AS 103: Psi (digamma) function. /Journal of the Royal Statistical Society. Series C (Applied Statistics)/ 25(3):315-317. http://www.jstor.org/stable/2347257
• Cran, G.W., Martin, K.J., Thomas, G.E. (1977) Remark AS R19 and Algorithm AS 109: A Remark on Algorithms: AS 63: The Incomplete Beta Integral AS 64: Inverse of the Incomplete Beta Function Ratio. /Journal of the Royal Statistical Society. Series C (Applied Statistics)/ Vol. 26, No. 1 (1977), pp. 111-114 http://www.jstor.org/pss/2346887
• Lanczos, C. (1964) A precision approximation of the gamma function. SIAM Journal on Numerical Analysis B 1:86–96. http://www.jstor.org/stable/2949767
• Loader, C. (2000) Fast and Accurate Computation of Binomial Probabilities. http://projects.scipy.org/scipy/raw-attachment/ticket/620/loader2000Fast.pdf
• Macleod, A.J. (1989) Algorithm AS 245: A robust and reliable algorithm for the logarithm of the gamma function. Journal of the Royal Statistical Society, Series C (Applied Statistics) 38(2):397–402. http://www.jstor.org/stable/2348078
• Majumder, K.L., Bhattacharjee, G.P. (1973) Algorithm AS 63: The Incomplete Beta Integral. /Journal of the Royal Statistical Society. Series C (Applied Statistics)/ Vol. 22, No. 3 (1973), pp. 409-411. http://www.jstor.org/pss/2346797
• Majumder, K.L., Bhattacharjee, G.P. (1973) Algorithm AS 64: Inverse of the Incomplete Beta Function Ratio. /Journal of the Royal Statistical Society. Series C (Applied Statistics)/ Vol. 22, No. 3 (1973), pp. 411-414 http://www.jstor.org/pss/2346798
• Shea, B. (1988) Algorithm AS 239: Chi-squared and incomplete gamma integral. Applied Statistics 37(3):466–473. http://www.jstor.org/stable/2347328