From 43847e5c8530847aee5859a628d845b722dd6534 Mon Sep 17 00:00:00 2001 From: Brian Ward Date: Wed, 22 May 2024 10:38:13 -0400 Subject: [PATCH 1/2] Remove problematic calls to std::move in hcubature --- stan/math/prim/functor/hcubature.hpp | 4 ++-- .../unit/math/prim/functor/hcubature_test.cpp | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/stan/math/prim/functor/hcubature.hpp b/stan/math/prim/functor/hcubature.hpp index 88f8823bb5b..710bcaf4d0a 100644 --- a/stan/math/prim/functor/hcubature.hpp +++ b/stan/math/prim/functor/hcubature.hpp @@ -479,8 +479,8 @@ inline auto hcubature(const F& integrand, const ParsTuple& pars, const int dim, std::tie(result_2, err_2, kdivide_2) = internal::integrate_GenzMalik( integrand, genz_malik, dim, box.a_, mb, pars); } - box_t box1(std::move(ma), std::move(box.b_), result_1, kdivide_1); - box_t box2(std::move(box.a_), std::move(mb), result_2, kdivide_2); + box_t box1(std::move(ma), box.b_, result_1, kdivide_1); + box_t box2(box.a_, std::move(mb), result_2, kdivide_2); result += result_1 + result_2 - box.I_; err += err_1 + err_2 - err_vec[err_idx]; ms[err_idx].I_ = 0; diff --git a/test/unit/math/prim/functor/hcubature_test.cpp b/test/unit/math/prim/functor/hcubature_test.cpp index ae19259e4be..96271909cb5 100644 --- a/test/unit/math/prim/functor/hcubature_test.cpp +++ b/test/unit/math/prim/functor/hcubature_test.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include @@ -163,3 +164,22 @@ TEST(StanMath_hcubature_prim, test1) { std::make_tuple((1 + sqrt(10.0)) / 9.0), dim, a_4, b_4, 20000, 0.0, reqRelError_3, 0.999998); } + + +TEST(StanMath_hcubature_prim, test_issue_3075) { + // test for regressions against issue https://github.com/stan-dev/math/issues/3075 + using stan::math::internal::GradientCalc; + using stan::math::internal::wiener7_integrate; + using stan::math::internal::wiener5_density; + + auto params_st = std::make_tuple(0.553273, 1, -3.5, 0.55, 0.553161, + 1.06423, 0.0941929, 0.0, -28.3242); + Eigen::VectorXd xmin = Eigen::VectorXd::Zero(2); + Eigen::VectorXd xmax = Eigen::VectorXd::Ones(2); + + auto f = wiener7_integrate( + [](auto&&... args) { return wiener5_density(args...); }, + -18.3029, params_st, 1, xmin, xmax, 6000, 0, 4.5e-05); + + ASSERT_FLOAT_EQ(f, 4.97571e-312); +} From 9575d1a069aa0133112abf8d47957014aa820d87 Mon Sep 17 00:00:00 2001 From: Stan Jenkins Date: Wed, 22 May 2024 10:42:41 -0400 Subject: [PATCH 2/2] [Jenkins] auto-formatting by clang-format version 10.0.0-4ubuntu1 --- test/unit/math/prim/functor/hcubature_test.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/unit/math/prim/functor/hcubature_test.cpp b/test/unit/math/prim/functor/hcubature_test.cpp index 96271909cb5..79a3b917f05 100644 --- a/test/unit/math/prim/functor/hcubature_test.cpp +++ b/test/unit/math/prim/functor/hcubature_test.cpp @@ -165,21 +165,21 @@ TEST(StanMath_hcubature_prim, test1) { 20000, 0.0, reqRelError_3, 0.999998); } - TEST(StanMath_hcubature_prim, test_issue_3075) { - // test for regressions against issue https://github.com/stan-dev/math/issues/3075 + // test for regressions against issue + // https://github.com/stan-dev/math/issues/3075 using stan::math::internal::GradientCalc; - using stan::math::internal::wiener7_integrate; using stan::math::internal::wiener5_density; + using stan::math::internal::wiener7_integrate; - auto params_st = std::make_tuple(0.553273, 1, -3.5, 0.55, 0.553161, - 1.06423, 0.0941929, 0.0, -28.3242); + auto params_st = std::make_tuple(0.553273, 1, -3.5, 0.55, 0.553161, 1.06423, + 0.0941929, 0.0, -28.3242); Eigen::VectorXd xmin = Eigen::VectorXd::Zero(2); Eigen::VectorXd xmax = Eigen::VectorXd::Ones(2); auto f = wiener7_integrate( - [](auto&&... args) { return wiener5_density(args...); }, - -18.3029, params_st, 1, xmin, xmax, 6000, 0, 4.5e-05); + [](auto&&... args) { return wiener5_density(args...); }, + -18.3029, params_st, 1, xmin, xmax, 6000, 0, 4.5e-05); ASSERT_FLOAT_EQ(f, 4.97571e-312); }