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;  
 
  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));
 
  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;
 
  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;
 
#define ASSERT(A,...)
Assert macro.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
int numberOfBins
number of bins for average CDF integral of optical module
 
virtual const char * what() const override
Get error message.
 
Utility class to parse command line options.
 
const JPolynome F1
Integral.
 
const JPolynome f1(1.0, 2.0, 3.0)
Function.
 
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
std::map< int, range_type > map_type
 
Recursive template class for polynomial function.
 
double getIntegral(const double x) const
Integral value.
 
double getValue(const double x) const
Function value.
 
double getDerivative(const double x) const
Derivative value.
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Auxiliary data structure for floating point format specification.