// Copyright John Maddock 2007. // 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 "required_defines.hpp" #include "performance_measure.hpp" #include double cbrt_test() { double result = 0; double val = 1e-100; for(int i = 0; i < 1000; ++i) { val *= 1.5; result += boost::math::cbrt(val); } return result; } BOOST_MATH_PERFORMANCE_TEST(cbrt_test, "cbrt") { double result = cbrt_test(); consume_result(result); set_call_count(1000); } double cbrt_pow_test() { double result = 0; double val = 1e-100; for(int i = 0; i < 1000; ++i) { val *= 1.5; result += std::pow(val, 0.33333333333333333333333333333333); } return result; } BOOST_MATH_PERFORMANCE_TEST(cbrt_pow_test, "cbrt-pow") { double result = cbrt_pow_test(); consume_result(result); set_call_count(1000); } #ifdef TEST_CEPHES extern "C" double cbrt(double); double cbrt_cephes_test() { double result = 0; double val = 1e-100; for(int i = 0; i < 1000; ++i) { val *= 1.5; result += ::cbrt(val); } return result; } BOOST_MATH_PERFORMANCE_TEST(cbrt_test, "cbrt-cephes") { double result = cbrt_cephes_test(); consume_result(result); set_call_count(1000); } #endif #if defined(__GNUC__) && (__GNUC__ >= 4) #include double cbrt_c99_test() { double result = 0; double val = 1e-100; for(int i = 0; i < 1000; ++i) { val *= 1.5; result += ::cbrt(val); } return result; } BOOST_MATH_PERFORMANCE_TEST(cbrt_c99_test, "cbrt-c99") { double result = cbrt_c99_test(); consume_result(result); set_call_count(1000); } #endif