Adding a testing skeleton to Fit and trying to add a test from the gsl source
[Math-GSL.git] / lib / Math / GSL / Fit / Test.pm
blob2b965a36e917689c5cd8c5e147c8ed660b9b3117
1 package Math::GSL::Fit::Test;
2 use base q{Test::Class};
3 use Test::More;
4 use Test::Exception;
5 use Math::GSL::Fit qw/:all/;
6 use Math::GSL qw/:all/;
7 use Data::Dumper;
8 use strict;
10 sub make_fixture : Test(setup) {
13 sub teardown : Test(teardown) {
16 sub GSL_FIT_LINEAR_DIES : Tests {
17 dies_ok( sub { Math::GSL::Fit::gsl_fit_linear(0,0,0,0) } );
20 sub GSL_FIT_LINEAR : Tests {
21 local $TODO = "Don't know why the function dies...";
22 my @norris_x = [0.2, 337.4, 118.2, 884.6, 10.1, 226.5, 666.3, 996.3,
23 448.6, 777.0, 558.2, 0.4, 0.6, 775.5, 666.9, 338.0,
24 447.5, 11.6, 556.0, 228.1, 995.8, 887.6, 120.2, 0.3,
25 0.3, 556.8, 339.1, 887.2, 999.0, 779.0, 11.1, 118.3,
26 229.2, 669.1, 448.9, 0.5 ] ;
27 my @norris_y = [ 0.1, 338.8, 118.1, 888.0, 9.2, 228.1, 668.5, 998.5,
28 449.1, 778.9, 559.2, 0.3, 0.1, 778.1, 668.8, 339.3,
29 448.9, 10.8, 557.7, 228.3, 998.0, 888.8, 119.6, 0.3,
30 0.6, 557.6, 339.3, 888.0, 998.5, 778.9, 10.2, 117.6,
31 228.9, 668.4, 449.2, 0.2];
32 my $xstride = 2;
33 my $wstride = 3;
34 my $ystride = 5;
35 my (@x, @w, @y, $i);
36 for ($i = 0; $i < 36; $i++)
38 $x[$i*$xstride] = $norris_x[$i];
39 $w[$i*$wstride] = 1.0;
40 $y[$i*$ystride] = $norris_y[$i];
42 my @got = gsl_fit_linear(@x, $xstride, @y, $ystride, 36);
43 is($got[0], 0);
44 ok(is_similar_relative($got[1], -0.262323073774029, 1e-10));
45 ok(is_similar_relative($got[2], 1.00211681802045, 1e-10));
46 ok(is_similar_relative($got[3], 0.232818234301152**2.0, 1e-10));
47 ok(is_similar_relative($got[4], -7.74327536339570e-05, 1e-10));
48 ok(is_similar_relative($got[5], 0.429796848199937E-03**2, 1e-10));
49 ok(is_similar_relative($got[6], 26.6173985294224, 1e-10));