The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Test routine for PDL::Fit::Gaussian module

use PDL;
use PDL::Fit::Gaussian;


print "1..2\n";

kill INT,$$  if $ENV{UNDER_DEBUGGER}; # Useful for debugging.

$count=1;
sub ok {
        my $no = $count++ ;
        my $result = shift ;
        print "not " unless $result ;
        print "ok $no\n" ;
}
sub nint{int($_[0]->at+0.5)};

$g1 = pdl qw[ 2.1990459  1.9464173  2.1565406  2.1672124  2.2701938   
1.82992   1.914893  2.1466146  1.8822749  2.0293979  2.0101469   2.210302 
2.6183602  4.3191846  7.8333737  11.525845  13.069404  11.364827  7.2853706 
4.3667506  2.2601078  2.0051197   1.802916  2.1735853  1.7985277  1.9498281 
1.7745239  1.7534224  2.6137111  1.8443813  2.0064845  2.1981632  2.0572412 
1.8928303  2.0703847  2.0121833  1.9967828  2.3846479  1.8907906  2.1486651];

$g2 = pdl qw[  13.013418  11.397573  7.4494489  4.5594057  2.5728955 
2.0687907  2.1953927  2.2819689  1.7046446  2.3276816  2.0130417    1.72691 
1.8260466  2.0842572  2.2455532  1.9223378   1.695866  1.5893454  1.9787549 
1.6941413  1.8576307  2.3780392  2.2588472  2.2080773  1.8754143   2.019966 
1.9363813  2.1414206  2.0062853  2.0867273  2.0158617  1.6481802  1.9686077 
2.2979197  2.2963699  2.1171346  1.8859732  2.1277667  2.0716804  1.9251175];


my ($xc, $pk, $fwhm, $back, $err, $fit) = fitgauss1d(xvals($g1), $g1);


#points $g1; hold; line $fit; rel;

ok( nint($xc)==16 && nint($pk)==11 && nint($fwhm)==4 && nint($back)==2
  && nint($err)==0 && sum(abs($g1-$fit))<10);

($pk, $fwhm, $back, $err, $fit) = fitgauss1dr(xvals($g2),$g2);

#points $g2; hold; line $fit; rel;

ok(nint($pk)==11 && nint($fwhm)==4 && nint($back)==2
  && nint($err)==0 && sum(abs($g2-$fit))<10);