28 #ifndef BSL_NUMERIC_LIMITS_HPP 29 #define BSL_NUMERIC_LIMITS_HPP 53 return (CHAR_BIT * static_cast<bsl::int32>(
sizeof(T)));
56 return (CHAR_BIT * static_cast<bsl::int32>(
sizeof(T))) - 1;
73 static constexpr
bool is_specialized{
false};
77 static constexpr
bool is_integer{
false};
79 static constexpr
bool is_exact{
false};
81 static constexpr
bool has_infinity{
false};
83 static constexpr
bool has_quiet_NaN{
false};
85 static constexpr
bool has_signaling_NaN{
false};
89 static constexpr
bool has_denorm_loss{
false};
91 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
93 static constexpr
bool is_iec559{
false};
95 static constexpr
bool is_bounded{
false};
97 static constexpr
bool is_modulo{
false};
109 static constexpr
bsl::int32 min_exponent10{0};
113 static constexpr
bsl::int32 max_exponent10{0};
115 static constexpr
bool traps{
false};
117 static constexpr
bool tinyness_before{
false};
247 class numeric_limits<bool> final
250 static constexpr
bool is_specialized{
true};
252 static constexpr
bool is_signed{
false};
254 static constexpr
bool is_integer{
true};
256 static constexpr
bool is_exact{
true};
258 static constexpr
bool has_infinity{
false};
260 static constexpr
bool has_quiet_NaN{
false};
262 static constexpr
bool has_signaling_NaN{
false};
266 static constexpr
bool has_denorm_loss{
false};
268 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
270 static constexpr
bool is_iec559{
false};
272 static constexpr
bool is_bounded{
true};
274 static constexpr
bool is_modulo{
false};
286 static constexpr
bsl::int32 min_exponent10{0};
290 static constexpr
bsl::int32 max_exponent10{0};
292 static constexpr
bool traps{
false};
294 static constexpr
bool tinyness_before{
false};
304 static constexpr
bool 317 static constexpr
bool 330 static constexpr
bool 343 static constexpr
bool 356 static constexpr
bool 369 static constexpr
bool 382 static constexpr
bool 395 static constexpr
bool 408 static constexpr
bool 422 class numeric_limits<bsl::
int8> final
425 static constexpr
bool is_specialized{
true};
427 static constexpr
bool is_signed{
true};
429 static constexpr
bool is_integer{
true};
431 static constexpr
bool is_exact{
true};
433 static constexpr
bool has_infinity{
false};
435 static constexpr
bool has_quiet_NaN{
false};
437 static constexpr
bool has_signaling_NaN{
false};
441 static constexpr
bool has_denorm_loss{
false};
443 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
445 static constexpr
bool is_iec559{
false};
447 static constexpr
bool is_bounded{
true};
449 static constexpr
bool is_modulo{
false};
451 static constexpr
bsl::int32 digits{details::get_digits<bsl::int8>()};
461 static constexpr
bsl::int32 min_exponent10{0};
465 static constexpr
bsl::int32 max_exponent10{0};
467 static constexpr
bool traps{
false};
469 static constexpr
bool tinyness_before{
false};
597 class numeric_limits<bsl::
int16> final
600 static constexpr
bool is_specialized{
true};
602 static constexpr
bool is_signed{
true};
604 static constexpr
bool is_integer{
true};
606 static constexpr
bool is_exact{
true};
608 static constexpr
bool has_infinity{
false};
610 static constexpr
bool has_quiet_NaN{
false};
612 static constexpr
bool has_signaling_NaN{
false};
616 static constexpr
bool has_denorm_loss{
false};
618 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
620 static constexpr
bool is_iec559{
false};
622 static constexpr
bool is_bounded{
true};
624 static constexpr
bool is_modulo{
false};
626 static constexpr
bsl::int32 digits{details::get_digits<bsl::int16>()};
636 static constexpr
bsl::int32 min_exponent10{0};
640 static constexpr
bsl::int32 max_exponent10{0};
642 static constexpr
bool traps{
false};
644 static constexpr
bool tinyness_before{
false};
772 class numeric_limits<bsl::
int32> final
775 static constexpr
bool is_specialized{
true};
777 static constexpr
bool is_signed{
true};
779 static constexpr
bool is_integer{
true};
781 static constexpr
bool is_exact{
true};
783 static constexpr
bool has_infinity{
false};
785 static constexpr
bool has_quiet_NaN{
false};
787 static constexpr
bool has_signaling_NaN{
false};
791 static constexpr
bool has_denorm_loss{
false};
793 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
795 static constexpr
bool is_iec559{
false};
797 static constexpr
bool is_bounded{
true};
799 static constexpr
bool is_modulo{
false};
801 static constexpr
bsl::int32 digits{details::get_digits<bsl::int32>()};
811 static constexpr
bsl::int32 min_exponent10{0};
815 static constexpr
bsl::int32 max_exponent10{0};
817 static constexpr
bool traps{
false};
819 static constexpr
bool tinyness_before{
false};
947 class numeric_limits<bsl::
int64> final
950 static constexpr
bool is_specialized{
true};
952 static constexpr
bool is_signed{
true};
954 static constexpr
bool is_integer{
true};
956 static constexpr
bool is_exact{
true};
958 static constexpr
bool has_infinity{
false};
960 static constexpr
bool has_quiet_NaN{
false};
962 static constexpr
bool has_signaling_NaN{
false};
966 static constexpr
bool has_denorm_loss{
false};
968 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
970 static constexpr
bool is_iec559{
false};
972 static constexpr
bool is_bounded{
true};
974 static constexpr
bool is_modulo{
false};
976 static constexpr
bsl::int32 digits{details::get_digits<bsl::int64>()};
986 static constexpr
bsl::int32 min_exponent10{0};
990 static constexpr
bsl::int32 max_exponent10{0};
992 static constexpr
bool traps{
false};
994 static constexpr
bool tinyness_before{
false};
1122 class numeric_limits<bsl::
uint8> final
1125 static constexpr
bool is_specialized{
true};
1127 static constexpr
bool is_signed{
false};
1129 static constexpr
bool is_integer{
true};
1131 static constexpr
bool is_exact{
true};
1133 static constexpr
bool has_infinity{
false};
1135 static constexpr
bool has_quiet_NaN{
false};
1137 static constexpr
bool has_signaling_NaN{
false};
1141 static constexpr
bool has_denorm_loss{
false};
1143 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
1145 static constexpr
bool is_iec559{
false};
1147 static constexpr
bool is_bounded{
true};
1149 static constexpr
bool is_modulo{
true};
1151 static constexpr
bsl::int32 digits{details::get_digits<bsl::uint8>()};
1161 static constexpr
bsl::int32 min_exponent10{0};
1165 static constexpr
bsl::int32 max_exponent10{0};
1167 static constexpr
bool traps{
false};
1169 static constexpr
bool tinyness_before{
false};
1302 class numeric_limits<bsl::
uint16> final
1305 static constexpr
bool is_specialized{
true};
1307 static constexpr
bool is_signed{
false};
1309 static constexpr
bool is_integer{
true};
1311 static constexpr
bool is_exact{
true};
1313 static constexpr
bool has_infinity{
false};
1315 static constexpr
bool has_quiet_NaN{
false};
1317 static constexpr
bool has_signaling_NaN{
false};
1321 static constexpr
bool has_denorm_loss{
false};
1323 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
1325 static constexpr
bool is_iec559{
false};
1327 static constexpr
bool is_bounded{
true};
1329 static constexpr
bool is_modulo{
true};
1331 static constexpr
bsl::int32 digits{details::get_digits<bsl::uint16>()};
1341 static constexpr
bsl::int32 min_exponent10{0};
1345 static constexpr
bsl::int32 max_exponent10{0};
1347 static constexpr
bool traps{
false};
1349 static constexpr
bool tinyness_before{
false};
1482 class numeric_limits<bsl::
uint32> final
1485 static constexpr
bool is_specialized{
true};
1487 static constexpr
bool is_signed{
false};
1489 static constexpr
bool is_integer{
true};
1491 static constexpr
bool is_exact{
true};
1493 static constexpr
bool has_infinity{
false};
1495 static constexpr
bool has_quiet_NaN{
false};
1497 static constexpr
bool has_signaling_NaN{
false};
1501 static constexpr
bool has_denorm_loss{
false};
1503 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
1505 static constexpr
bool is_iec559{
false};
1507 static constexpr
bool is_bounded{
true};
1509 static constexpr
bool is_modulo{
true};
1511 static constexpr
bsl::int32 digits{details::get_digits<bsl::uint32>()};
1521 static constexpr
bsl::int32 min_exponent10{0};
1525 static constexpr
bsl::int32 max_exponent10{0};
1527 static constexpr
bool traps{
false};
1529 static constexpr
bool tinyness_before{
false};
1657 class numeric_limits<bsl::
uint64> final
1660 static constexpr
bool is_specialized{
true};
1662 static constexpr
bool is_signed{
false};
1664 static constexpr
bool is_integer{
true};
1666 static constexpr
bool is_exact{
true};
1668 static constexpr
bool has_infinity{
false};
1670 static constexpr
bool has_quiet_NaN{
false};
1672 static constexpr
bool has_signaling_NaN{
false};
1676 static constexpr
bool has_denorm_loss{
false};
1678 static constexpr
float_round_style round_style{float_round_style::round_toward_zero};
1680 static constexpr
bool is_iec559{
false};
1682 static constexpr
bool is_bounded{
true};
1684 static constexpr
bool is_modulo{
true};
1686 static constexpr
bsl::int32 digits{details::get_digits<bsl::uint64>()};
1696 static constexpr
bsl::int32 min_exponent10{0};
1700 static constexpr
bsl::int32 max_exponent10{0};
1702 static constexpr
bool traps{
false};
1704 static constexpr
bool tinyness_before{
false};
::uint8_t uint8
defines an 8bit unsigned integer
Definition: cstdint.hpp:45
static constexpr T lowest() noexcept
Returns the lowest value of T.
Definition: numeric_limits.hpp:141
static constexpr T epsilon() noexcept
Returns the floating point resolution.
Definition: numeric_limits.hpp:167
::uint16_t uint16
defines an 16bit unsigned integer
Definition: cstdint.hpp:47
If the provided type is a signed type (taking into account const qualifications), provides the member...
Definition: is_signed.hpp:56
::int64_t int64
defines an 64bit signed integer
Definition: cstdint.hpp:42
If the provided type is a unsigned type (taking into account const qualifications),...
Definition: is_unsigned.hpp:55
::int16_t int16
defines an 16bit signed integer
Definition: cstdint.hpp:38
static constexpr T denorm_min() noexcept
Returns the smallest subnormal value for T.
Definition: numeric_limits.hpp:232
::uint32_t uint32
defines an 32bit unsigned integer
Definition: cstdint.hpp:49
static constexpr T quiet_NaN() noexcept
Returns the quiet NaN value for T.
Definition: numeric_limits.hpp:206
static constexpr T signaling_NaN() noexcept
Returns the signaling NaN value for T.
Definition: numeric_limits.hpp:219
static constexpr T min() noexcept
Returns the min value of T.
Definition: numeric_limits.hpp:128
::int8_t int8
defines an 8bit signed integer
Definition: cstdint.hpp:36
constexpr bsl::int32 get_digits() noexcept
Returns the number of Radix digits for a given type.
Definition: numeric_limits.hpp:50
static constexpr T max() noexcept
Returns the max value of T.
Definition: numeric_limits.hpp:154
::int32_t int32
defines an 32bit signed integer
Definition: cstdint.hpp:40
float_round_style
Enumerates round styles for floating points.
Definition: float_round_style.hpp:46
::uint64_t uint64
defines an 64bit unsigned integer
Definition: cstdint.hpp:51
Implements std::numeric_limits.
Definition: numeric_limits.hpp:70
static constexpr T infinity() noexcept
Returns the value of infinity for T.
Definition: numeric_limits.hpp:193
float_denorm_style
Enumerates subnormal values for floating points.
Definition: float_denorm_style.hpp:46
static constexpr T round_error() noexcept
Returns the rounding error of T.
Definition: numeric_limits.hpp:180