#include <leastsqrs.h>

leastsqrs::leastsqrs
( 
  vector<pt2> const & pts_,
  double const alpha_,
  double const beta_
)
  : pts(pts_), alpha(alpha_), beta(beta_)
{
  size = pts.size();

  xi = new double[size];
}

void leastsqrs::operator () 
(
  double & fval 
)
{
  fval=0.0;
  double z;
  for (uint i=0; i<size; ++i)
  {
    z = pts[i].y-xi[i];
    fval += alpha*z*z;
  }
  for (uint i=0; i<size-1; ++i)
  {
    z = (pts[i].x-pts[i+1].x);  //can remove
    fval += beta*z*z;
    z = xi[i+1]-xi[i];
    fval += beta*z*z;
  }
}

leastsqrs::~leastsqrs()
{
  delete[] xi;
  xi=0;
}



