3 #include <benchmark/benchmark.h>
4 #include <boost/math/special_functions/chebyshev.hpp>
8 void ChebyshevClenshaw(benchmark::State
& state
)
10 std::vector
<Real
> v(state
.range(0));
11 std::random_device rd
;
12 std::mt19937_64
mt(rd());
13 std::uniform_real_distribution
<Real
> unif(-1,1);
14 for (size_t i
= 0; i
< v
.size(); ++i
)
19 using boost::math::chebyshev_clenshaw_recurrence
;
23 benchmark::DoNotOptimize(chebyshev_clenshaw_recurrence(v
.data(), v
.size(), x
));
25 state
.SetComplexityN(state
.range(0));
29 void TranslatedChebyshevClenshaw(benchmark::State
& state
)
31 std::vector
<Real
> v(state
.range(0));
32 std::random_device rd
;
33 std::mt19937_64
mt(rd());
34 std::uniform_real_distribution
<Real
> unif(-1,1);
35 for (size_t i
= 0; i
< v
.size(); ++i
)
40 using boost::math::detail::unchecked_chebyshev_clenshaw_recurrence
;
46 benchmark::DoNotOptimize(unchecked_chebyshev_clenshaw_recurrence(v
.data(), v
.size(), a
, b
, x
));
48 state
.SetComplexityN(state
.range(0));
52 BENCHMARK_TEMPLATE(TranslatedChebyshevClenshaw
, double)->RangeMultiplier(2)->Range(1<<1, 1<<22)->Complexity(benchmark::oN
);
53 BENCHMARK_TEMPLATE(ChebyshevClenshaw
, double)->RangeMultiplier(2)->Range(1<<1, 1<<22)->Complexity(benchmark::oN
);