diff --git a/include/boost/math/distributions/hyperexponential.hpp b/include/boost/math/distributions/hyperexponential.hpp index da9716066..25a4c98a9 100644 --- a/include/boost/math/distributions/hyperexponential.hpp +++ b/include/boost/math/distributions/hyperexponential.hpp @@ -157,11 +157,12 @@ bool check_rates(char const* function, std::vector const& rates, RealT* p template bool check_dist(char const* function, std::vector const& probabilities, std::vector const& rates, RealT* presult, PolicyT const& pol) { + BOOST_MATH_STD_USING if (probabilities.size() != rates.size()) { *presult = policies::raise_domain_error(function, "The parameters \"probabilities\" and \"rates\" must have the same length, but their size differ by: %1%.", - std::abs(static_cast(probabilities.size())-static_cast(rates.size())), + fabs(static_cast(probabilities.size())-static_cast(rates.size())), pol); return false; } @@ -347,6 +348,7 @@ std::pair support(hyperexponential_distribution cons template RealT pdf(hyperexponential_distribution const& dist, RealT const& x) { + BOOST_MATH_STD_USING RealT result = 0; if (!hyperexp_detail::check_x("boost::math::pdf(const boost::math::hyperexponential_distribution<%1%>&, %1%)", x, &result, PolicyT())) @@ -363,7 +365,7 @@ RealT pdf(hyperexponential_distribution const& dist, RealT const //const exponential_distribution exp(rates[i]); //result += probs[i]*pdf(exp, x); - result += probs[i]*rates[i]*std::exp(-rates[i]*x); + result += probs[i]*rates[i]*exp(-rates[i]*x); } return result; diff --git a/test/test_hyperexponential_dist.cpp b/test/test_hyperexponential_dist.cpp index 1fa099eab..5ff149e00 100644 --- a/test/test_hyperexponential_dist.cpp +++ b/test/test_hyperexponential_dist.cpp @@ -56,7 +56,7 @@ RealT make_tolerance() } */ - const RealT tol = 1e-4; + const RealT tol = boost::math::tools::epsilon() * 100 * 100; //std::cout << "[" << __func__ << "] Tolerance: " << tol << "%" << std::endl;