0 | module Statistics.Distribution.Gamma
 1 |
 2 | import Data.So
 3 | import Statistics.Distribution.GSL
 4 |
 5 | ||| Sample from Gamma distribution
 6 | %foreign "C:gsl_ran_gamma,libgsl"
 7 | gsl_gamma_c : (seed : AnyPtr) -> (a : Double) -> (b : Double) -> PrimIO Double
 8 |
 9 | export
10 | gsl_gamma : (a : Double) -> (b : Double) -> GslRng -> IO Double
11 | gsl_gamma a b (MkGslRng seed) = primIO $ gsl_gamma_c seed a b
12 |
13 | ||| Compute PDF from Gamma distribution
14 | %foreign "C:gsl_ran_gamma_pdf,libgsl"
15 | gsl_gamma_pdf_c : (obs : Double) -> (a : Double) -> (b : Double) -> Double
16 |
17 | export
18 | gsl_gamma_pdf : (a : Double) -> (b : Double) -> (obs : Double) -> Double
19 | gsl_gamma_pdf a b y = gsl_gamma_pdf_c y a b
20 |
21 | ||| Sample from Gamma distribution using inverse CDF. It must hold that '0 < r < 1'.
22 | %foreign "C:gsl_cdf_gamma_Pinv,libgsl"
23 | gsl_gamma_cdf_inv_c : (r : Double) -> (a : Double) -> (b : Double) -> Double
24 |
25 | export
26 | gsl_gamma_cdf_inv : (a : Double) -> (b : Double) -> (r : Double) -> Double
27 | gsl_gamma_cdf_inv a b r = gsl_gamma_cdf_inv_c r a b
28 |