71 y.push_back(-5.89868e-005);
72 y.push_back(0.233061);
73 y.push_back(0.216427);
74 y.push_back(0.0486148);
75 y.push_back(-0.133157);
76 y.push_back(-0.172031);
77 y.push_back(-0.0456079);
78 y.push_back(0.0906686);
79 y.push_back(0.116462);
80 y.push_back(0.0557287);
81 y.push_back(-0.03875);
82 y.push_back(-0.10346);
83 y.push_back(-0.0734111);
84 y.push_back(0.0298435);
85 y.push_back(0.094886);
86 y.push_back(0.0588743);
87 y.push_back(-0.0171021);
88 y.push_back(-0.0630512);
89 y.push_back(-0.0601684);
90 y.push_back(-0.00994154);
94 const double PI = 3.1415;
97 double step = 4 * PI / (N - 1);
98 for (
int i = 0; i <
N; ++i, xx += step)
101 yIn.push_back(sin(2 * xx) / xx);
105 const int N_out = 20;
107 step = (3 *
PI) / (N_out - 1);
108 for (
int i = 0; i < N_out; ++i, xx += step)
110 double interpolatedX = interpolator.
Interpolate(xx);
111 double diff = abs(interpolatedX - y[i]);
126 unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error,
"[CubicHermiteSpline] unusable values were provided to the spline function.");
134 for (
size_t i = 0; i < x.size(); ++i)
138 unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error,
"[CubicHermiteSpline] unusable values were provided to the spline function.");
146 for (
size_t i = 0; i < x.size(); ++i)
150 unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error,
"[CubicHermiteSpline] unusable values were provided to the spline function.");
158 for (
size_t i = 0; i < x.size(); ++i)
163 unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error,
"[CubicHermiteSpline] unusable values were provided to the spline function.");
173 unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error,
"[CubicHermiteSpline] unusable values were provided to the spline function.");
204 unit_assert_throws_what(interpolator.
Differentiate(2.0), runtime_error,
"[CubicHermiteSpline] attempted to differentiate a non-differentiable implementation of IInterpolation.")
217 unit_assert_throws_what(interpolator.
Integrate(1.0, 2.0), runtime_error,
"[CubicHermiteSpline] attempted to integrate a non-integrable implementation of IInterpolation.")
222 int main(
int argc,
char* argv[])
#define unit_assert_throws_what(x, exception, whatStr)
void CubicSplineDummyInitialize(const vector< double > &x, const vector< double > &y)
double Interpolate(double x) override
Interpolate at point x.
double Integrate(double a, double b) override
Definite integral between points a and b over function f.
#define unit_assert_equal(x, y, epsilon)
bool IsIntegrable() override
Indicates whether the algorithm can provide an interpolated integral.
int main(int argc, char *argv[])
void diff(const string &filename1, const string &filename2)
const double PI(3.14159265358979323846264338327950288)
the ratio of the circumference of a circle to its diameter;
void DiffAndIntegrateTest()
An implementation of the IInterpolation interface that acts as a wrapper for a cSpline.
#define TEST_PROLOG(argc, argv)
KernelTraitsBase< Kernel >::space_type::abscissa_type x
double Differentiate(double x) override
Derivative at the point x.
KernelTraitsBase< Kernel >::space_type::ordinate_type y
bool IsDifferentiable() override
Indicates whether the algorithm can provide an interpolated derivative.