blob: eadf7acc40de6140490890c063786307e9b54a47 [file] [log] [blame]
// 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