diff --git a/test/daubechies_scaling_test.cpp b/test/daubechies_scaling_test.cpp index e2dda727e4..fba8c3c8eb 100644 --- a/test/daubechies_scaling_test.cpp +++ b/test/daubechies_scaling_test.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -458,6 +459,19 @@ void test_quadratures() } } +void test_absolute_error_refinement_derivatives() +{ + using boost::math::differentiation::finite_difference_derivative; + auto phi = boost::math::daubechies_scaling(-2); + auto value = [&](float x) { return phi(x); }; + auto prime = [&](float x) { return phi.prime(x); }; + float x = 9.03125f; + float finite_difference_prime = finite_difference_derivative(value, x); + float finite_difference_double_prime = finite_difference_derivative(prime, x); + CHECK_MOLLIFIED_CLOSE(finite_difference_prime, phi.prime(x), 0.005f); + CHECK_MOLLIFIED_CLOSE(finite_difference_double_prime, phi.double_prime(x), 0.005f); +} + int main() { #ifndef __MINGW32__ @@ -465,6 +479,7 @@ int main() test_quadratures(); test_quadratures(); }); + test_absolute_error_refinement_derivatives(); test_agreement_with_ten_lectures(); diff --git a/test/daubechies_wavelet_test.cpp b/test/daubechies_wavelet_test.cpp index 376b0fef91..5afaf4d825 100644 --- a/test/daubechies_wavelet_test.cpp +++ b/test/daubechies_wavelet_test.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -118,6 +119,19 @@ void test_quadratures() } } +void test_absolute_error_refinement_derivatives() +{ + using boost::math::differentiation::finite_difference_derivative; + auto psi = boost::math::daubechies_wavelet(-2); + auto value = [&](float x) { return psi(x); }; + auto prime = [&](float x) { return psi.prime(x); }; + float x = 0.1875f; + float finite_difference_prime = finite_difference_derivative(value, x); + float finite_difference_double_prime = finite_difference_derivative(prime, x); + CHECK_MOLLIFIED_CLOSE(finite_difference_prime, psi.prime(x), 0.005f); + CHECK_MOLLIFIED_CLOSE(finite_difference_double_prime, psi.double_prime(x), 0.005f); +} + int main() { #ifndef __MINGW32__ @@ -129,6 +143,7 @@ int main() test_quadratures(); test_quadratures(); }); + test_absolute_error_refinement_derivatives(); } catch (std::bad_alloc) {