/*!
* @defgroup MetaprogrammingMath Metaprogramming Math
*
* @brief Metafunctions for mathematical computations.
*
* @mfn MetaprogrammingMath#Log2
*
* @brief Compute ceiled logarithm to base 2 using metaprogramming.
*
* @signature __uint64 Log2<NUMERUS>::VALUE;
*
* @tparam NUMERUS <tt>__int64</tt> value to use for the numerus.
*
* @return __uint64 <tt>ceil(log2(NUMERUS))</tt>
*
* @section Example
*
* @snippet demos/dox/basic/metaprogramming_math.cpp log2 call
*
*
*
* @mfn MetaprogrammingMath#Log2Floor
*
* @brief Compute floored logarithm to base 2 using metaprogramming.
*
* @signature __uint64 Log2Floor<NUMERUS>::VALUE;
*
* @tparam NUMERUS <tt>__int64</tt> value to use for the numerus.
*
* @return __uint64 <tt>floor(log2(NUMERUS))</tt>
*
* @section Example
*
* @snippet demos/dox/basic/metaprogramming_math.cpp log2floor call
*
*
*
* @mfn MetaprogrammingMath#Power
*
* @brief Compute power of a number.
*
* @signature __uint64 Power<BASE, EXPONENT>::VALUE;
*
* @tparam BASE The base of the term (<tt>__int64</tt>).
* @tparam EXPONENT The exponent of the term (<tt>__int64</tt>).
*
* @return __uint64 b<sup>e</sup
*
* @snippet demos/dox/basic/metaprogramming_math.cpp power call
*/