1 /** D bindings for GSL. 2 Authors: Chibisi Chima-Okereke 3 Copyright: Copyright (c) 2016, Chibisi Chima-Okereke. All rights reserved. 4 License: Boost License 1.0 5 */ 6 7 module gsl.monte; 8 import gsl.rng; 9 10 extern (C): 11 12 //monte 13 alias gsl_monte_function_struct gsl_monte_function; 14 15 struct gsl_monte_function_struct 16 { 17 double function (double*, size_t, void*) f; 18 size_t dim; 19 void* params; 20 } 21 22 //gsl_monte_miser 23 struct gsl_monte_miser_state 24 { 25 size_t min_calls; 26 size_t min_calls_per_bisection; 27 double dither; 28 double estimate_frac; 29 double alpha; 30 size_t dim; 31 int estimate_style; 32 int depth; 33 int verbose; 34 double* x; 35 double* xmid; 36 double* sigma_l; 37 double* sigma_r; 38 double* fmax_l; 39 double* fmax_r; 40 double* fmin_l; 41 double* fmin_r; 42 double* fsum_l; 43 double* fsum_r; 44 double* fsum2_l; 45 double* fsum2_r; 46 size_t* hits_l; 47 size_t* hits_r; 48 } 49 50 struct gsl_monte_miser_params 51 { 52 double estimate_frac; 53 size_t min_calls; 54 size_t min_calls_per_bisection; 55 double alpha; 56 double dither; 57 } 58 59 int gsl_monte_miser_integrate (gsl_monte_function* f, const(double)* xl, const(double)* xh, size_t dim, size_t calls, gsl_rng* r, gsl_monte_miser_state* state, double* result, double* abserr); 60 gsl_monte_miser_state* gsl_monte_miser_alloc (size_t dim); 61 int gsl_monte_miser_init (gsl_monte_miser_state* state); 62 void gsl_monte_miser_free (gsl_monte_miser_state* state); 63 void gsl_monte_miser_params_get (const(gsl_monte_miser_state)* state, gsl_monte_miser_params* params); 64 void gsl_monte_miser_params_set (gsl_monte_miser_state* state, const(gsl_monte_miser_params)* params); 65 66 //gsl_monte_plain 67 struct gsl_monte_plain_state 68 { 69 size_t dim; 70 double* x; 71 } 72 73 int gsl_monte_plain_integrate (const(gsl_monte_function)* f, const(double)* xl, const(double)* xu, const size_t dim, const size_t calls, gsl_rng* r, gsl_monte_plain_state* state, double* result, double* abserr); 74 gsl_monte_plain_state* gsl_monte_plain_alloc (size_t dim); 75 int gsl_monte_plain_init (gsl_monte_plain_state* state); 76 void gsl_monte_plain_free (gsl_monte_plain_state* state);