47{
   49 
   50  int         numberOfEvents;
   52  double      precision;
   54 
   55  try {
   56 
   57    JParser<> zap(
"Example program to test multi-dimensional interpolation.");
 
   58 
   63 
   64    zap(argc, argv);
   65  }
   66  catch(const exception &error) {
   67    FATAL(error.what() << endl);
 
   68  }
   69 
   70 
   72 
   73 
   74  const double xmin = -1.0;
 
   75  const double xmax = +1.0;
 
   77 
   78 
   80 
   85 
   87 
   88    
   89  JMultiFunction_t g5;
   90 
   91   
   92  for (
double x0 = xmin; x0 <= 
xmax + 0.5*dx; x0 += dx) {
 
   93    for (
double x1 = xmin; x1 <= 
xmax + 0.5*dx; x1 += dx) {
 
   94      for (
double x2 = xmin; x2 <= 
xmax + 0.5*dx; x2 += dx) {
 
   95        for (
double x3 = xmin; x3 <= 
xmax + 0.5*dx; x3 += dx) {
 
   96          for (
double x4 = xmin; x4 <= 
xmax + 0.5*dx; x4 += dx) {
 
   97            g5[x0][x1][x2][x3][x4] = 
f5(x0, x1, x2, x3, x4);
 
   98          }
   99        }
  100      }
  101    }
  102  }
  103    
  105  g5.setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
 
  106 
  107  ASSERT(numberOfEvents > 0);
 
  108 
  109  {
  110    const double x = 
xmin - dx;
 
  111 
  112    ASSERT(fabs(g5(x, 0.0, 0.0, 0.0, 0.0)) <= precision);
 
  113    ASSERT(fabs(g5(0.0, x, 0.0, 0.0, 0.0)) <= precision);
 
  114    ASSERT(fabs(g5(0.0, 0.0, x, 0.0, 0.0)) <= precision);
 
  115    ASSERT(fabs(g5(0.0, 0.0, 0.0, x, 0.0)) <= precision);
 
  116    ASSERT(fabs(g5(0.0, 0.0, 0.0, 0.0, x)) <= precision);
 
  117  }
  118 
  120 
  122    
  123  for (int i = 0; i != numberOfEvents; ++i) {
  124    
  125    const double x0  = gRandom->Uniform(xmin, xmax);
  126    const double x1  = gRandom->Uniform(xmin, xmax);
  127    const double x2  = gRandom->Uniform(xmin, xmax);
  128    const double x3  = gRandom->Uniform(xmin, xmax);
  129    const double x4  = gRandom->Uniform(xmin, xmax);
  130      
  131    const double v   = 
f5(x0,x1,x2,x3,x4);
 
  132 
  134 
  135    const double w   = g5(x0,x1,x2,x3,x4);
  136 
  138 
  140  }
  141 
  142  if (
debug >- debug_t) {
 
  143 
  145    
  146    timer.
print(cout, 1.0 / numberOfEvents);
 
  147  }
  148 
  151  
  152  return 0;
  153}
#define ASSERT(A,...)
Assert macro.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
double f5(const double x0, const double x1, const double x2, const double x3, const double x4)
5D function.
 
int numberOfBins
number of bins for average CDF integral of optical module
 
Auxiliary class for CPU timing and usage.
 
void print(std::ostream &out, const JScale_t scale=milli_t) const
Print timer data.
 
Utility class to parse command line options.
 
static const JZero zero
Function object to assign zero value.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).