46{
49
50 int numberOfEvents;
52 double precision;
54
55 try {
56
57 JParser<> zap(
"Example program to create 1D function interpolator from multi-dimensional interpolator.");
58
63
65 }
66 catch(const exception &error) {
68 }
69
70 ASSERT(numberOfEvents > 0);
71
72 const double xmin = -1.0;
73 const double xmax = +1.0;
75
77 typedef JFunction1D_t::abscissa_type abscissa_type;
78 typedef JFunction1D_t::value_type value_type;
79
81
86
89
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) {
97 }
98 }
99 }
100 }
101 }
102
105
106
107 const double x0 = +0.15;
108 const double x1 = -0.25;
109 const double x2 = 0.25;
110 const double x3 = -0.15;
111
113
114 JTimer timer(
"4D interpolator");
115
116 timer.start();
117
118 for (int i = 0; i != 100; ++i) {
120 }
121
122 timer.stop();
124
126
127 JTimer t1(
"1D interpolator");
129
130 JStats Q1(
"1D interpolator");
132
133
134
135 const int N = 100;
136
139 double v[N];
140 double w[N];
141
142 for (int i = 0; i != numberOfEvents; ++i) {
143
144 for (int __i = 0; __i != N; ++__i) {
145
146 const double x4 =
gRandom->Uniform(xmin, xmax);
147
150 }
151
152 t1.start();
153
154 for (int __i = 0; __i != N; ++__i) {
156 }
157
158 t1.stop();
159
161
162 for (int __i = 0; __i != N; ++__i) {
163 w[__i] =
g5(x0,x1,x2,
x3,x[__i]);
164 }
165
167
168 for (int __i = 0; __i != N; ++__i) {
169 Q1.put(v[__i] - y[__i]);
170 Q5.put(w[__i] - y[__i]);
171 }
172 }
173
175
178
179 t1.print(
cout, 1.0 / (N * numberOfEvents),
nano_t);
181 }
182
183 ASSERT(fabs(Q1.getMean() -
Q5.getMean()) <= precision);
184 ASSERT(fabs(Q1.getSTDev() -
Q5.getSTDev()) <= precision);
185
186 return 0;
187}
#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.
Double_t g1(const Double_t x)
Function.
int numberOfBins
number of bins for average CDF integral of optical module
Auxiliary class for CPU timing and usage.
Template definition of a multi-dimensional oscillation probability interpolation table.
void copy(const Head &from, JHead &to)
Copy header from from to to.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).