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
);
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
);
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
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
],
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
]
120 Math
::GSL
::Randist
- Probability Distributions
124 use Math
::GSL
::Randist qw
/put_functions_here
/;
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
:
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.
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
;
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.