0 | module Statistics.Distribution.Beta
 1 |
 2 | import Statistics.Distribution.GSL
 3 | import Data.So
 4 |
 5 |
 6 | ||| Sample from Beta distribution
 7 | %foreign "C:gsl_ran_beta,libgsl"
 8 | gsl_beta_c : (seed : AnyPtr) -> (a : Double) -> (b : Double) -> PrimIO Double
 9 |
10 | export
11 | gsl_beta : (a : Double) -> (b : Double) -> GslRng -> IO Double
12 | gsl_beta a b (MkGslRng seed) = primIO $ gsl_beta_c seed a b
13 |
14 | ||| Compute PDF from Beta distribution
15 | %foreign "C:gsl_ran_beta_pdf,libgsl"
16 | gsl_beta_pdf_c : (obs : Double) -> (a : Double) -> (b : Double) -> Double
17 |
18 | export
19 | gsl_beta_pdf : (a : Double) -> (b : Double) -> (obs : Double) -> Double
20 | gsl_beta_pdf a b y = gsl_beta_pdf_c y a b
21 |
22 | ||| Sample from Beta distribution using inverse CDF. It must hold that '0 < r < 1'.
23 | %foreign "C:gsl_cdf_beta_Pinv,libgsl"
24 | gsl_beta_cdf_inv_c : (r : Double) -> (a : Double) -> (b : Double) -> Double
25 |
26 | export
27 | gsl_beta_cdf_inv : (a : Double) -> (b : Double) -> (r : Double) -> Double
28 | gsl_beta_cdf_inv a b r = gsl_beta_cdf_inv_c r a b
29 |