Lots of tests will FAIL.
[Math-GSL.git] / Randist.i
blob904dabab50614fa66fb1d86647a27a27b62b6cf4
1 %module Randist
2 %include "typemaps.i"
3 %typemap(in) void * {
4 AV *tempav;
5 I32 len;
6 int i;
7 SV **tv;
8 printf("FOO\n");
10 if (!SvROK($input))
11 croak("Argument $argnum is not a reference.");
12 if (SvTYPE(SvRV($input)) != SVt_PVAV)
13 croak("Argument $argnum is not an array.");
15 tempav = (AV*)SvRV($input);
16 len = av_len(tempav);
17 $1 = (void **) malloc((len+2)*sizeof(int *));
18 for (i = 0; i <= len; i++) {
19 tv = av_fetch(tempav, i, 0);
20 $1[i] = (int *) SvIV(*tv);
24 #include "/usr/local/include/gsl/gsl_randist.h"
25 extern void gsl_ran_shuffle(const gsl_rng *, void *, size_t, size_t);
27 %include "/usr/local/include/gsl/gsl_randist.h"
28 //extern void gsl_ran_shuffle(const gsl_rng * r, void * base, size_t nmembm, size_t size);
31 %perlcode %{
33 our @EXPORT_OK = qw/gsl_ran_bernoulli gsl_ran_bernoulli_pdf gsl_ran_beta
34 gsl_ran_beta_pdf gsl_ran_binomial gsl_ran_binomial_knuth
35 gsl_ran_binomial_tpe gsl_ran_binomial_pdf gsl_ran_exponential
36 gsl_ran_exponential_pdf gsl_ran_exppow gsl_ran_exppow_pdf
37 gsl_ran_cauchy gsl_ran_cauchy_pdf gsl_ran_chisq
38 gsl_ran_chisq_pdf gsl_ran_dirichlet gsl_ran_dirichlet_pdf
39 gsl_ran_dirichlet_lnpdf gsl_ran_erlang gsl_ran_erlang_pdf
40 gsl_ran_fdist gsl_ran_fdist_pdf gsl_ran_flat
41 gsl_ran_flat_pdf gsl_ran_gamma gsl_ran_gamma_int
42 gsl_ran_gamma_pdf gsl_ran_gamma_mt gsl_ran_gamma_knuth
43 gsl_ran_gaussian gsl_ran_gaussian_ratio_method gsl_ran_gaussian_ziggurat
44 gsl_ran_gaussian_pdf gsl_ran_ugaussian gsl_ran_ugaussian_ratio_method
45 gsl_ran_ugaussian_pdf gsl_ran_gaussian_tail gsl_ran_gaussian_tail_pdf
46 gsl_ran_ugaussian_tail gsl_ran_ugaussian_tail_pdf gsl_ran_bivariate_gaussian
47 gsl_ran_bivariate_gaussian_pdf gsl_ran_landau gsl_ran_landau_pdf
48 gsl_ran_geometric gsl_ran_geometric_pdf gsl_ran_hypergeometric
49 gsl_ran_hypergeometric_pdf gsl_ran_gumbel1 gsl_ran_gumbel1_pdf
50 gsl_ran_gumbel2 gsl_ran_gumbel2_pdf gsl_ran_logistic
51 gsl_ran_logistic_pdf gsl_ran_lognormal gsl_ran_lognormal_pdf
52 gsl_ran_logarithmic gsl_ran_logarithmic_pdf gsl_ran_multinomial
53 gsl_ran_multinomial_pdf gsl_ran_multinomial_lnpdf
54 gsl_ran_negative_binomial gsl_ran_negative_binomial_pdf gsl_ran_pascal
55 gsl_ran_pascal_pdf gsl_ran_pareto gsl_ran_pareto_pdf
56 gsl_ran_poisson gsl_ran_poisson_array
57 gsl_ran_poisson_pdf gsl_ran_rayleigh gsl_ran_rayleigh_pdf
58 gsl_ran_rayleigh_tail gsl_ran_rayleigh_tail_pdf gsl_ran_tdist
59 gsl_ran_tdist_pdf gsl_ran_laplace gsl_ran_laplace_pdf
60 gsl_ran_levy gsl_ran_levy_skew gsl_ran_weibull
61 gsl_ran_weibull_pdf gsl_ran_dir_2d gsl_ran_dir_2d_trig_method
62 gsl_ran_dir_3d gsl_ran_dir_nd gsl_ran_shuffle
63 gsl_ran_choose gsl_ran_sample
64 gsl_ran_discrete_t gsl_ran_discrete_free
65 gsl_ran_discrete gsl_ran_discrete_pdf
68 our %EXPORT_TAGS = (
69 all => [ @EXPORT_OK ],
70 logarithmic => [ gsl_ran_logarithmic , gsl_ran_logarithmic_pdf ],
71 choose => [ gsl_ran_choose ],
72 exponential => [ gsl_ran_exponential , gsl_ran_exponential_pdf ],
73 gumbel1 => [ gsl_ran_gumbel1 , gsl_ran_gumbel1_pdf ],
74 exppow => [ gsl_ran_exppow , gsl_ran_exppow_pdf ],
75 sample => [ gsl_ran_sample ],
76 logistic => [ gsl_ran_logistic , gsl_ran_logistic_pdf ],
77 gaussian => [
78 gsl_ran_gaussian , gsl_ran_gaussian_ratio_method , gsl_ran_gaussian_ziggurat,
79 gsl_ran_gaussian_pdf , gsl_ran_gaussian_tail , gsl_ran_gaussian_tail_pdf
81 poisson => [ gsl_ran_poisson , gsl_ran_poisson_array , gsl_ran_poisson_pdf ],
82 binomial => [ gsl_ran_binomial , gsl_ran_binomial_knuth , gsl_ran_binomial_tpe ,
83 gsl_ran_binomial_pdf ],
84 fdist => [ gsl_ran_fdist , gsl_ran_fdist_pdf ],
85 chisq => [ gsl_ran_chisq , gsl_ran_chisq_pdf ],
86 gamma => [ gsl_ran_gamma , gsl_ran_gamma_int , gsl_ran_gamma_pdf , gsl_ran_gamma_mt , gsl_ran_gamma_knuth ],
87 hypergeometric => [ gsl_ran_hypergeometric , gsl_ran_hypergeometric_pdf ],
88 dirichlet => [ gsl_ran_dirichlet , gsl_ran_dirichlet_pdf , gsl_ran_dirichlet_lnpdf ],
89 negative => [ gsl_ran_negative_binomial , gsl_ran_negative_binomial_pdf ],
90 flat => [ gsl_ran_flat , gsl_ran_flat_pdf ],
91 geometric => [ gsl_ran_geometric , gsl_ran_geometric_pdf ],
92 discrete => [ gsl_ran_discrete , gsl_ran_discrete_pdf],
93 tdist => [ gsl_ran_tdist , gsl_ran_tdist_pdf ],
94 ugaussian => [ gsl_ran_ugaussian , gsl_ran_ugaussian_ratio_method , gsl_ran_ugaussian_pdf ,
95 gsl_ran_ugaussian_tail , gsl_ran_ugaussian_tail_pdf ],
96 rayleigh => [ gsl_ran_rayleigh , gsl_ran_rayleigh_pdf , gsl_ran_rayleigh_tail ,
97 gsl_ran_rayleigh_tail_pdf ],
98 dir => [ gsl_ran_dir_2d , gsl_ran_dir_2d_trig_method , gsl_ran_dir_3d , gsl_ran_dir_nd ],
99 pascal => [ gsl_ran_pascal , gsl_ran_pascal_pdf ],
100 gumbel2 => [ gsl_ran_gumbel2 , gsl_ran_gumbel2_pdf ],
101 shuffle => [ gsl_ran_shuffle ],
102 landau => [ gsl_ran_landau , gsl_ran_landau_pdf ],
103 bernoulli => [ gsl_ran_bernoulli , gsl_ran_bernoulli_pdf ],
104 weibull => [ gsl_ran_weibull , gsl_ran_weibull_pdf ],
105 multinomial => [ gsl_ran_multinomial , gsl_ran_multinomial_pdf , gsl_ran_multinomial_lnpdf ],
106 beta => [ gsl_ran_beta , gsl_ran_beta_pdf ],
107 lognormal => [ gsl_ran_lognormal , gsl_ran_lognormal_pdf ],
108 laplace => [ gsl_ran_laplace , gsl_ran_laplace_pdf ],
109 erlang => [ gsl_ran_erlang , gsl_ran_erlang_pdf ],
110 cauchy => [ gsl_ran_cauchy , gsl_ran_cauchy_pdf ],
111 levy => [ gsl_ran_levy , gsl_ran_levy_skew ],
112 bivariate => [ gsl_ran_bivariate_gaussian , gsl_ran_bivariate_gaussian_pdf ],
113 pareto => [ gsl_ran_pareto , gsl_ran_pareto_pdf ]
116 __END__
118 =head1 NAME
120 Math::GSL::Randist - Probability Distributions
122 =head1 SYPNOPSIS
124 use Math::GSL::Randist qw/put_functions_here/;
126 =head1 DESCRIPTION
128 Here is a list of all the functions included in this module :
130 gsl_ran_bernoulli gsl_ran_bernoulli_pdf gsl_ran_beta
131 gsl_ran_beta_pdf gsl_ran_binomial gsl_ran_binomial_knuth
132 gsl_ran_binomial_tpe gsl_ran_binomial_pdf gsl_ran_exponential
133 gsl_ran_exponential_pdf gsl_ran_exppow gsl_ran_exppow_pdf
134 gsl_ran_cauchy gsl_ran_cauchy_pdf gsl_ran_chisq
135 gsl_ran_chisq_pdf gsl_ran_dirichlet gsl_ran_dirichlet_pdf
136 gsl_ran_dirichlet_lnpdf gsl_ran_erlang gsl_ran_erlang_pdf
137 gsl_ran_fdist gsl_ran_fdist_pdf gsl_ran_flat
138 gsl_ran_flat_pdf gsl_ran_gamma gsl_ran_gamma_int
139 gsl_ran_gamma_pdf gsl_ran_gamma_mt gsl_ran_gamma_knuth
140 gsl_ran_gaussian gsl_ran_gaussian_ratio_method gsl_ran_gaussian_ziggurat
141 gsl_ran_gaussian_pdf gsl_ran_ugaussian gsl_ran_ugaussian_ratio_method
142 gsl_ran_ugaussian_pdf gsl_ran_gaussian_tail gsl_ran_gaussian_tail_pdf
143 gsl_ran_ugaussian_tail gsl_ran_ugaussian_tail_pdf gsl_ran_bivariate_gaussian
144 gsl_ran_bivariate_gaussian_pdf gsl_ran_landau gsl_ran_landau_pdf
145 gsl_ran_geometric gsl_ran_geometric_pdf gsl_ran_hypergeometric
146 gsl_ran_hypergeometric_pdf gsl_ran_gumbel1 gsl_ran_gumbel1_pdf
147 gsl_ran_gumbel2 gsl_ran_gumbel2_pdf gsl_ran_logistic
148 gsl_ran_logistic_pdf gsl_ran_lognormal gsl_ran_lognormal_pdf
149 gsl_ran_logarithmic gsl_ran_logarithmic_pdf gsl_ran_multinomial
150 gsl_ran_multinomial_pdf gsl_ran_multinomial_lnpdf
151 gsl_ran_negative_binomial gsl_ran_negative_binomial_pdf gsl_ran_pascal
152 gsl_ran_pascal_pdf gsl_ran_pareto gsl_ran_pareto_pdf
153 gsl_ran_poisson gsl_ran_poisson_array
154 gsl_ran_poisson_pdf gsl_ran_rayleigh gsl_ran_rayleigh_pdf
155 gsl_ran_rayleigh_tail gsl_ran_rayleigh_tail_pdf gsl_ran_tdist
156 gsl_ran_tdist_pdf gsl_ran_laplace gsl_ran_laplace_pdf
157 gsl_ran_levy gsl_ran_levy_skew gsl_ran_weibull
158 gsl_ran_weibull_pdf gsl_ran_dir_2d gsl_ran_dir_2d_trig_method
159 gsl_ran_dir_3d gsl_ran_dir_nd gsl_ran_shuffle
160 gsl_ran_choose gsl_ran_sample
161 gsl_ran_discrete gsl_ran_discrete_pdf
163 You have to add the functions you want to use inside the qw /put_funtion_here /. You can also write
165 use Math::GSL::Randist qw/:name_of_tag/
167 to use all avaible functions of the module. Other tags are also avaible, here is a complete list of all tags for this module :
169 logarithmic
170 choose
171 exponential
172 gumbel1
173 exppow
174 sample
175 logistic
176 gaussian
177 poisson
178 binomial
179 fdist
180 chisq
181 gamma
182 hypergeometric
183 dirichlet
184 negative
185 flat
186 geometric
187 discrete
188 tdist
189 ugaussian
190 rayleigh
192 pascal
193 gumbel2
194 shuffle
195 landau
196 bernoulli
197 weibull
198 multinomial
199 beta
200 lognormal
201 laplace
202 erlang
203 cauchy
204 levy
205 bivariate
206 pareto
208 For example the beta tag contains theses functions : gsl_ran_beta, gsl_ran_beta_pdf.
210 For more informations on the functions, we refer you to the GSL offcial documentation: http://www.gnu.org/software/gsl/manual/html_node/
211 Tip : search on google: site:http://www.gnu.org/software/gsl/manual/html_node/ name_of_the_function_you_want
213 You might also want to write
215 use Math::GSL::RNG qw/:all/;
217 since a lot of the functions of Math::GSL::Randist take as argument a structure that is created by Math::GSL::RNG. Refer to Math::GSL::RNG documentation to see how to create such a structure.
219 Math::GSL::CDF also contains a structure named gsl_ran_discrete_t. An example is given in the EXAMPLES part on how to use the function related to this structure.
222 =head1 EXAMPLES
224 use Math::GSL::Randist qw/:all/;
225 print gsl_ran_exponential_pdf(5,2) . "\n";
227 use Math::GSL::Randist qw/:all/;
228 $x= Math::GSL::gsl_ran_discrete_t::new;
231 =head1 AUTHOR
233 Jonathan Leto <jaleto@gmail.com> and Thierry Moisan <thierry.moisan@gmail.com>
235 =head1 COPYRIGHT AND LICENSE
237 Copyright (C) 2008 Jonathan Leto and Thierry Moisan
239 This program is free software; you can redistribute it and/or modify it
240 under the same terms as Perl itself.
242 =cut