GroupMetaprogramming Math Metafunctions for mathematical computations.

Grouped Metafunction Overview

• `uint64_t Log2<NUMERUS>::VALUE;`
Compute ceiled logarithm to base 2 using metaprogramming.
• `uint64_t Log2Floor<NUMERUS>::VALUE;`
Compute floored logarithm to base 2 using metaprogramming.
• `uint64_t Power<BASE, EXPONENT>::VALUE;`
Compute power of a number.

Grouped Metafunctions Detail

`uint64_t Log2<NUMERUS>::VALUE;`

Compute ceiled logarithm to base 2 using metaprogramming.

Template Parameters

`NUMERUS` int64_t value to use for the numerus.

Returns

`uint64_t` ceil(log2(NUMERUS))

Example

```    std::cout << Log2<10>::VALUE << "\n";  // => "4"
```

`uint64_t Log2Floor<NUMERUS>::VALUE;`

Compute floored logarithm to base 2 using metaprogramming.

Template Parameters

`NUMERUS` int64_t value to use for the numerus.

Returns

`uint64_t` floor(log2(NUMERUS))

Example

```    std::cout << Log2Floor<10>::VALUE << "\n";  // => "3""
```

`uint64_t Power<BASE, EXPONENT>::VALUE;`

Compute power of a number.

Template Parameters

`BASE` The base of the term (int64_t). The exponent of the term (int64_t).

Returns

`uint64_t` BASEEXPONENT
```    std::cout << Power<2, 4>::VALUE << "\n";  // => "16"
```