#
# Do everything from Perl (requires PDL)
#

use strict;
use PDL;
use Inline SLang => 'require ("sherpa");';

print "Now in perl\n";

# The sin(x) term is just to make sure the values
# do not exactly match a polynomial.
#
print "Setting up a model\n";
my $x = 0.1 * (1+2*sequence(40));
my $y = -10.5 - 2.5 * $x + 4 * $x**2 + sin($x);
my $e = abs($y) * 0.1;

set_axes (1,$x);
set_data (1,$y);
set_errors (1,$e);

print "Setting up a model\n";
create_model ("polynom1d","ptest");
set_par ("ptest.c0", "thawed", 1);
set_par ("ptest.c1", "thawed", 1);
set_par ("ptest.c2", "thawed", 1);
set_source_expr (1, "ptest");

print "Fitting the model\n";
run_fit (1);
my $res = get_par ("ptest");

print "Fit results:\n";
foreach my $par ( @{$res} ) {
  printf "  parameter: %-15s ", $$par{name};
  if ( $$par{frozen} ) {
    printf "[frozen at %g]\n", $$par{value};
  } else {
    printf "value = %g\n", $$par{value};
  }
}