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 }