From 8301cc79700c6a617f2d114a4c9b6ca6eaa5ce42 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 17 May 2009 15:33:32 -0700 Subject: [PATCH] Improve Monte typemaps --- swig/Monte.i | 20 +++++++------------- swig/gsl_typemaps.i | 1 + t/Monte.t | 13 +++++++------ 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/swig/Monte.i b/swig/Monte.i index afb3e16..6098d30 100644 --- a/swig/Monte.i +++ b/swig/Monte.i @@ -1,25 +1,13 @@ %module "Math::GSL::Monte" %include "typemaps.i" %include "gsl_typemaps.i" -%include "gsl/gsl_monte.h" -%include "gsl/gsl_monte_miser.h" -%include "gsl/gsl_monte_plain.h" -%include "gsl/gsl_monte_vegas.h" -%include "gsl/gsl_types.h" -%include "gsl/gsl_errno.h" %typemap(argout) ( gsl_monte_function * f, double xl[], double xu[], size_t dim, size_t calls, gsl_rng * r, gsl_monte_vegas_state *state, double *result, double *abserr) { - // This is not being triggered - fprintf(stderr, "argout of monte_vegas_int!"); -k - + // fprintf(stderr, "argout of monte_vegas_int!"); } -%typemap(in) void * { - $1 = (double *) $input; -}; %{ @@ -30,4 +18,10 @@ k #include "gsl/gsl_types.h" #include "gsl/gsl_errno.h" %} +%include "gsl/gsl_monte.h" +%include "gsl/gsl_monte_miser.h" +%include "gsl/gsl_monte_plain.h" +%include "gsl/gsl_monte_vegas.h" +%include "gsl/gsl_types.h" +%include "gsl/gsl_errno.h" %include "../pod/Monte.pod" diff --git a/swig/gsl_typemaps.i b/swig/gsl_typemaps.i index 7433801..fa2d5c5 100644 --- a/swig/gsl_typemaps.i +++ b/swig/gsl_typemaps.i @@ -84,6 +84,7 @@ typedef int size_t; %apply double const [] { double *data, double *dest, double *f_in, double *f_out, double data[], const double * src, double x[], double a[], double b[], + double xu[], double xl[], const double * x, const double * y, const double * w , const double x_array[], const double xrange[], const double yrange[], double * base, const double * base, const double xrange[], const double yrange[] , diff --git a/t/Monte.t b/t/Monte.t index 1d328b4..c5fb6ce 100644 --- a/t/Monte.t +++ b/t/Monte.t @@ -37,15 +37,16 @@ sub TEST_MONTE_VEGAS_INTEGRATE : Tests(3) { my $self = shift; my $state = gsl_monte_vegas_alloc(1); my $rng = Math::GSL::RNG->new; - my $status; - eval { - $status = gsl_monte_vegas_integrate( sub { $_[0] ** 2 }, + my ($status, @stuff); + ($status, @stuff) = gsl_monte_vegas_integrate( sub { $_[0] ** 2 }, [ 0 ], [ 1 ], 1, 500000, $rng->raw, $state,); - }; + ok( $state->{dim} == 1, 'dim = 1'); - local $TODO = 'gsl_monte_function is broke'; + warn Dumper [ @stuff ]; + warn Dumper [ $status, $state, $state->{result} ]; + ok_status($status); + local $TODO = 'result of Monte carlo needs fixin'; ok_similar( [ 1/3 ] , [ $state->{result} ] ); - ok_status($status, $TODO); } sub TEST_ALLOC : Tests(6) { -- 2.11.4.GIT