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);