diff --git a/inc/Ver2Func.pm b/inc/Ver2Func.pm index 72e473c..7d495f2 100644 --- a/inc/Ver2Func.pm +++ b/inc/Ver2Func.pm @@ -397,7 +397,14 @@ my @ver2func = ( ^gsl_matrix_uint_scale_columns$ / ] + }, + "2.7" => { + new => [ + qw/ + / + ] } + ); my ( %index, @info, @versions ); diff --git a/swig/SparseMatrix.i b/swig/SparseMatrix.i index 0b2902e..5442473 100644 --- a/swig/SparseMatrix.i +++ b/swig/SparseMatrix.i @@ -10,6 +10,8 @@ %} #if MG_GSL_NUM_VERSION >= 002006 +// ignore gsl_spmatrix_uchar_norm1, gsl_spmatrix_char_norm1, ... + %rename("%(regex:/^gsl_spmatrix_u.*_norm1$/$ignore/)s") ""; %include "gsl/gsl_spmatrix.h" %include "gsl/gsl_spmatrix_double.h" %include "gsl/gsl_spmatrix_complex_long_double.h" diff --git a/t/Rstat.t b/t/Rstat.t index de7e0d9..535cc71 100644 --- a/t/Rstat.t +++ b/t/Rstat.t @@ -24,6 +24,10 @@ BEGIN { sub make_fixture : Test(setup) { my $self = shift; + my $version = gsl_version(); + my ($major, $minor, $tiny) = split /\./, $version; + $self->{major} = $major; + $self->{minor} = $minor; $self->{rstat} = Math::GSL::Rstat::gsl_rstat_alloc(); $self->{quantile} = Math::GSL::Rstat::gsl_rstat_quantile_alloc(0.5); } @@ -32,17 +36,30 @@ sub teardown : Test(teardown) { my $self = shift; } +sub get_data { [17.2, 18.1, 16.5, 18.3, 12.6] } + +sub get_expected_median { + my ( $self ) = @_; + + my $expected_median = 16.500000; + if ($self->{major} >= 3 || ($self->{major} >=2 and $self->{minor} >=7)) { + $expected_median = 17.2; + } + return $expected_median; +} + sub GSL_RSTAT_QUANTILE : Tests { my $self = shift; my $rstat = $self->{quantile}; isa_ok($rstat, "Math::GSL::Rstat"); - my @data = (17.2, 18.1, 16.5, 18.3, 12.6); + my $data = get_data(); map { my $status = gsl_rstat_quantile_add( $_, $rstat); ok_status($status); - } @data; + } @$data; my $q = gsl_rstat_quantile_get($rstat); - ok_similar($q, 16.5,"gsl_rstat_quantile_get=$q"); + my $expected_median = $self->get_expected_median(); + ok_similar($q, $expected_median,"gsl_rstat_quantile_get=$q"); } sub GSL_RSTAT : Tests { @@ -50,14 +67,11 @@ sub GSL_RSTAT : Tests { my $rstat = $self->{rstat}; isa_ok($rstat, "Math::GSL::Rstat"); - my @data = (17.2, 18.1, 16.5, 18.3, 12.6); + my $data = get_data(); map { my $status = gsl_rstat_add( $_, $rstat); ok($status == $GSL_SUCCESS, "gsl_rstat_quantile_add"); - } @data; - - my $version = gsl_version(); - my ($major, $minor, $tiny) = split /\./, $version; + } @$data; my $mean = gsl_rstat_mean($rstat); my $variance = gsl_rstat_variance($rstat); @@ -71,18 +85,18 @@ sub GSL_RSTAT : Tests { my $n = gsl_rstat_n($rstat); my $eps = 1e-3; - if ($major >=2 and $minor >=2) { + if ($self->{major} >=3 || ($self->{major} >=2 and $self->{minor} >=2)) { my $rms = gsl_rstat_rms($rstat); ok_similar( $rms, 16.669433,"The root mean squared is 16.66", $eps); } - + my $expected_median = $self->get_expected_median(); ok_similar( 16.54, $mean, "The sample mean is 16.54", $eps); ok_similar( 5.373, $variance, "The estimated variance is 5.373", $eps); ok_similar( 18.30, $largest, "The largest value is 18.3", $eps); ok_similar( 12.60, $smallest, "The smallest value is 12.6", $eps); ok_similar( $sd, 2.317973, "The standard deviation is 2.31", $eps); ok_similar( $sd_mean, 1.036629,"The sd_mean is 1.03", $eps); - ok_similar( $median, 16.500000, "The median is 16.5", $eps); + ok_similar( $median, $expected_median, "The median is $expected_median", $eps); ok_similar( $skew, -0.829058, "The skew is -0.83", $eps); ok_similar( $kurtosis,-1.221703,"The kurtosis is -1.22", $eps); ok($n == 5, "n=5");