42 result_type(
const double __f,
58 operator double()
const
95 inline result_type operator()(
const double x,
99 return result_type(f (x) * f (y) * f (z),
100 fp(x) * f (y) * f (z),
101 f (x) * fp(y) * f (z),
102 f (x) * f (y) * fp(z));
113 inline double f(
const double x)
const
115 return __f1.getValue(x);
125 inline double fp(
const double x)
const
127 return __f1.getDerivative(x);
137 template<
class JMultiFunction_t>
138 int do_main(
int argc,
char **argv,
const char* title)
149 JParser<> zap(
"Example program to test multi-dimensional interpolation with derivatives.");
158 catch(
const exception &error) {
159 FATAL(error.what() << endl);
163 if (numberOfEvents <= 0) {
FATAL(
"Number of events " << numberOfEvents << endl); }
164 if (numberOfBins <= 2) {
FATAL(
"Number of bins " << numberOfBins << endl); }
169 const JFunction3D
f3(f1);
171 const double xmin = -1.0;
172 const double xmax = +1.0;
173 const double dx = (xmax - xmin) / (numberOfBins - 1);
178 for (
double x = xmin; x < xmax + 0.5*dx; x += dx) {
179 for (
double y = xmin; y < xmax + 0.5*dx; y += dx) {
180 for (
double z = xmin; z < xmax + 0.5*dx; z += dx) {
181 g3[x][y][z] =
f3(x,y,z);
195 for (
int i = 0; i != numberOfEvents; ++i) {
197 const double x = gRandom->Uniform(xmin, xmax);
198 const double y = gRandom->Uniform(xmin, xmax);
199 const double z = gRandom->Uniform(xmin, xmax);
201 const JFunction3D ::result_type u =
f3(x,y,z);
202 const typename JMultiFunction_t::result_type v = g3(x,y,z);
204 f .put(u.f - v.f .f .f);
205 fx.put(u.fx - v.fp.f .f);
206 fy.put(u.fy - v.f .fp.f);
207 fz.put(u.fz - v.f .f .fp);
210 cout << endl << title <<
":" << endl;
212 for (
const JQuantile* buffer[] = { &f, &fx, &fy, &fz, NULL }, **p = buffer; *p != NULL; ++p) {
213 (*p)->print(cout, *p == &f);
226 int main(
int argc,
char **argv)
234 JPolint3FunctionalGridMapH>::maplist JMaplist_t;
237 if (do_main<JMultiFunction_t>(argc, argv,
"Polint") != 0)
return 1;
243 JSplineFunctionalGridMapH>::maplist JMaplist_t;
246 if (do_main<JMultiFunction_t>(argc, argv,
"Spline") != 0)
return 1;
Utility class to parse command line options.
Polynome function object.
Various implementations of functional maps.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
General purpose messaging.
Utility class to parse command line options.
double f3(const double x, const double y, const double z)
3D function.
int main(int argc, char *argv[])