0 | module Statistics.Distribution.Geometric
 1 |
 2 | import Statistics.Distribution.GSL
 3 |
 4 | ||| Sample from Geometric distribution
 5 | %foreign "C:gsl_ran_geometric,libgsl"
 6 | gsl_geometric_c : (seed : AnyPtr) -> (p : Double) -> PrimIO Int
 7 |
 8 | export
 9 | gsl_geometric : (p : Double) -> GslRng -> IO Nat
10 | gsl_geometric p (MkGslRng seed) = primIO (gsl_geometric_c seed p) >>= pure . cast
11 |
12 | ||| Compute PDF from Geometric distribution
13 | %foreign "C:gsl_ran_geometric_pdf,libgsl"
14 | gsl_geometric_pdf_c : (obs : Int) -> (p : Double) -> Double
15 |
16 | export
17 | gsl_geometric_pdf : (p : Double) -> (obs : Nat) -> Double
18 | gsl_geometric_pdf p y = gsl_geometric_pdf_c (cast y) p