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.min; 8 //import core.stdc.math; 9 import core.stdc.config : c_ulong; 10 import gsl.linalg; 11 import gsl.math; 12 13 extern (C): 14 15 alias int function (gsl_function_struct*, double*, double*, double*, double*, double*, double*, c_ulong) gsl_min_bracketing_function; 16 17 extern __gshared const(gsl_min_fminimizer_type)* gsl_min_fminimizer_goldensection; 18 extern __gshared const(gsl_min_fminimizer_type)* gsl_min_fminimizer_brent; 19 extern __gshared const(gsl_min_fminimizer_type)* gsl_min_fminimizer_quad_golden; 20 21 struct gsl_min_fminimizer_type 22 { 23 const(char)* name; 24 size_t size; 25 int function (void*, gsl_function*, double, double, double, double, double, double) set; 26 int function (void*, gsl_function*, double*, double*, double*, double*, double*, double*) iterate; 27 } 28 29 struct gsl_min_fminimizer 30 { 31 const(gsl_min_fminimizer_type)* type; 32 gsl_function* function_; 33 double x_minimum; 34 double x_lower; 35 double x_upper; 36 double f_minimum; 37 double f_lower; 38 double f_upper; 39 void* state; 40 } 41 42 gsl_min_fminimizer* gsl_min_fminimizer_alloc (const(gsl_min_fminimizer_type)* T); 43 void gsl_min_fminimizer_free (gsl_min_fminimizer* s); 44 int gsl_min_fminimizer_set (gsl_min_fminimizer* s, gsl_function* f, double x_minimum, double x_lower, double x_upper); 45 int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer* s, gsl_function* f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper); 46 int gsl_min_fminimizer_iterate (gsl_min_fminimizer* s); 47 const(char)* gsl_min_fminimizer_name (const(gsl_min_fminimizer)* s); 48 double gsl_min_fminimizer_x_minimum (const(gsl_min_fminimizer)* s); 49 double gsl_min_fminimizer_x_lower (const(gsl_min_fminimizer)* s); 50 double gsl_min_fminimizer_x_upper (const(gsl_min_fminimizer)* s); 51 double gsl_min_fminimizer_f_minimum (const(gsl_min_fminimizer)* s); 52 double gsl_min_fminimizer_f_lower (const(gsl_min_fminimizer)* s); 53 double gsl_min_fminimizer_f_upper (const(gsl_min_fminimizer)* s); 54 double gsl_min_fminimizer_minimum (const(gsl_min_fminimizer)* s); 55 int gsl_min_test_interval (double x_lower, double x_upper, double epsabs, double epsrel); 56 int gsl_min_find_bracket (gsl_function* f, double* x_minimum, double* f_minimum, double* x_lower, double* f_lower, double* x_upper, double* f_upper, size_t eval_max);