77int main(
int argc, 
char **argv)
 
   84  unsigned int  numberOfEvents;
 
   90  precision[
"spline"]  = JPrecision_t(1.0e-3,  1.0e-1,  1.0e-4);
 
   91  precision[
"hermite"] = JPrecision_t(1.0e-3,  1.0e-1,  1.0e-4);
 
   92  precision[
"grid"]    = JPrecision_t(1.0e-3,  1.0e-1,  1.0e-4);
 
   93  precision[
"polint"]  = JPrecision_t(1.0e-14, 1.0e-12, 1.0e-14);
 
   97    JParser<> zap(
"Example program to test 1D interpolation of a polynome.");
 
  107  catch(
const exception &error) {
 
  108    FATAL(error.what() << endl);
 
  120  const double xmin = -1.0;
 
  121  const double xmax = +1.0;  
 
  123  spline .configure(make_grid(
numberOfBins, xmin, xmax), f1);
 
  124  hermite.configure(make_grid(
numberOfBins, xmin, xmax), f1);
 
  125  grid   .configure(make_grid(
numberOfBins, xmin, xmax), f1);
 
  126  polint .configure(make_grid(
numberOfBins, xmin, xmax), f1);
 
  133  integrate(polint, Polint);
 
  137  if (numberOfEvents != 0) {
 
  139    JABC Qspline (
"spline");
 
  140    JABC Qhermite(
"hermite");
 
  142    JABC Qpolint (
"polint");
 
  144    for (
unsigned int i = 0; i != numberOfEvents; ++i) {
 
  146      const double x  = gRandom->Uniform(xmin, xmax);
 
  152      Qspline .f .put(y1 - spline (x).f);
 
  153      Qhermite.f .put(y1 - hermite(x).f);
 
  154      Qgrid   .f .put(y1 - grid   (x).f);
 
  155      Qpolint .f .put(y1 - polint (x).f);
 
  157      Qspline .fp.put(fp - spline (x).fp);
 
  158      Qhermite.fp.put(fp - hermite(x).fp);
 
  159      Qgrid   .fp.put(fp - grid   (x).fp);
 
  160      Qpolint .fp.put(fp - polint (x).fp);
 
  162      Qspline .v .put(F1 - spline (x).v);
 
  163      Qhermite.v .put(F1 - hermite(x).v);
 
  164      Qgrid   .v .put(F1 - grid   (x).v);
 
  165      Qpolint .v .put(F1 - Polint (x));
 
  168    if (
debug >= debug_t) {
 
  170      cout << 
"RMS:         f          f'         F     " << endl;
 
  171      cout << 
"_________________________________________" << endl;
 
  174           << 
SCIENTIFIC(10,3) << Qspline .f .getSTDev() << 
' ' 
  175           << 
SCIENTIFIC(10,3) << Qspline .fp.getSTDev() << 
' ' 
  176           << 
SCIENTIFIC(10,3) << Qspline .v .getSTDev() << endl;
 
  179           << 
SCIENTIFIC(10,3) << Qhermite.f .getSTDev() << 
' ' 
  180           << 
SCIENTIFIC(10,3) << Qhermite.fp.getSTDev() << 
' ' 
  181           << 
SCIENTIFIC(10,3) << Qhermite.v .getSTDev() << endl;
 
  184           << 
SCIENTIFIC(10,3) << Qgrid   .f .getSTDev() << 
' ' 
  185           << 
SCIENTIFIC(10,3) << Qgrid   .fp.getSTDev() << 
' ' 
  186           << 
SCIENTIFIC(10,3) << Qgrid   .v .getSTDev() << endl;
 
  189           << 
SCIENTIFIC(10,3) << Qpolint .f .getSTDev() << 
' ' 
  190           << 
SCIENTIFIC(10,3) << Qpolint .fp.getSTDev() << 
' ' 
  191           << 
SCIENTIFIC(10,3) << Qpolint .v .getSTDev() << endl;
 
  194    ASSERT(Qspline .f .getSTDev() <= precision[
"spline"].f);
 
  195    ASSERT(Qspline .fp.getSTDev() <= precision[
"spline"].fp);
 
  196    ASSERT(Qspline .v .getSTDev() <= precision[
"spline"].v);
 
  198    ASSERT(Qhermite.f .getSTDev() <= precision[
"hermite"].f);
 
  199    ASSERT(Qhermite.fp.getSTDev() <= precision[
"hermite"].fp);
 
  200    ASSERT(Qhermite.v .getSTDev() <= precision[
"hermite"].v);
 
  202    ASSERT(Qgrid   .f .getSTDev() <= precision[
"grid"].f);
 
  203    ASSERT(Qgrid   .fp.getSTDev() <= precision[
"grid"].fp);
 
  204    ASSERT(Qgrid   .v .getSTDev() <= precision[
"grid"].v);
 
  206    ASSERT(Qpolint .f .getSTDev() <= precision[
"polint"].f);
 
  207    ASSERT(Qpolint .fp.getSTDev() <= precision[
"polint"].fp);
 
  208    ASSERT(Qpolint .v .getSTDev() <= precision[
"polint"].v);
 
  216      cout << 
"> " << flush;
 
  218      getline(cin, buffer);
 
  226          istringstream(buffer) >> x;
 
  228          cout << 
"f1          " << f1     (x)   << endl;
 
  229          cout << 
"spline      " << spline (x).f << endl;
 
  230          cout << 
"hermite     " << hermite(x).f << endl;
 
  231          cout << 
"grid spline " << grid   (x).f << endl;
 
  232          cout << 
"polynomial  " << polint (x).f << endl;
 
  235          cout << exception.what() << endl;