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.math;
8 import gsl.sys;
9 import gsl.machine;
10 import gsl.precision;
11 import gsl.nan;
12 import gsl.pow_int;
13 import gsl.minmax;
14 
15 extern (C):
16 
17 enum M_E = 2.71828182845904523536028747135;      /* e */
18 enum M_LOG2E = 1.44269504088896340735992468100;      /* log_2 (e) */
19 enum M_LOG10E = 0.43429448190325182765112891892;      /* log_10 (e) */
20 enum M_SQRT2 = 1.41421356237309504880168872421;      /* sqrt(2) */
21 enum M_SQRT1_2 = 0.70710678118654752440084436210;      /* sqrt(1/2) */
22 enum M_SQRT3 = 1.73205080756887729352744634151;      /* sqrt(3) */
23 enum M_PI = 3.14159265358979323846264338328;      /* pi */
24 enum M_PI_2 = 1.57079632679489661923132169164;      /* pi/2 */
25 enum M_PI_4 = 0.78539816339744830961566084582;     /* pi/4 */
26 enum M_SQRTPI = 1.77245385090551602729816748334;      /* sqrt(pi) */
27 enum M_2_SQRTPI = 1.12837916709551257389615890312;      /* 2/sqrt(pi) */
28 enum M_1_PI = 0.31830988618379067153776752675;      /* 1/pi */
29 enum M_2_PI = 0.63661977236758134307553505349;      /* 2/pi */
30 enum M_LN10 = 2.30258509299404568401799145468;      /* ln(10) */
31 enum M_LN2 = 0.69314718055994530941723212146;      /* ln(2) */
32 enum M_LNPI = 1.14472988584940017414342735135;      /* ln(pi) */
33 enum M_EULER = 0.57721566490153286060651209008;      /* Euler constant */
34 
35 alias gsl_function_struct gsl_function;
36 alias gsl_function_fdf_struct gsl_function_fdf;
37 alias gsl_function_vec_struct gsl_function_vec;
38 
39 struct gsl_function_struct
40 {
41     double function (double, void*) function_;
42     void* params;
43 }
44 
45 struct gsl_function_fdf_struct
46 {
47     double function (double, void*) f;
48     double function (double, void*) df;
49     void function (double, void*, double*, double*) fdf;
50     void* params;
51 }
52 
53 struct gsl_function_vec_struct
54 {
55     int function (double, double*, void*) function_;
56     void* params;
57 }