77int main(
int argc,
char **argv)
84 unsigned int numberOfEvents;
90 precision[
"spline"] = JPrecision_t(1.0e-3, 1.0e-1, 1.0e-4);
91 precision[
"hermite"] = JPrecision_t(1.0e-3, 1.0e-1, 1.0e-4);
92 precision[
"grid"] = JPrecision_t(1.0e-3, 1.0e-1, 1.0e-4);
93 precision[
"polint"] = JPrecision_t(1.0e-14, 1.0e-12, 1.0e-14);
97 JParser<> zap(
"Example program to test 1D interpolation of a polynome.");
107 catch(
const exception &error) {
108 FATAL(error.what() << endl);
120 const double xmin = -1.0;
121 const double xmax = +1.0;
123 spline .configure(make_grid(
numberOfBins, xmin, xmax), f1);
124 hermite.configure(make_grid(
numberOfBins, xmin, xmax), f1);
125 grid .configure(make_grid(
numberOfBins, xmin, xmax), f1);
126 polint .configure(make_grid(
numberOfBins, xmin, xmax), f1);
133 integrate(polint, Polint);
137 if (numberOfEvents != 0) {
139 JABC Qspline (
"spline");
140 JABC Qhermite(
"hermite");
142 JABC Qpolint (
"polint");
144 for (
unsigned int i = 0; i != numberOfEvents; ++i) {
146 const double x = gRandom->Uniform(xmin, xmax);
152 Qspline .f .put(y1 - spline (x).f);
153 Qhermite.f .put(y1 - hermite(x).f);
154 Qgrid .f .put(y1 - grid (x).f);
155 Qpolint .f .put(y1 - polint (x).f);
157 Qspline .fp.put(fp - spline (x).fp);
158 Qhermite.fp.put(fp - hermite(x).fp);
159 Qgrid .fp.put(fp - grid (x).fp);
160 Qpolint .fp.put(fp - polint (x).fp);
162 Qspline .v .put(F1 - spline (x).v);
163 Qhermite.v .put(F1 - hermite(x).v);
164 Qgrid .v .put(F1 - grid (x).v);
165 Qpolint .v .put(F1 - Polint (x));
168 if (
debug >= debug_t) {
170 cout <<
"RMS: f f' F " << endl;
171 cout <<
"_________________________________________" << endl;
174 <<
SCIENTIFIC(10,3) << Qspline .f .getSTDev() <<
' '
175 <<
SCIENTIFIC(10,3) << Qspline .fp.getSTDev() <<
' '
176 <<
SCIENTIFIC(10,3) << Qspline .v .getSTDev() << endl;
179 <<
SCIENTIFIC(10,3) << Qhermite.f .getSTDev() <<
' '
180 <<
SCIENTIFIC(10,3) << Qhermite.fp.getSTDev() <<
' '
181 <<
SCIENTIFIC(10,3) << Qhermite.v .getSTDev() << endl;
184 <<
SCIENTIFIC(10,3) << Qgrid .f .getSTDev() <<
' '
185 <<
SCIENTIFIC(10,3) << Qgrid .fp.getSTDev() <<
' '
186 <<
SCIENTIFIC(10,3) << Qgrid .v .getSTDev() << endl;
189 <<
SCIENTIFIC(10,3) << Qpolint .f .getSTDev() <<
' '
190 <<
SCIENTIFIC(10,3) << Qpolint .fp.getSTDev() <<
' '
191 <<
SCIENTIFIC(10,3) << Qpolint .v .getSTDev() << endl;
194 ASSERT(Qspline .f .getSTDev() <= precision[
"spline"].f);
195 ASSERT(Qspline .fp.getSTDev() <= precision[
"spline"].fp);
196 ASSERT(Qspline .v .getSTDev() <= precision[
"spline"].v);
198 ASSERT(Qhermite.f .getSTDev() <= precision[
"hermite"].f);
199 ASSERT(Qhermite.fp.getSTDev() <= precision[
"hermite"].fp);
200 ASSERT(Qhermite.v .getSTDev() <= precision[
"hermite"].v);
202 ASSERT(Qgrid .f .getSTDev() <= precision[
"grid"].f);
203 ASSERT(Qgrid .fp.getSTDev() <= precision[
"grid"].fp);
204 ASSERT(Qgrid .v .getSTDev() <= precision[
"grid"].v);
206 ASSERT(Qpolint .f .getSTDev() <= precision[
"polint"].f);
207 ASSERT(Qpolint .fp.getSTDev() <= precision[
"polint"].fp);
208 ASSERT(Qpolint .v .getSTDev() <= precision[
"polint"].v);
216 cout <<
"> " << flush;
218 getline(cin, buffer);
226 istringstream(buffer) >> x;
228 cout <<
"f1 " << f1 (x) << endl;
229 cout <<
"spline " << spline (x).f << endl;
230 cout <<
"hermite " << hermite(x).f << endl;
231 cout <<
"grid spline " << grid (x).f << endl;
232 cout <<
"polynomial " << polint (x).f << endl;
235 cout << exception.what() << endl;