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);