1#ifndef NEFORCE_CORE_NUMERIC_NUMERIC_TYPES_HPP__
2#define NEFORCE_CORE_NUMERIC_NUMERIC_TYPES_HPP__
14NEFORCE_BEGIN_NAMESPACE__
33NEFORCE_CONST_FUNCTION
constexpr bool signbit(
const T x)
noexcept {
37 const UInt bits = *
reinterpret_cast<const UInt*
>(&x);
38 constexpr UInt sign_mask =
static_cast<UInt
>(1) << (8 *
sizeof(UInt) - 1);
39 return (bits & sign_mask) != 0;
52NEFORCE_CONST_FUNCTION
constexpr bool is_nan(
const T x)
noexcept {
89NEFORCE_CONST_FUNCTION
constexpr bool is_infinity(
const T x)
noexcept {
102NEFORCE_CONST_FUNCTION
constexpr bool is_finite(
const T x)
noexcept {
116NEFORCE_CONST_FUNCTION
constexpr bool is_normal(
const T x)
noexcept {
123 const T abs = x < 0 ? -x : x;
137NEFORCE_CONST_FUNCTION
constexpr bool is_subnormal(
const T x)
noexcept {
144 const T abs = x < 0 ? -x : x;
145 return abs < numeric_traits<T>::min();
159NEFORCE_CONST_FUNCTION
constexpr bool is_positive(
const T x)
noexcept {
160 return x > 0 || (x == 0 && !_NEFORCE
signbit(x));
174NEFORCE_CONST_FUNCTION
constexpr bool is_negative(
const T x)
noexcept {
175 return x < 0 || (x == 0 && _NEFORCE
signbit(x));
180NEFORCE_END_NAMESPACE__
static NEFORCE_NODISCARD constexpr T min() noexcept
获取类型的最小值
static NEFORCE_NODISCARD constexpr T infinity() noexcept
获取正无穷大表示
NEFORCE_INLINE17 constexpr bool is_floating_point_v
is_floating_point的便捷变量模板
NEFORCE_CONST_FUNCTION constexpr bool is_nan(const T x) noexcept
检查浮点数是否为NaN
NEFORCE_CONST_FUNCTION constexpr bool is_infinity(const T x) noexcept
检查浮点数是否为无穷大
NEFORCE_CONST_FUNCTION constexpr bool is_finite(const T x) noexcept
检查浮点数是否为有限值
NEFORCE_CONST_FUNCTION constexpr bool is_pos_infinity(const T x) noexcept
检查浮点数是否为正无穷大
NEFORCE_CONST_FUNCTION constexpr bool is_neg_infinity(const T x) noexcept
检查浮点数是否为负无穷大
NEFORCE_CONST_FUNCTION constexpr bool is_subnormal(const T x) noexcept
检查浮点数是否为次正规数
NEFORCE_CONST_FUNCTION constexpr bool signbit(const T x) noexcept
获取浮点数的符号位
NEFORCE_CONST_FUNCTION constexpr bool is_positive(const T x) noexcept
检查浮点数是否为正数
NEFORCE_CONST_FUNCTION constexpr bool is_normal(const T x) noexcept
检查浮点数是否为正规数
NEFORCE_CONST_FUNCTION constexpr bool is_negative(const T x) noexcept
检查浮点数是否为负数
typename make_integer< Size, IsSigned >::type make_integer_t
make_integer的便捷别名