28   inline double f5(
const double x0,
 
   34     return TMath::Gaus(x4, x0+x1+x2+x3, 1.0, kTRUE);
 
   45 int main(
int argc, 
char **argv)
 
   57     JParser<> zap(
"Example program to create 2D function interpolator from multi-dimensional interpolator.");
 
   66   catch(
const exception &error) {
 
   67     FATAL(error.what() << endl);
 
   70   ASSERT(numberOfEvents > 0);
 
   72   const double xmin = -1.0;
 
   73   const double xmax = +1.0;
 
   74   const double dx   = (xmax - xmin) / (numberOfBins - 1);
 
   77   typedef JFunction1D_t::abscissa_type                                     abscissa_type;
 
   78   typedef JFunction1D_t::value_type                                        value_type;
 
   97   for (
double x0 = xmin; x0 < xmax + 0.5*dx; x0 += dx) {
 
   98     for (
double x1 = xmin; x1 < xmax + 0.5*dx; x1 += dx) {
 
   99       for (
double x2 = xmin; x2 < xmax + 0.5*dx; x2 += dx) {
 
  100         for (
double x3 = xmin; x3 < xmax + 0.5*dx; x3 += dx) {
 
  101           for (
double x4 = xmin; x4 < xmax + 0.5*dx; x4 += dx) {
 
  102             g5[x0][x1][x2][x3][x4] = 
f5(x0,x1,x2,x3,x4);
 
  103             h5[x0][x1][x2][x3][x4] = 
f5(x0,x1,x2,x3,x4);
 
  114   const double x0 = +0.15;
 
  115   const double x1 = -0.25;
 
  116   const double x2 =  0.25;
 
  120   JTimer timer(
"3D interpolator");
 
  124   for (
int i = 0; i != 100; ++i) {
 
  125     copy(h5(x0,x1,x2), g2);      
 
  133   JTimer t2(
"2D interpolator");
 
  134   JTimer t5(
"5D interpolator");
 
  149   for (
int i = 0; i != numberOfEvents; ++i) {
 
  151     for (
int __i = 0; __i != N; ++__i) {
 
  153       const double x3 = gRandom->Uniform(xmin, xmax);
 
  154       const double x4 = gRandom->Uniform(xmin, xmax);
 
  158       z[__i] = 
f5(x0,x1,x2,x3,x4);
 
  163     for (
int __i = 0; __i != N; ++__i) {
 
  164       v[__i] = g2(x[__i], y[__i]);
 
  171     for (
int __i = 0; __i != N; ++__i) {
 
  172       w[__i] = g5(x0,x1,x2,x[__i],y[__i]);
 
  177     for (
int __i = 0; __i != N; ++__i) {
 
  178       Q2.
put(
v[__i] - z[__i]);
 
  179       Q5.
put(
w[__i] - z[__i]);
 
  186     Q5.
print(cout, 
false);
 
  188     t2.
print(cout, 1.0 / (N * numberOfEvents), 
nano_t);
 
  189     t5.
print(cout, 1.0 / (N * numberOfEvents), 
nano_t);