From 1bf3ba6bd2c441b206f2aaa1fc25a967ae5b1579 Mon Sep 17 00:00:00 2001 From: Matt Pulver <{username}@users.noreply.github.com> Date: Thu, 14 Feb 2019 10:54:42 -0500 Subject: [PATCH] Fix example compiler requirements. Add gcc-mingw:-Wa,-mbig-obj to test/Jamefile.v2. Minor doc/code updates. --- doc/differentiation/autodiff.pdf | Bin 260403 -> 260575 bytes doc/differentiation/autodiff.tex | 4 ++-- example/Jamfile.v2 | 8 ++++---- .../boost/math/differentiation/autodiff.hpp | 6 +++--- .../math/differentiation/autodiff_cpp11.hpp | 2 +- test/Jamfile.v2 | 2 +- test/test_autodiff.cpp | 18 +++++++++--------- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/differentiation/autodiff.pdf b/doc/differentiation/autodiff.pdf index 906e46dadec837804fea37ea57e936a9005ec277..7dcca2d4a1ab834fc2356d91e0d2ca292f31ecda 100644 GIT binary patch delta 21964 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 qujwj(*zf#Uq{5Y&mr`6(l$w~!l{)> at(size_t order, Orders... orders) const; template - get_type_at derivative(Orders... orders) const; + get_type_at derivative(Orders... orders) const; fvar inverse() const; // Multiplicative inverse. @@ -992,7 +992,7 @@ get_type_at fvar::at(size_t order, O // Can throw "std::out_of_range: array::at: __n (which is 7) >= _Nm (which is 7)" template template -get_type_at fvar::derivative(Orders... orders) const +get_type_at,sizeof...(Orders)> fvar::derivative(Orders... orders) const { static_assert(sizeof...(Orders) <= depth, "Number of parameters to derivative(...) cannot exceed fvar::depth."); return at(orders...) * (... * boost::math::factorial(orders)); @@ -1506,7 +1506,7 @@ fvar lambert_w0(const fvar& cr) root_type d1powers = derivatives[1] * derivatives[1]; const root_type x = derivatives[1] * expw; derivatives[2] = d1powers * (-1 - x); - std::array coef { -1, -1 }; // as in derivatives[2]. + std::array coef {{ -1, -1 }}; // as in derivatives[2]. for (size_t n=3 ; n<=order ; ++n) { coef[n-1] = coef[n-2] * -static_cast(2*n-3); diff --git a/include/boost/math/differentiation/autodiff_cpp11.hpp b/include/boost/math/differentiation/autodiff_cpp11.hpp index 3763bd19f..739ac3b10 100644 --- a/include/boost/math/differentiation/autodiff_cpp11.hpp +++ b/include/boost/math/differentiation/autodiff_cpp11.hpp @@ -88,7 +88,7 @@ constexpr T product(T factor, Ts... factors) // Can throw "std::out_of_range: array::at: __n (which is 7) >= _Nm (which is 7)" template template -get_type_at fvar::derivative(Orders... orders) const +get_type_at,sizeof...(Orders)> fvar::derivative(Orders... orders) const { static_assert(sizeof...(Orders) <= depth, "Number of parameters to derivative(...) cannot exceed fvar::depth."); return at(orders...) * product(boost::math::factorial(orders)...); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index ea1f61bef..826d03587 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -1238,7 +1238,7 @@ test-suite misc : [ run compile_test/numerical_differentiation_incl_test.cpp compile_test_main : : : [ requires cxx11_auto_declarations cxx11_constexpr ] ] [ compile compile_test/numerical_differentiation_concept_test.cpp : [ requires cxx11_auto_declarations cxx11_constexpr ] ] [ run __temporary_test.cpp test_instances//test_instances : : : always_show_run_output off ] - [ run test_autodiff.cpp ../../test/build//boost_unit_test_framework : : : msvc:/bigobj [ requires cxx11_inline_namespaces ] ] + [ run test_autodiff.cpp ../../test/build//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj msvc:/bigobj [ requires cxx11_inline_namespaces ] ] ; build-project ../example ; diff --git a/test/test_autodiff.cpp b/test/test_autodiff.cpp index 408d60c21..753704659 100644 --- a/test/test_autodiff.cpp +++ b/test/test_autodiff.cpp @@ -1237,19 +1237,19 @@ struct cos_and_sin_test { using std::cos; using std::sin; - const T eps = 100*std::numeric_limits::epsilon(); // percent + const T eps = 200*std::numeric_limits::epsilon(); // percent constexpr int m = 5; const T cx = boost::math::constants::third_pi(); const auto x = make_fvar(cx); auto cos5 = cos(x); - BOOST_REQUIRE(cos5.derivative(0) == cos(cx)); + BOOST_REQUIRE_CLOSE(cos5.derivative(0), cos(cx), eps); BOOST_REQUIRE_CLOSE(cos5.derivative(1), -sin(cx), eps); BOOST_REQUIRE_CLOSE(cos5.derivative(2), -cos(cx), eps); BOOST_REQUIRE_CLOSE(cos5.derivative(3), sin(cx), eps); BOOST_REQUIRE_CLOSE(cos5.derivative(4), cos(cx), eps); BOOST_REQUIRE_CLOSE(cos5.derivative(5), -sin(cx), eps); auto sin5 = sin(x); - BOOST_REQUIRE(sin5.derivative(0) == sin(cx)); + BOOST_REQUIRE_CLOSE(sin5.derivative(0), sin(cx), eps); BOOST_REQUIRE_CLOSE(sin5.derivative(1), cos(cx), eps); BOOST_REQUIRE_CLOSE(sin5.derivative(2), -sin(cx), eps); BOOST_REQUIRE_CLOSE(sin5.derivative(3), -cos(cx), eps); @@ -1257,9 +1257,9 @@ struct cos_and_sin_test BOOST_REQUIRE_CLOSE(sin5.derivative(5), cos(cx), eps); // Test Order = 0 for codecov auto cos0 = cos(make_fvar(cx)); - BOOST_REQUIRE(cos0.derivative(0) == cos(cx)); + BOOST_REQUIRE_CLOSE(cos0.derivative(0), cos(cx), eps); auto sin0 = sin(make_fvar(cx)); - BOOST_REQUIRE(sin0.derivative(0) == sin(cx)); + BOOST_REQUIRE_CLOSE(sin0.derivative(0), sin(cx), eps); } }; @@ -1281,7 +1281,7 @@ struct acos_test_test const T cx = 0.5; auto x = make_fvar(cx); auto y = acos(x); - BOOST_REQUIRE(y.derivative(0) == acos(cx)); + BOOST_REQUIRE_CLOSE(y.derivative(0), acos(cx), eps); BOOST_REQUIRE_CLOSE(y.derivative(1), -1/sqrt(1-cx*cx), eps); BOOST_REQUIRE_CLOSE(y.derivative(2), -cx/pow(1-cx*cx,1.5), eps); BOOST_REQUIRE_CLOSE(y.derivative(3), -(2*cx*cx+1)/pow(1-cx*cx,2.5), eps); @@ -1334,7 +1334,7 @@ struct asin_test_test const T cx = 0.5; auto x = make_fvar(cx); auto y = asin(x); - BOOST_REQUIRE(y.derivative(0) == asin(cx)); + BOOST_REQUIRE_CLOSE(y.derivative(0), asin(cx), eps); BOOST_REQUIRE_CLOSE(y.derivative(1), 1/sqrt(1-cx*cx), eps); BOOST_REQUIRE_CLOSE(y.derivative(2), cx/pow(1-cx*cx,1.5), eps); BOOST_REQUIRE_CLOSE(y.derivative(3), (2*cx*cx+1)/pow(1-cx*cx,2.5), eps); @@ -1559,8 +1559,8 @@ struct sinh_and_cosh_test auto x = make_fvar(cx); auto s = sinh(x); auto c = cosh(x); - BOOST_REQUIRE(s.derivative(0) == sinh(static_cast(x))); - BOOST_REQUIRE(c.derivative(0) == cosh(static_cast(x))); + BOOST_REQUIRE_CLOSE(s.derivative(0), sinh(static_cast(x)), eps); + BOOST_REQUIRE_CLOSE(c.derivative(0), cosh(static_cast(x)), eps); for (size_t i=0 ; i<=m ; ++i) { BOOST_REQUIRE_CLOSE(s.derivative(i), static_cast(i&1?c:s), eps);