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
108 ASSERT(numberOfEvents > 0);
109
111
113
114 for (int i = 0; i != numberOfEvents; ++i) {
115
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);
121
122 const double v =
f5(x0,x1,x2,x3,x4);
123
125
126 const double w = g5(x0,x1,x2,x3,x4);
127
129
131 }
132
133 if (
debug >- debug_t) {
134
136
137 timer.
print(cout, 1.0 / numberOfEvents);
138 }
139
142
143 return 0;
144}
#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).