proxygen
ConstexprMath.h File Reference
#include <cstdint>
#include <limits>
#include <type_traits>

Go to the source code of this file.

Classes

struct  folly::constexpr_equal_to< T >
 
struct  folly::constexpr_not_equal_to< T >
 
struct  folly::constexpr_less< T >
 
struct  folly::constexpr_less_equal< T >
 
struct  folly::constexpr_greater< T >
 
struct  folly::constexpr_greater_equal< T >
 
struct  folly::detail::constexpr_abs_helper< T, typename >
 
struct  folly::detail::constexpr_abs_helper< T, typename std::enable_if< std::is_floating_point< T >::value >::type >
 
struct  folly::detail::constexpr_abs_helper< T, typename std::enable_if< std::is_integral< T >::value &&!std::is_same< T, bool >::value &&std::is_unsigned< T >::value >::type >
 
struct  folly::detail::constexpr_abs_helper< T, typename std::enable_if< std::is_integral< T >::value &&!std::is_same< T, bool >::value &&std::is_signed< T >::value >::type >
 

Namespaces

 folly
 —— Concurrent Priority Queue Implementation ——
 
 folly::detail
 

Functions

template<typename T >
constexpr T folly::constexpr_max (T a)
 
template<typename T , typename... Ts>
constexpr T folly::constexpr_max (T a, T b, Ts...ts)
 
template<typename T >
constexpr T folly::constexpr_min (T a)
 
template<typename T , typename... Ts>
constexpr T folly::constexpr_min (T a, T b, Ts...ts)
 
template<typename T , typename Less >
constexpr T const & folly::constexpr_clamp (T const &v, T const &lo, T const &hi, Less less)
 
template<typename T >
constexpr T const & folly::constexpr_clamp (T const &v, T const &lo, T const &hi)
 
template<typename T >
constexpr auto folly::constexpr_abs (T t) -> decltype(detail::constexpr_abs_helper< T >::go(t))
 
template<typename T >
constexpr T folly::detail::constexpr_log2_ (T a, T e)
 
template<typename T >
constexpr T folly::detail::constexpr_log2_ceil_ (T l2, T t)
 
template<typename T >
constexpr T folly::detail::constexpr_square_ (T t)
 
template<typename T >
constexpr T folly::constexpr_log2 (T t)
 
template<typename T >
constexpr T folly::constexpr_log2_ceil (T t)
 
template<typename T >
constexpr T folly::constexpr_ceil (T t, T round)
 
template<typename T >
constexpr T folly::constexpr_pow (T base, std::size_t exp)
 
template<typename T >
constexpr std::size_t folly::constexpr_find_last_set (T const t)
 
template<typename U >
constexpr std::size_t folly::detail::constexpr_find_first_set_ (std::size_t s, std::size_t a, U const u)
 
template<typename T >
constexpr std::size_t folly::constexpr_find_first_set (T t)
 
template<typename T >
constexpr T folly::constexpr_add_overflow_clamped (T a, T b)
 
template<typename T >
constexpr T folly::constexpr_sub_overflow_clamped (T a, T b)
 
template<typename Dst , typename Src >
constexpr std::enable_if< std::is_integral< Src >::value, Dst >::type folly::constexpr_clamp_cast (Src src)
 
template<typename D , typename S >
constexpr D folly::detail::constexpr_clamp_cast_helper (S src, S sl, S su, D dl, D du)
 
template<typename Dst , typename Src >
constexpr std::enable_if< std::is_floating_point< Src >::value, Dst >::type folly::constexpr_clamp_cast (Src src)
 

Variables

constexpr double folly::detail::kClampCastLowerBoundDoubleToInt64F = -9223372036854774784.0
 
constexpr double folly::detail::kClampCastUpperBoundDoubleToInt64F = 9223372036854774784.0
 
constexpr double folly::detail::kClampCastUpperBoundDoubleToUInt64F = 18446744073709549568.0
 
constexpr float folly::detail::kClampCastLowerBoundFloatToInt32F = -2147483520.0f
 
constexpr float folly::detail::kClampCastUpperBoundFloatToInt32F = 2147483520.0f
 
constexpr float folly::detail::kClampCastUpperBoundFloatToUInt32F = 4294967040.0f