diff --git a/test/sycl_jamfile b/test/sycl_jamfile index e8bd12f8c..1b0da5ca6 100644 --- a/test/sycl_jamfile +++ b/test/sycl_jamfile @@ -19,3 +19,4 @@ run test_cbrt.cpp ; run test_sign.cpp ; run test_round.cpp ; run test_expm1_simple.cpp; +run test_log1p_simple.cpp; diff --git a/test/test_log1p_simple.cpp b/test/test_log1p_simple.cpp new file mode 100644 index 000000000..c3acd58ed --- /dev/null +++ b/test/test_log1p_simple.cpp @@ -0,0 +1,48 @@ +// Copyright Matt Borland 2024. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include "math_unit_test.hpp" + +constexpr int N = 50000; + +template +void test() +{ + std::mt19937_64 rng(42); + std::uniform_real_distribution dist(0, 0.01); + + for (int n = 0; n < N; ++n) + { + const T value (dist(rng)); + CHECK_ULP_CLOSE(std::log1p(value), boost::math::log1p(value), 10); + } +} + +template +void test_log1pmx() +{ + std::mt19937_64 rng(42); + std::uniform_real_distribution dist(0, 0.01); + + for (int n = 0; n < N; ++n) + { + const T value (dist(rng)); + CHECK_ULP_CLOSE(std::log1p(value) - value, boost::math::log1pmx(value), 100); + } +} + +int main() +{ + test(); + test(); + + test_log1pmx(); + test_log1pmx(); + + return boost::math::test::report_errors(); +}