From 310d94f83ad5f8925f53627970c0b105b4673211 Mon Sep 17 00:00:00 2001 From: Thierry Moisan Date: Mon, 21 Jul 2008 19:27:03 -0400 Subject: [PATCH] Fixing a Fit test but it needs to be reviewed for not having to initialize every elements --- lib/Math/GSL/Fit/Test.pm | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/lib/Math/GSL/Fit/Test.pm b/lib/Math/GSL/Fit/Test.pm index 9128d8d..93f4308 100644 --- a/lib/Math/GSL/Fit/Test.pm +++ b/lib/Math/GSL/Fit/Test.pm @@ -19,39 +19,45 @@ sub FIT_LINEAR_DIES : Tests { } sub GSL_FIT_LINEAR : Tests { - local $TODO = "Don't know why the function dies..."; - my $norris_x = [0.2, 337.4, 118.2, 884.6, 10.1, 226.5, 666.3, 996.3, + my @norris_x = (0.2, 337.4, 118.2, 884.6, 10.1, 226.5, 666.3, 996.3, 448.6, 777.0, 558.2, 0.4, 0.6, 775.5, 666.9, 338.0, 447.5, 11.6, 556.0, 228.1, 995.8, 887.6, 120.2, 0.3, 0.3, 556.8, 339.1, 887.2, 999.0, 779.0, 11.1, 118.3, - 229.2, 669.1, 448.9, 0.5 ] ; - my $norris_y = [ 0.1, 338.8, 118.1, 888.0, 9.2, 228.1, 668.5, 998.5, + 229.2, 669.1, 448.9, 0.5 ) ; + my @norris_y = ( 0.1, 338.8, 118.1, 888.0, 9.2, 228.1, 668.5, 998.5, 449.1, 778.9, 559.2, 0.3, 0.1, 778.1, 668.8, 339.3, 448.9, 10.8, 557.7, 228.3, 998.0, 888.8, 119.6, 0.3, 0.6, 557.6, 339.3, 888.0, 998.5, 778.9, 10.2, 117.6, - 228.9, 668.4, 449.2, 0.2]; + 228.9, 668.4, 449.2, 0.2); my $xstride = 2; my $wstride = 3; my $ystride = 5; - my ($x, $w, $y); + my (@x, @w, @y); + for my $i (0 .. 175) + { + $x[$i] = 0; + $w[$i] = 0; + $y[$i] = 0; + } + for my $i (0 .. 35) { - $x->[$i*$xstride] = $norris_x->[$i]; - $w->[$i*$wstride] = 1.0; - $y->[$i*$ystride] = $norris_y->[$i]; + $x[$i*$xstride] = $norris_x[$i]; + $w[$i*$wstride] = 1.0; + $y[$i*$ystride] = $norris_y[$i]; } - # this currently crashes the test script - exit(0); - my ($status, @results) = gsl_fit_linear($x, $xstride, $y, $ystride, 36); + my ($status, @results) = gsl_fit_linear([@x], $xstride, [@y], $ystride, 36); +# this way of writing the arrays works but it complains +# about a lot of unitialized entries even with the stride correctly set, +# is there any way to bypass this without having to initialize every element of the array like I do? ok_status( $status, $GSL_SUCCESS ); - print Dumper [ @results ]; - ok(is_similar_relative($results[1], -0.262323073774029, 1e-10)); - ok(is_similar_relative($results[2], 1.00211681802045, 1e-10)); - ok(is_similar_relative($results[3], 0.232818234301152**2.0, 1e-10)); - ok(is_similar_relative($results[4], -7.74327536339570e-05, 1e-10)); - ok(is_similar_relative($results[5], 0.429796848199937E-03**2, 1e-10)); - ok(is_similar_relative($results[6], 26.6173985294224, 1e-10)); + ok(is_similar_relative($results[0], -0.262323073774029, 10**-10)); + ok(is_similar_relative($results[1], 1.00211681802045, 1e-10)); + ok(is_similar_relative($results[2], 0.232818234301152**2.0, 1e-10)); + ok(is_similar_relative($results[3], -7.74327536339570e-05, 1e-10)); + ok(is_similar_relative($results[4], 0.429796848199937E-03**2, 1e-10)); + ok(is_similar_relative($results[5], 26.6173985294224, 1e-10)); } 1; -- 2.11.4.GIT