From b712756e74e3e3c101064bbefc1d062b73d11443 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Tue, 23 Feb 2021 16:29:44 +0530 Subject: Implement the lower incomplete gamma function as a scheme wrapper. With this change, the wrapper around the gsl lower incomplete gamma function is directly in scheme. Earlier, there was one layer of wrapping in C which needed to be wrapped again in scheme. * include/utils.h (lower_incomplete_gamma): Delete function. * src/utils.sc (lower-incomplete-gamma): Delete function. * scm/extent-sampling/wrap.scm (lower-incomplete-gamma): New function. --- scm/extent-sampling/wrap.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'scm/extent-sampling') diff --git a/scm/extent-sampling/wrap.scm b/scm/extent-sampling/wrap.scm index 65fd7ad..0e32452 100644 --- a/scm/extent-sampling/wrap.scm +++ b/scm/extent-sampling/wrap.scm @@ -30,6 +30,16 @@ (dynamic-func "surface_area_of_ball" lib-extentsampling) (list int))) +(define-public (lower-incomplete-gamma s x) + (* ((pointer->procedure double + (dynamic-func "gsl_sf_gamma" lib-gsl) + (list double)) + s) + ((pointer->procedure double + (dynamic-func "gsl_sf_gamma_inc_P" lib-gsl) + (list double double)) + s x))) + (define-public angle-between-vectors (pointer->procedure double (dynamic-func "angle_between_vectors" lib-extentsampling) -- cgit v1.2.3