102 lines
1.8 KiB
C++
102 lines
1.8 KiB
C++
// 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 <boost/math/special_functions/cbrt.hpp>
|
|
|
|
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 <math.h>
|
|
|
|
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
|