13 #ifndef simpson_test_suite_hpp
14 #define simpson_test_suite_hpp
26 template <
typename data__>
33 template <
typename data__>
48 ap.coarse_value=17.3731117248535f;
49 ap.fine_value=17.3676300048828f;
52 ap.approximate_error=5.48267344129272e-05f;
54 ap.approximate_error=5.4817199e-05f;
57 ap.approximate_error=5.48267344129272e-05f;
66 ap.coarse_value=17.367256566284723363;
67 ap.fine_value=17.367255186732954542;
68 ap.approximate_error=1.3795517685433190629e-08;
77 ap.coarse_value=17.367256566284723363L;
78 ap.fine_value=17.367255186732954542L;
79 ap.approximate_error=1.3795517685433190629e-08L;
82 ap.function_count=129;
83 ap.coarse_value=17.367255186732954673478612761527983820997178554534912109375L;
84 ap.fine_value=17.36725510047939464303157208746597461868077516555786133L;
85 # ifdef __INTEL_COMPILER
86 ap.approximate_error=8.6253560028725869727e-10L;
88 ap.approximate_error=8.62535600286716596198481699594144637825189614321885756e-10L;
93 template<
typename data__>
131 data__ x1(1.0), x2(3.0), F_exact(std::exp(x2)-std::exp(x1)), F_quad;
134 size_t n, npts(1001);
135 std::vector<data__> x(npts), f(npts);
138 for (n=0; n<npts; ++n)
139 x[n]=(n)*(x2-x1)/(npts-1)+x1;
142 for (n=0; n<npts; ++n)
148 F_quad=quad(x[1]-x[0], f.begin(), f.end());
150 if (
typeid(data__)==
typeid(float))
152 TEST_ASSERT_DELTA(1, F_quad/F_exact, 2e-5);
156 TEST_ASSERT_DELTA(1, F_quad/F_exact, 1e-13);
163 # if ( (__clang_major__ < 3) || ((__clang_major__==3) && (__clang_minor__<=3)) )
164 TEST_ASSERT_MSG(
false,
"Clang release build bug cannot build this test.");
170 size_t n, npts(1000);
171 std::vector<data__> x(npts), f(npts);
174 for (n=0; n<npts; ++n)
175 x[n]=(n)*(x2-x1)/(npts-1)+x1;
178 for (n=0; n<npts; ++n)
184 F_quad=quad(x[1]-x[0], f.begin(), f.end());
186 if (
typeid(data__)==
typeid(float))
188 TEST_ASSERT_DELTA(1, F_quad/F_exact, 1e-5);
192 TEST_ASSERT_DELTA(1, F_quad/F_exact, 1e-12);
199 data__ x1(1.0), x2(3.0), F_exact(std::exp(x2)-std::exp(x1)), F_quad;
202 size_t n, npts(1001);
203 std::vector<data__> x(npts), f(npts);
206 for (n=0; n<npts; ++n)
210 for (n=0; n<npts; ++n)
216 F_quad=quad(x.begin(), f.begin(), f.end());
218 if (
typeid(data__)==
typeid(float))
220 TEST_ASSERT_DELTA(1, F_quad/F_exact, 3e-7);
224 TEST_ASSERT_DELTA(1, F_quad/F_exact, 5e-13);
229 size_t n, npts(1000);
230 std::vector<data__> x(npts), f(npts);
233 for (n=0; n<npts; ++n)
237 for (n=0; n<npts; ++n)
243 F_quad=quad(x.begin(), f.begin(), f.end());
245 if (
typeid(data__)==
typeid(float))
247 TEST_ASSERT_DELTA(1, F_quad/F_exact, 9e-7);
251 TEST_ASSERT_DELTA(1, F_quad/F_exact, 5e-13);
258 data__ x0(1.0), x1(3.0), F_exact(std::exp(x1)-std::exp(x0)), F_quad, tol(std::numeric_limits<data__>::epsilon());
269 TEST_ASSERT(std::abs(1 - F_quad/F_exact)>ap.
tolerance);
276 TEST_ASSERT_DELTA(1, F_quad/F_exact, ap.
tolerance);
281 get_reference_adaptive_params<data__>(ap_ref);
287 TEST_ASSERT_DELTA(1, F_quad/F_exact, ap.
tolerance);
294 data__ mult_factor(1);
296 # if (((_MSC_VER==1700) || (_MSC_VER==1800)) && !defined(_WIN64))
297 if (
typeid(data__)==
typeid(
float))
299 mult_factor=
static_cast<data__
>(1.5e3);
data__ coarse_value
Definition: simpson.hpp:33
void get_reference_adaptive_params< float >(typename eli::mutil::quad::simpson< float >::adaptive_params &ap)
Definition: simpson_test_suite.hpp:44
void adaptive_test()
Definition: simpson_test_suite.hpp:256
data__ tolerance
Definition: simpson.hpp:33
size_t function_count
Definition: simpson.hpp:32
void get_reference_adaptive_params< long double >(typename eli::mutil::quad::simpson< long double >::adaptive_params &ap)
Definition: simpson_test_suite.hpp:72
data__ tol_factor
Definition: simpson.hpp:33
Definition: simpson.hpp:30
void get_reference_adaptive_params(typename eli::mutil::quad::simpson< data__ >::adaptive_params &ap)
Definition: simpson_test_suite.hpp:34
Definition: simpson_test_suite.hpp:94
~simpson_test_suite()
Definition: simpson_test_suite.hpp:124
void get_reference_adaptive_params< double >(typename eli::mutil::quad::simpson< double >::adaptive_params &ap)
Definition: simpson_test_suite.hpp:62
void AddTests(const double &)
Definition: simpson_test_suite.hpp:104
void uniform_points_test()
Definition: simpson_test_suite.hpp:129
size_t recursion_depth
Definition: simpson.hpp:32
void nonuniform_points_test()
Definition: simpson_test_suite.hpp:197
simpson_test_suite()
Definition: simpson_test_suite.hpp:119
void AddTests(const long double &)
Definition: simpson_test_suite.hpp:111
void AddTests(const float &)
Definition: simpson_test_suite.hpp:97
Definition: simpson_test_suite.hpp:27
data__ approximate_error
Definition: simpson.hpp:33
data__ operator()(const data__ &x)
Definition: simpson_test_suite.hpp:29
data__ error_factor
Definition: simpson.hpp:33
size_t max_depth
Definition: simpson.hpp:32
Definition: simpson.hpp:27
data__ fine_value
Definition: simpson.hpp:33