jaulib v1.3.0
Jau Support Library (C++, Java, ..)
|
Go to the source code of this file.
Namespaces | |
namespace | jau |
__pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros. | |
Functions | |
template<typename T , std::enable_if_t< std::is_arithmetic_v< T > &&std::is_integral_v< T > &&!std::is_unsigned_v< T >, bool > = true> | |
constexpr T | jau::ct_abs (const T x) noexcept |
Returns the absolute value of an arithmetic number (w/o branching) in O(1) and constant time (CT), while ct_abs(INT_MIN) is undefined behavior (UB) instead of being mapped correctly to INT_MAX like jau::abs() does, see above. More... | |
constexpr uint32_t | jau::ct_bit_count (uint32_t n) noexcept |
Returns the number of set bits within given 32bit integer (w/o branching) in O(1) and constant time (CT). More... | |
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true> | |
constexpr T | jau::ct_clamp (const T x, const T min_val, const T max_val) noexcept |
Returns constrained integral value to lie between given min- and maximum value for MIN <= x - y <= MAX (w/o branching) in O(1) and constant time (CT). More... | |
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true> | |
constexpr T | jau::ct_expand_top_bit (T x) |
Returns ~0 (2-complement) if top bit of arg is set, otherwise 0 (w/o branching) in O(1) and constant time (CT). More... | |
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true> | |
constexpr T | jau::ct_is_zero (T x) |
Returns ~0 (2-complement) if arg is zero, otherwise 0 (w/o branching) in O(1) and constant time (CT). More... | |
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true> | |
constexpr T | jau::ct_masked_merge (T mask, T a_if_masked, T b_if_unmasked) |
Returns merged a_if_masked bits selected by mask 1 bits and b_if_unmasked bits selected by mask 0 bits (w/o branching) in O(1) and constant time (CT). More... | |
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true> | |
constexpr T | jau::ct_max (const T x, const T y) noexcept |
Returns the maximum of two integrals for MIN <= x - y <= MAX (w/o branching) in O(1) and constant time (CT). More... | |
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true> | |
constexpr T | jau::ct_min (const T x, const T y) noexcept |
Returns the minimum of two integrals for MIN <= x - y <= MAX (w/o branching) in O(1) and constant time (CT). More... | |
constexpr uint32_t | jau::ct_next_power_of_2 (uint32_t n) |
Returns the next higher power of 2 of given unsigned 32-bit n (w/o branching) in O(1) and constant time (CT). More... | |
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true> | |
constexpr int | jau::ct_sign (const T x) noexcept |
Returns the value of the sign function (w/o branching) in O(1) and constant time (CT) More... | |