Portability | portable |
---|---|
Stability | experimental |
Maintainer | bos@serpentine.com |
Statistics.Math
Description
Mathematical functions for statistics.
- choose :: Int -> Int -> Double
- logBeta :: Double -> Double -> Double
- chebyshev :: Vector v Double => Double -> v Double -> Double
- chebyshevBroucke :: Vector v Double => Double -> v Double -> Double
- factorial :: Int -> Double
- logFactorial :: Int -> Double
- incompleteGamma :: Double -> Double -> Double
- logGamma :: Double -> Double
- logGammaL :: Double -> Double
- log1p :: Double -> Double
Functions
choose :: Int -> Int -> Double
Compute the binomial coefficient n `
k. For
values of k > 30, this uses an approximation for performance
reasons. The approximation is accurate to 12 decimal places in the
worst case
choose
`
Example:
7 `choose` 3 == 35
Beta function
Chebyshev polynomials
A Chebyshev polynomial of the first kind is defined by the following recurrence:
t 0 _ = 1 t 1 x = x t n x = 2 * x * t (n-1) x - t (n-2) x
Arguments
:: Vector v Double | |
=> Double | Parameter of each function. |
-> v Double | Coefficients of each polynomial term, in increasing order. |
-> Double |
Evaluate a Chebyshev polynomial of the first kind. Uses Clenshaw's algorithm.
Arguments
:: Vector v Double | |
=> Double | Parameter of each function. |
-> v Double | Coefficients of each polynomial term, in increasing order. |
-> Double |
Evaluate a Chebyshev polynomial of the first kind. Uses Broucke's
ECHEB algorithm, and his convention for coefficient handling, and so
gives different results than chebyshev
for the same inputs.
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 :: Int -> Double
Compute the natural logarithm of the factorial function. Gives 16 decimal digits of precision.
Gamma function
Compute the normalized lower incomplete gamma function γ(s,x). Normalization means that γ(s,∞)=1. Uses Algorithm AS 239 by Shea.
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).
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.
References
- Broucke, R. (1973) Algorithm 446: Ten subroutines for the manipulation of Chebyshev series. Communications of the ACM 16(4):254–256. http://doi.acm.org/10.1145/362003.362037
- Clenshaw, C.W. (1962) Chebyshev series for mathematical functions. National Physical Laboratory Mathematical Tables 5, Her Majesty's Stationery Office, London.
- 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
- 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
- Shea, B. (1988) Algorithm AS 239: Chi-squared and incomplete gamma integral. Applied Statistics 37(3):466–473. http://www.jstor.org/stable/2347328