7.1. cmath — Common mathematical functions

The functions in the cmath module are meant to mimic the ones from the <cmath> standard library header. The main difference is that they all live in the subnamespace polder::math::meta and are explicitly meant to be used at compile time.

Some of the functions in this module are less versatile than their <cmath> counterparts (e.g. pow) while some of them are more versatile (e.g min and max). Since the functions are generic, the original names have been stripped from their type-specific prefixes and suffixes.

7.1.1. Basic functions

constexpr Number math::meta::abs(Number x)

Return the absolute value of x.

constexpr CommonType math::meta::min(T first, U second, Rest... rest)

Return the smallest of two or more arguments. If the arguments have different types, the result type will be the common type of the different arguments, std::common_type_t<T, U, Rest...>.

constexpr CommonType math::meta::max(T first, U second, Rest... rest)

Return the largest of two or more arguments. If the arguments have different types, the result type will be the common type of the different arguments, std::common_type_t<T, U, Rest...>.

7.1.2. Number-theoretic and representation functions

constexpr Float math::meta::floor(Float x)

Return the nearest integer not greater than x.

constexpr Float math::meta::ceil(Float x)

Return the nearest integer not less than x.

constexpr Float math::meta::round(Float x)

Return the nearest integer to x, rounding away from zero in halfway cases.

constexpr Float math::meta::trunc(Float x)

Return the nearest integer not greater in magnitude than x.

7.1.3. Power and logarithmic functions

constexpr CommonType math::meta::pow(T value, Integer exponent)

Return value raised to the power exponent.

constexpr Float math::meta::sqrt(Float x)

Return the square root of x.

Precondition: x >= 0.