Adding tests to QRNG and switching the RNG tests to Test::Class
[Math-GSL.git] / RNG.i
blob5e0f892f05141121036db6711d9d6e306f71252f
1 %module RNG
2 %{
3 #include "/usr/local/include/gsl/gsl_rng.h"
4 %}
5 %import "/usr/local/include/gsl/gsl_types.h"
7 %include "/usr/local/include/gsl/gsl_rng.h"
9 FILE *fopen(char *, char *);
10 int fclose(FILE *);
12 %perlcode %{
13 use Data::Dumper;
14 @EXPORT_OK = qw/ fopen fclose
15 gsl_rng_alloc gsl_rng_set gsl_rng_get gsl_rng_free gsl_rng_memcpy
16 gsl_rng_fwrite gsl_rng_fread gsl_rng_clone gsl_rng_max gsl_rng_min
17 gsl_rng_name gsl_rng_size gsl_rng_state gsl_rng_print_state
18 $gsl_rng_default $$gsl_rng_knuthran $$gsl_rng_ran0 $gsl_rng_borosh13
19 $gsl_rng_coveyou $gsl_rng_cmrg $gsl_rng_fishman18 $gsl_rng_fishman20 $gsl_rng_fishman2x
20 $gsl_rng_gfsr4 $gsl_rng_knuthran $gsl_rng_knuthran2 $gsl_rng_knuthran2002 $gsl_rng_lecuyer21
21 $gsl_rng_minstd $gsl_rng_mrg $gsl_rng_mt19937 $gsl_rng_mt19937_1999 $gsl_rng_mt19937_1998
22 $gsl_rng_r250 $gsl_rng_ran0 $gsl_rng_ran1 $gsl_rng_ran2 $gsl_rng_ran3
23 $gsl_rng_rand $gsl_rng_rand48 $gsl_rng_random128_bsd $gsl_rng_random128_gli $gsl_rng_random128_lib
24 $gsl_rng_random256_bsd $gsl_rng_random256_gli $gsl_rng_random256_lib $gsl_rng_random32_bsd
25 $gsl_rng_random32_glib $gsl_rng_random32_libc $gsl_rng_random64_bsd $gsl_rng_random64_glib
26 $gsl_rng_random64_libc $gsl_rng_random8_bsd $gsl_rng_random8_glibc $gsl_rng_random8_libc5
27 $gsl_rng_random_bsd $gsl_rng_random_glibc2 $gsl_rng_random_libc5 $gsl_rng_randu
28 $gsl_rng_ranf $gsl_rng_ranlux $gsl_rng_ranlux389 $gsl_rng_ranlxd1 $gsl_rng_ranlxd2 $gsl_rng_ranlxs0
29 $gsl_rng_ranlxs1 $gsl_rng_ranlxs2 $gsl_rng_ranmar $gsl_rng_slatec $gsl_rng_taus $gsl_rng_taus2
30 $gsl_rng_taus113 $gsl_rng_transputer $gsl_rng_tt800 $gsl_rng_uni $gsl_rng_uni32 $gsl_rng_vax
31 $gsl_rng_waterman14 $gsl_rng_zuf
33 %EXPORT_TAGS = ( all => [ @EXPORT_OK ] );
35 sub new {
36 my ($class, $type, $seed) = @_;
37 $type ||= $gsl_rng_default;
38 $seed ||= int 100*rand;
40 my $self = {};
41 my $rng = gsl_rng_alloc($type);
42 gsl_rng_set($rng, $seed);
44 $self->{_rng} = $rng;
45 bless $self, $class;
48 sub copy {
49 my ($self) = @_;
50 my $copy = Math::GSL::RNG->new;
51 $copy->{_rng} = gsl_rng_clone($self->{_rng});
53 return $copy;
56 sub free {
57 my ($self) = @_;
58 gsl_rng_free($self->{_rng});
60 sub name {
61 my ($self) = @_;
62 gsl_rng_name($self->{_rng});
64 sub get {
65 my ($self) = @_;
67 gsl_rng_get($self->{_rng});
70 __END__
72 =head1 NAME
74 Math::GSL::RNG
76 =head1 SYPNOPSIS
78 use Math::GSL::RNG qw/:all/;
80 =head1 DESCRIPTION
81 Here is a list of all the functions included in this module :
83 gsl_rng_alloc gsl_rng_set gsl_rng_get gsl_rng_free gsl_rng_memcpy
84 gsl_rng_fwrite gsl_rng_fread gsl_rng_clone gsl_rng_max gsl_rng_min
85 gsl_rng_name gsl_rng_size gsl_rng_state gsl_rng_print_state
88 This module also contains the following constants :
90 $gsl_rng_default $$gsl_rng_knuthran $$gsl_rng_ran0 $gsl_rng_borosh13
91 $gsl_rng_coveyou $gsl_rng_cmrg $gsl_rng_fishman18 $gsl_rng_fishman20 $gsl_rng_fishman2x
92 $gsl_rng_gfsr4 $gsl_rng_knuthran $gsl_rng_knuthran2 $gsl_rng_knuthran2002 $gsl_rng_lecuyer21
93 $gsl_rng_minstd $gsl_rng_mrg $gsl_rng_mt19937 $gsl_rng_mt19937_1999 $gsl_rng_mt19937_1998
94 $gsl_rng_r250 $gsl_rng_ran0 $gsl_rng_ran1 $gsl_rng_ran2 $gsl_rng_ran3
95 $gsl_rng_rand $gsl_rng_rand48 $gsl_rng_random128_bsd $gsl_rng_random128_gli $gsl_rng_random128_lib
96 $gsl_rng_random256_bsd $gsl_rng_random256_gli $gsl_rng_random256_lib $gsl_rng_random32_bsd
97 $gsl_rng_random32_glib $gsl_rng_random32_libc $gsl_rng_random64_bsd $gsl_rng_random64_glib
98 $gsl_rng_random64_libc $gsl_rng_random8_bsd $gsl_rng_random8_glibc $gsl_rng_random8_libc5
99 $gsl_rng_random_bsd $gsl_rng_random_glibc2 $gsl_rng_random_libc5 $gsl_rng_randu
100 $gsl_rng_ranf $gsl_rng_ranlux $gsl_rng_ranlux389 $gsl_rng_ranlxd1 $gsl_rng_ranlxd2 $gsl_rng_ranlxs0
101 $gsl_rng_ranlxs1 $gsl_rng_ranlxs2 $gsl_rng_ranmar $gsl_rng_slatec $gsl_rng_taus $gsl_rng_taus2
102 $gsl_rng_taus113 $gsl_rng_transputer $gsl_rng_tt800 $gsl_rng_uni $gsl_rng_uni32 $gsl_rng_vax
103 $gsl_rng_waterman14 $gsl_rng_zuf
105 For more informations on the functions, we refer you to the GSL offcial documentation: http://www.gnu.org/software/gsl/manual/html_node/
106 Tip : search on google: site:http://www.gnu.org/software/gsl/manual/html_node/ name_of_the_function_you_want
108 =head1 EXAMPLES
110 =head1 AUTHOR
112 Jonathan Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com>
114 =head1 COPYRIGHT AND LICENSE
116 Copyright (C) 2008 Jonathan Leto and Thierry Moisan
118 This program is free software; you can redistribute it and/or modify it
119 under the same terms as Perl itself.
121 =cut