22 inline double f5(
const double x0,
 
   28   static const double a = 1.0;
 
   29   static const double b = 1.0;
 
   30   static const double c = 1.0;
 
   33     x0 * (a + x0 * (b + c*x0))  *  
 
   34     x1 * (a + x1 * (b + c*x1))  *
 
   35     x2 * (a + x2 * (b + c*x2))  *
 
   36     x3 * (a + x3 * (b + c*x3))  *
 
   37     x4 * (a + x4 * (b + c*x4));
 
   46 int main(
int argc, 
char **argv)
 
   57     JParser<> zap(
"Example program to test multi-dimensional interpolation.");
 
   66   catch(
const exception &error) {
 
   67     FATAL(error.what() << endl);
 
   74   const double xmin = -1.0;
 
   75   const double xmax = +1.0;
 
   76   const double dx   = (xmax - xmin) / (numberOfBins - 1);
 
   79   typedef JGridPolint3Function1D_t                          JFunction1D_t;
 
   81   typedef JMAPLIST<JPolint3FunctionalGridMap,
 
   82     JPolint3FunctionalGridMap,
 
   83     JPolint3FunctionalGridMap,
 
   84     JPolint3FunctionalGridMap>::maplist      JMaplist_t;
 
   86   typedef JMultiFunction<JFunction1D_t, JMaplist_t>         JMultiFunction_t;
 
   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);
 
  105   g5.setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
 
  108   ASSERT(numberOfEvents > 0);
 
  114   for (
int i = 0; i != numberOfEvents; ++i) {
 
  116     const double x0  = gRandom->Uniform(xmin, xmax);
 
  117     const double x1  = gRandom->Uniform(xmin, xmax);
 
  118     const double x2  = gRandom->Uniform(xmin, xmax);
 
  119     const double x3  = gRandom->Uniform(xmin, xmax);
 
  120     const double x4  = gRandom->Uniform(xmin, xmax);
 
  122     const double v   = 
f5(x0,x1,x2,x3,x4);
 
  126     const double w   = g5(x0,x1,x2,x3,x4);
 
  137     timer.print(cout, 1.0 / numberOfEvents);
 
  140   ASSERT(Q.getMean()  <= precision);
 
  141   ASSERT(Q.getSTDev() <= precision);