tlx
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
power_to_the.hpp
Go to the documentation of this file.
1
/*******************************************************************************
2
* tlx/math/power_to_the.hpp
3
*
4
* power_to_the<D>(x) raises x to the D-th power using log(D) unrolled
5
* multiplications.
6
*
7
* Part of tlx - http://panthema.net/tlx
8
*
9
* Copyright (C) 2019 Manuel Penschuck <tlx@manuel.jetzt>
10
*
11
* All rights reserved. Published under the Boost Software License, Version 1.0
12
******************************************************************************/
13
14
#ifndef TLX_MATH_POWER_TO_THE_HEADER
15
#define TLX_MATH_POWER_TO_THE_HEADER
16
17
#include <
tlx/math/div_ceil.hpp
>
18
19
namespace
tlx
{
20
21
//! \addtogroup tlx_math
22
//! \{
23
24
/******************************************************************************/
25
//! power_to_the<D>(x)
26
27
//! returns x raised to the power of D using log(D) explicit multiplications.
28
template
<
unsigned
D,
typename
T>
29
static
inline
constexpr
30
T
power_to_the
(T x) {
31
// Compiler optimize two calls to the same recursion into one
32
// Tested with GCC 4+, Clang 3+, MSVC 15+
33
return
D < 1 ? 1
34
: D == 1 ? x
35
:
power_to_the
<D / 2>(x) *
power_to_the
<
div_ceil
(D, 2)>(x);
36
}
37
38
//! \}
39
40
}
// namespace tlx
41
42
#endif // !TLX_MATH_POWER_TO_THE_HEADER
43
44
/******************************************************************************/
tlx
Definition:
exclusive_scan.hpp:17
tlx::power_to_the
static constexpr T power_to_the(T x)
power_to_the<D>(x)
Definition:
power_to_the.hpp:30
div_ceil.hpp
tlx::div_ceil
static constexpr auto div_ceil(const IntegralN &n, const IntegralK &k) -> decltype(n+k)
calculate n div k with rounding up, for n and k positive!
Definition:
div_ceil.hpp:25
tlx
math
power_to_the.hpp
Generated on Sat Oct 2 2021 20:29:00 for tlx by
1.8.11