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.roots; 8 9 //import core.stdc.math; 10 import gsl.math; 11 12 extern (C): 13 14 extern __gshared const(gsl_root_fsolver_type)* gsl_root_fsolver_bisection; 15 extern __gshared const(gsl_root_fsolver_type)* gsl_root_fsolver_brent; 16 extern __gshared const(gsl_root_fsolver_type)* gsl_root_fsolver_falsepos; 17 extern __gshared const(gsl_root_fdfsolver_type)* gsl_root_fdfsolver_newton; 18 extern __gshared const(gsl_root_fdfsolver_type)* gsl_root_fdfsolver_secant; 19 extern __gshared const(gsl_root_fdfsolver_type)* gsl_root_fdfsolver_steffenson; 20 21 struct gsl_root_fsolver_type 22 { 23 const(char)* name; 24 size_t size; 25 int function (void*, gsl_function*, double*, double, double) set; 26 int function (void*, gsl_function*, double*, double*, double*) iterate; 27 } 28 29 struct gsl_root_fsolver 30 { 31 const(gsl_root_fsolver_type)* type; 32 gsl_function* function_; 33 double root; 34 double x_lower; 35 double x_upper; 36 void* state; 37 } 38 39 struct gsl_root_fdfsolver_type 40 { 41 const(char)* name; 42 size_t size; 43 int function (void*, gsl_function_fdf*, double*) set; 44 int function (void*, gsl_function_fdf*, double*) iterate; 45 } 46 47 struct gsl_root_fdfsolver 48 { 49 const(gsl_root_fdfsolver_type)* type; 50 gsl_function_fdf* fdf; 51 double root; 52 void* state; 53 } 54 55 gsl_root_fsolver* gsl_root_fsolver_alloc (const(gsl_root_fsolver_type)* T); 56 void gsl_root_fsolver_free (gsl_root_fsolver* s); 57 int gsl_root_fsolver_set (gsl_root_fsolver* s, gsl_function* f, double x_lower, double x_upper); 58 int gsl_root_fsolver_iterate (gsl_root_fsolver* s); 59 const(char)* gsl_root_fsolver_name (const(gsl_root_fsolver)* s); 60 double gsl_root_fsolver_root (const(gsl_root_fsolver)* s); 61 double gsl_root_fsolver_x_lower (const(gsl_root_fsolver)* s); 62 double gsl_root_fsolver_x_upper (const(gsl_root_fsolver)* s); 63 gsl_root_fdfsolver* gsl_root_fdfsolver_alloc (const(gsl_root_fdfsolver_type)* T); 64 int gsl_root_fdfsolver_set (gsl_root_fdfsolver* s, gsl_function_fdf* fdf, double root); 65 int gsl_root_fdfsolver_iterate (gsl_root_fdfsolver* s); 66 void gsl_root_fdfsolver_free (gsl_root_fdfsolver* s); 67 const(char)* gsl_root_fdfsolver_name (const(gsl_root_fdfsolver)* s); 68 double gsl_root_fdfsolver_root (const(gsl_root_fdfsolver)* s); 69 int gsl_root_test_interval (double x_lower, double x_upper, double epsabs, double epsrel); 70 int gsl_root_test_residual (double f, double epsabs); 71 int gsl_root_test_delta (double x1, double x0, double epsabs, double epsrel);