57 JParser<> zap(
"Example program to create 1D 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);
113 const double x0 = +0.15;
114 const double x1 = -0.25;
115 const double x2 = 0.25;
119 JTimer timer(
"3D interpolator");
123 for (
int i = 0; i != 100; ++i) {
124 copy(h5(x0,x1,x2), g2);
128 timer.print(cout, 1.0/100,
micro_t);
132 JTimer t2(
"2D interpolator");
133 JTimer t5(
"5D interpolator");
148 for (
int i = 0; i != numberOfEvents; ++i) {
150 for (
int __i = 0; __i != N; ++__i) {
152 const double x3 = gRandom->Uniform(xmin, xmax);
153 const double x4 = gRandom->Uniform(xmin, xmax);
157 z[__i] =
f5(x0,x1,x2,x3,x4);
162 for (
int __i = 0; __i != N; ++__i) {
163 v[__i] = g2(x[__i], y[__i]);
170 for (
int __i = 0; __i != N; ++__i) {
171 w[__i] = g5(x0,x1,x2,x[__i],y[__i]);
176 for (
int __i = 0; __i != N; ++__i) {
177 Q2.put(v[__i] - z[__i]);
178 Q5.put(w[__i] - z[__i]);
185 Q5.print(cout,
false);
187 t2.print(cout, 1.0 / (N * numberOfEvents),
nano_t);
188 t5.print(cout, 1.0 / (N * numberOfEvents),
nano_t);
191 ASSERT(fabs(Q2.getMean() - Q5.getMean()) <= precision);
192 ASSERT(fabs(Q2.getSTDev() - Q5.getSTDev()) <= precision);
Utility class to parse command line options.
#define ASSERT(A)
Assert macro.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Auxiliary class for CPU timing and usage.
double f5(const double x0, const double x1, const double x2, const double x3, const double x4)
5D function.
void copy(const Head &from, JHead &to)
Copy header from from to to.