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.randist; 8 import gsl.rng; 9 10 extern (C): 11 12 struct gsl_ran_discrete_t 13 { 14 size_t K; 15 size_t* A; 16 double* F; 17 } 18 19 uint gsl_ran_bernoulli (const(gsl_rng)* r, double p); 20 double gsl_ran_bernoulli_pdf (const uint k, double p); 21 double gsl_ran_beta (const(gsl_rng)* r, const double a, const double b); 22 double gsl_ran_beta_pdf (const double x, const double a, const double b); 23 uint gsl_ran_binomial (const(gsl_rng)* r, double p, uint n); 24 uint gsl_ran_binomial_knuth (const(gsl_rng)* r, double p, uint n); 25 uint gsl_ran_binomial_tpe (const(gsl_rng)* r, double p, uint n); 26 double gsl_ran_binomial_pdf (const uint k, const double p, const uint n); 27 double gsl_ran_exponential (const(gsl_rng)* r, const double mu); 28 double gsl_ran_exponential_pdf (const double x, const double mu); 29 double gsl_ran_exppow (const(gsl_rng)* r, const double a, const double b); 30 double gsl_ran_exppow_pdf (const double x, const double a, const double b); 31 double gsl_ran_cauchy (const(gsl_rng)* r, const double a); 32 double gsl_ran_cauchy_pdf (const double x, const double a); 33 double gsl_ran_chisq (const(gsl_rng)* r, const double nu); 34 double gsl_ran_chisq_pdf (const double x, const double nu); 35 void gsl_ran_dirichlet (const(gsl_rng)* r, const size_t K, const(double)* alpha, double* theta); 36 double gsl_ran_dirichlet_pdf (const size_t K, const(double)* alpha, const(double)* theta); 37 double gsl_ran_dirichlet_lnpdf (const size_t K, const(double)* alpha, const(double)* theta); 38 double gsl_ran_erlang (const(gsl_rng)* r, const double a, const double n); 39 double gsl_ran_erlang_pdf (const double x, const double a, const double n); 40 double gsl_ran_fdist (const(gsl_rng)* r, const double nu1, const double nu2); 41 double gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2); 42 double gsl_ran_flat (const(gsl_rng)* r, const double a, const double b); 43 double gsl_ran_flat_pdf (double x, const double a, const double b); 44 double gsl_ran_gamma (const(gsl_rng)* r, const double a, const double b); 45 double gsl_ran_gamma_int (const(gsl_rng)* r, const uint a); 46 double gsl_ran_gamma_pdf (const double x, const double a, const double b); 47 double gsl_ran_gamma_mt (const(gsl_rng)* r, const double a, const double b); 48 double gsl_ran_gamma_knuth (const(gsl_rng)* r, const double a, const double b); 49 double gsl_ran_gaussian (const(gsl_rng)* r, const double sigma); 50 double gsl_ran_gaussian_ratio_method (const(gsl_rng)* r, const double sigma); 51 double gsl_ran_gaussian_ziggurat (const(gsl_rng)* r, const double sigma); 52 double gsl_ran_gaussian_pdf (const double x, const double sigma); 53 double gsl_ran_ugaussian (const(gsl_rng)* r); 54 double gsl_ran_ugaussian_ratio_method (const(gsl_rng)* r); 55 double gsl_ran_ugaussian_pdf (const double x); 56 double gsl_ran_gaussian_tail (const(gsl_rng)* r, const double a, const double sigma); 57 double gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma); 58 double gsl_ran_ugaussian_tail (const(gsl_rng)* r, const double a); 59 double gsl_ran_ugaussian_tail_pdf (const double x, const double a); 60 void gsl_ran_bivariate_gaussian (const(gsl_rng)* r, double sigma_x, double sigma_y, double rho, double* x, double* y); 61 double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, const double sigma_x, const double sigma_y, const double rho); 62 double gsl_ran_landau (const(gsl_rng)* r); 63 double gsl_ran_landau_pdf (const double x); 64 uint gsl_ran_geometric (const(gsl_rng)* r, const double p); 65 double gsl_ran_geometric_pdf (const uint k, const double p); 66 uint gsl_ran_hypergeometric (const(gsl_rng)* r, uint n1, uint n2, uint t); 67 double gsl_ran_hypergeometric_pdf (const uint k, const uint n1, const uint n2, uint t); 68 double gsl_ran_gumbel1 (const(gsl_rng)* r, const double a, const double b); 69 double gsl_ran_gumbel1_pdf (const double x, const double a, const double b); 70 double gsl_ran_gumbel2 (const(gsl_rng)* r, const double a, const double b); 71 double gsl_ran_gumbel2_pdf (const double x, const double a, const double b); 72 double gsl_ran_logistic (const(gsl_rng)* r, const double a); 73 double gsl_ran_logistic_pdf (const double x, const double a); 74 double gsl_ran_lognormal (const(gsl_rng)* r, const double zeta, const double sigma); 75 double gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma); 76 uint gsl_ran_logarithmic (const(gsl_rng)* r, const double p); 77 double gsl_ran_logarithmic_pdf (const uint k, const double p); 78 void gsl_ran_multinomial (const(gsl_rng)* r, const size_t K, const uint N, const(double)* p, uint* n); 79 double gsl_ran_multinomial_pdf (const size_t K, const(double)* p, const(uint)* n); 80 double gsl_ran_multinomial_lnpdf (const size_t K, const(double)* p, const(uint)* n); 81 uint gsl_ran_negative_binomial (const(gsl_rng)* r, double p, double n); 82 double gsl_ran_negative_binomial_pdf (const uint k, const double p, double n); 83 uint gsl_ran_pascal (const(gsl_rng)* r, double p, uint n); 84 double gsl_ran_pascal_pdf (const uint k, const double p, uint n); 85 double gsl_ran_pareto (const(gsl_rng)* r, double a, const double b); 86 double gsl_ran_pareto_pdf (const double x, const double a, const double b); 87 uint gsl_ran_poisson (const(gsl_rng)* r, double mu); 88 void gsl_ran_poisson_array (const(gsl_rng)* r, size_t n, uint* array, double mu); 89 double gsl_ran_poisson_pdf (const uint k, const double mu); 90 double gsl_ran_rayleigh (const(gsl_rng)* r, const double sigma); 91 double gsl_ran_rayleigh_pdf (const double x, const double sigma); 92 double gsl_ran_rayleigh_tail (const(gsl_rng)* r, const double a, const double sigma); 93 double gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma); 94 double gsl_ran_tdist (const(gsl_rng)* r, const double nu); 95 double gsl_ran_tdist_pdf (const double x, const double nu); 96 double gsl_ran_laplace (const(gsl_rng)* r, const double a); 97 double gsl_ran_laplace_pdf (const double x, const double a); 98 double gsl_ran_levy (const(gsl_rng)* r, const double c, const double alpha); 99 double gsl_ran_levy_skew (const(gsl_rng)* r, const double c, const double alpha, const double beta); 100 double gsl_ran_weibull (const(gsl_rng)* r, const double a, const double b); 101 double gsl_ran_weibull_pdf (const double x, const double a, const double b); 102 void gsl_ran_dir_2d (const(gsl_rng)* r, double* x, double* y); 103 void gsl_ran_dir_2d_trig_method (const(gsl_rng)* r, double* x, double* y); 104 void gsl_ran_dir_3d (const(gsl_rng)* r, double* x, double* y, double* z); 105 void gsl_ran_dir_nd (const(gsl_rng)* r, size_t n, double* x); 106 void gsl_ran_shuffle (const(gsl_rng)* r, void* base, size_t nmembm, size_t size); 107 int gsl_ran_choose (const(gsl_rng)* r, void* dest, size_t k, void* src, size_t n, size_t size); 108 void gsl_ran_sample (const(gsl_rng)* r, void* dest, size_t k, void* src, size_t n, size_t size); 109 gsl_ran_discrete_t* gsl_ran_discrete_preproc (size_t K, const(double)* P); 110 void gsl_ran_discrete_free (gsl_ran_discrete_t* g); 111 size_t gsl_ran_discrete (const(gsl_rng)* r, const(gsl_ran_discrete_t)* g); 112 double gsl_ran_discrete_pdf (size_t k, const(gsl_ran_discrete_t)* g);