22inline 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));
46int main(
int argc,
char **argv)
58 JParser<> zap(
"Example program to test multi-dimensional interpolation.");
67 catch(
const exception &error) {
68 FATAL(error.what() << endl);
72 const double xmin = -1.0;
73 const double xmax = +1.0;
90 for (
double x0 = xmin; x0 <= xmax + 0.5*dx; x0 += dx) {
91 for (
double x1 = xmin; x1 <= xmax + 0.5*dx; x1 += dx) {
92 for (
double x2 = xmin; x2 <= xmax + 0.5*dx; x2 += dx) {
93 for (
double x3 = xmin; x3 <= xmax + 0.5*dx; x3 += dx) {
94 for (
double x4 = xmin; x4 <= xmax + 0.5*dx; x4 += dx) {
95 g5[x0][x1][x2][x3][x4] =
f5(x0, x1, x2, x3, x4);
103 g5.setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
105 ASSERT(numberOfEvents > 0);
108 const double x = xmin - dx;
110 ASSERT(fabs(g5(x, 0.0, 0.0, 0.0, 0.0)) <= precision);
111 ASSERT(fabs(g5(0.0, x, 0.0, 0.0, 0.0)) <= precision);
112 ASSERT(fabs(g5(0.0, 0.0, x, 0.0, 0.0)) <= precision);
113 ASSERT(fabs(g5(0.0, 0.0, 0.0, x, 0.0)) <= precision);
114 ASSERT(fabs(g5(0.0, 0.0, 0.0, 0.0, x)) <= precision);
121 for (
int i = 0; i != numberOfEvents; ++i) {
123 const double x0 = gRandom->Uniform(xmin, xmax);
124 const double x1 = gRandom->Uniform(xmin, xmax);
125 const double x2 = gRandom->Uniform(xmin, xmax);
126 const double x3 = gRandom->Uniform(xmin, xmax);
127 const double x4 = gRandom->Uniform(xmin, xmax);
129 const double v =
f5(x0,x1,x2,x3,x4);
133 const double w = g5(x0,x1,x2,x3,x4);
140 if (
debug >- debug_t) {
144 timer.
print(cout, 1.0 / numberOfEvents);
double f5(const double x0, const double x1, const double x2, const double x3, const double x4)
5D function.