1 /** GSL bindings for D. 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; 8 public import gsl.blas; 9 public import gsl.block; 10 public import gsl.bspline; 11 public import gsl.cblas; 12 public import gsl.cdf; 13 public import gsl.chebyshev; 14 public import gsl.check_range; 15 public import gsl.combination; 16 public import gsl.complex; 17 public import gsl.constants; 18 public import gsl.deriv; 19 public import gsl.dht; 20 public import gsl.diff; 21 public import gsl.eigen; 22 public import gsl.errno; 23 public import gsl.fft; 24 public import gsl.fit; 25 public import gsl.histogram; 26 public import gsl.integration; 27 public import gsl.interpolation; 28 public import gsl.linalg; 29 public import gsl.machine; 30 public import gsl.math; 31 public import gsl.matrix; 32 public import gsl.min; 33 public import gsl.minmax; 34 public import gsl.mode; 35 public import gsl.monte; 36 public import gsl.multifit; 37 public import gsl.multilarge; 38 public import gsl.multimin; 39 public import gsl.multiroots; 40 public import gsl.multiset; 41 public import gsl.nan; 42 public import gsl.ntuple; 43 public import gsl.odeiv2; 44 public import gsl.odeiv; 45 public import gsl.permutation; 46 public import gsl.poly; 47 public import gsl.pow_int; 48 public import gsl.precision; 49 public import gsl.qrng; 50 public import gsl.randist; 51 public import gsl.rng; 52 public import gsl.roots; 53 public import gsl.rstat; 54 public import gsl.siman; 55 public import gsl.sort; 56 public import gsl.spblas; 57 public import gsl.spmatrix; 58 public import gsl.statistics; 59 public import gsl.sum; 60 public import gsl.sys; 61 public import gsl.vector; 62 public import gsl.wavelet; 63 64 65 import std.math: pow, round; 66 T round_dp(T)(T x, int dp = 0){ 67 T factor = pow(10, dp + 1); 68 x *= factor; 69 x += 1.; 70 x /= 10.; 71 factor /= 10.; 72 return round(x)/factor; 73 } 74 75 76 unittest 77 { 78 import std.stdio : writefln; 79 import gsl.randist : gsl_ran_gaussian_pdf; 80 import gsl.cdf : gsl_cdf_gaussian_P; 81 assert(round_dp(gsl_ran_gaussian_pdf (0 , 1.), 7) == 0.3989423); 82 assert(gsl_cdf_gaussian_P (0 , 1.) == 0.5); 83 assert(round_dp(gsl_cdf_gaussian_P (-1.96 , 1.), 7) == 0.0249979); 84 assert(round_dp(gsl_cdf_gaussian_P (1.96, 1.), 7) == 0.9750021); 85 } 86 87 unittest 88 { 89 //// 90 import std.stdio : writefln; 91 import std.range : iota, array; 92 import gsl.statistics : gsl_stats_mean, gsl_stats_variance, gsl_stats_sd, gsl_stats_absdev; 93 double[10] some_numbers = iota(1., 11., 1.).array(); 94 assert(round_dp(gsl_ran_gaussian_pdf (0 , 1.), 7) == 0.3989423); 95 assert(gsl_stats_mean(some_numbers.ptr, 1, some_numbers.length) == 5.5); 96 assert(round_dp(gsl_stats_sd(some_numbers.ptr, 1, some_numbers.length), 7) == 3.0276504); 97 assert(round_dp(gsl_stats_variance(some_numbers.ptr, 1, some_numbers.length), 7) == 9.1666667); 98 assert(gsl_stats_absdev(some_numbers.ptr, 1, some_numbers.length) == 2.5); 99 } 100 101 /* 102 void main(){ 103 import std.range : iota, array; 104 import std.stdio : writeln; 105 106 double[] x; 107 import gsl.randist : gsl_ran_gaussian_pdf; 108 import gsl.cdf : gsl_cdf_gaussian_P; 109 writeln("PDF, x = 0: ", gsl_ran_gaussian_pdf(0, 1)); 110 writeln("CDF, x = 0: ", gsl_cdf_gaussian_P (0, 1)); 111 writeln("CDF, x = -1.96: ", gsl_cdf_gaussian_P (-1.96, 1)); 112 writeln("CDF, x = 1.96: ", gsl_cdf_gaussian_P (1.96, 1)); 113 114 import gsl.statistics : gsl_stats_mean, gsl_stats_variance, gsl_stats_sd, gsl_stats_absdev; 115 double[10] some_numbers = iota(1., 11., 1.).array(); 116 writeln("\n", gsl_stats_mean(some_numbers.ptr, 1, some_numbers.length)); 117 writeln(gsl_stats_sd(some_numbers.ptr, 1, some_numbers.length)); 118 writeln(gsl_stats_variance(some_numbers.ptr, 1, some_numbers.length)); 119 writeln(gsl_stats_absdev(some_numbers.ptr, 1, some_numbers.length)); 120 } 121 */