diff options
author | Arun Isaac | 2021-02-23 16:38:41 +0530 |
---|---|---|
committer | Arun Isaac | 2021-02-23 16:38:41 +0530 |
commit | e2bce25ab0f7eb0065812ebdc4f251206b86b446 (patch) | |
tree | 33482a9836257b95899f9789800f7d9374342d21 /scm/extent-sampling/wrap.scm | |
parent | c9bbe9be613e0a035a4d030778d85f4effc4cfaa (diff) | |
download | nsmc-e2bce25ab0f7eb0065812ebdc4f251206b86b446.tar.gz nsmc-e2bce25ab0f7eb0065812ebdc4f251206b86b446.tar.lz nsmc-e2bce25ab0f7eb0065812ebdc4f251206b86b446.zip |
Wrap volume function.
* scm/extent-sampling/wrap.scm (maybe-procedure->extent-oracle,
maybe-procedure->integrand): New functions.
Diffstat (limited to 'scm/extent-sampling/wrap.scm')
-rw-r--r-- | scm/extent-sampling/wrap.scm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/scm/extent-sampling/wrap.scm b/scm/extent-sampling/wrap.scm index 25b9970..6bf0972 100644 --- a/scm/extent-sampling/wrap.scm +++ b/scm/extent-sampling/wrap.scm @@ -311,3 +311,25 @@ (make-integrand (dynamic-func "x_coordinate_integrand" lib-extentsampling) %null-pointer)) +;; extent-sampling + +(define maybe-procedure->extent-oracle + (match-lambda + ((? procedure? proc) + (make-extent-oracle + (procedure->pointer double + (lambda (r x params) + (proc r x)) + (list '* '* '*)) + %null-pointer)) + (extent-oracle extent-oracle))) + +(define-public (volume extent-oracle true-volume dimension rtol) + (let ((stats (rstat-alloc))) + ((pointer->procedure double + (dynamic-func "volume" lib-extentsampling) + (list '* double '* unsigned-int double '*)) + (maybe-procedure->extent-oracle extent-oracle) + true-volume %gsl-random-state dimension rtol stats) + (rstat-n stats))) + |