61 JParser<> zap(
"Example program to test interpolation between 2D tables.");
68 catch(
const exception &error) {
69 FATAL(error.what() << endl);
80 const JGrid<double> X(NX, -10.0, +10.0);
81 const JGrid<double> Y(NY, -5.0, +5.0);
82 const JGrid<double> Z(NZ, -5.0, +5.0);
85 typedef JTable2D<NY, NZ> JTable2D_t;
87 typedef JPolintFunction1D<2, JElement2D_t, JGridCollection> JFunction1D_t;
92 for (
int i = 0; i != X.getSize(); ++i) {
94 DEBUG(
"table[" << i <<
"]" << endl);
96 const double x = X.getX(i);
98 JTable2D_t& table = buffer[x];
100 for (
int __i = 0; __i != NY; ++__i) {
101 for (
int __j = 0; __j != NZ; ++__j) {
103 const double y = Y.getX(__i);
104 const double z = Z.getX(__j);
106 table[__i][__j] =
f3(x,y,z);
117 typedef JMapList<JPolint1FunctionalGridMap> JMaplist_t;
118 typedef JMultiFunction<JGridPolint1Function1D_t, JMaplist_t> JMultiFunction_t;
124 for (JMultiFunction_t::iterator i = g2.begin(); i != g2.end(); ++i) {
125 i->getY().configure(Z);
132 JQuantile f1(
"table");
133 JQuantile f2(
"polint");
136 for (
int i = 0; i != numberOfEvents; ++i) {
138 const double x = gRandom->Uniform(X.getXmin(), X.getXmax());
139 const double y = gRandom->Uniform(Y.getXmin(), Y.getXmax());
140 const double z = gRandom->Uniform(Z.getXmin(), Z.getXmax());
142 const double v =
f3(x,y,z);
149 const int __i = (int) (Y.getSize() * (y - X.getXmin()) / (Y.getXmax() - Y.getXmin()));
150 const int __j = (int) (Z.getSize() * (z - Z.getXmin()) / (Z.getXmax() - Z.getXmin()));
152 const double w1 = buffer(x)[__i][__j];
161 const JTable2D_t& table = buffer(x);
163 for (
int __i = 0; __i != Y.getSize(); ++__i) {
164 for (
int __j = 0; __j != Z.getSize(); ++__j) {
165 g2.getY(__i).getY(__j) = table[__i][__j];
171 const double w2 = g2(y,z);
180 for (JQuantile buffer[] = { f1, f2, JQuantile() }, *i = buffer; i->getCount() != 0; ++i) {
182 cout << i->getTitle() << endl;
183 cout <<
"mean " <<
SCIENTIFIC(10,2) << i->getMean() << endl;
184 cout <<
"RMS " <<
SCIENTIFIC(10,2) << i->getSTDev() << endl;
187 for (JTimer buffer[] = { t1, t2, JTimer() }, *i = buffer; i->getTitle() !=
""; ++i) {