Describes the rounding style for floating-point types.
This is used in the std::numeric_limits class.
Intermediate.
To zero.
To the nearest representable value.
To infinity.
To negative infinity.
Describes the denormalization for floating-point types.
These values represent the presence or absence of a variable number of exponent bits. This type is used in the std::numeric_limits class.
Indeterminate at compile time whether denormalized values are allowed.
The type does not allow denormalized values.
The type allows denormalized values.
Part of std::numeric_limits.
This will be true for all fundamental types (which have specializations), and false for everything else.
integer types, the number of non-sign bits in the mantissa; for floating types, the number of radix
digits in the mantissa.
The number of base 10 digits that can be represented without change.
True if the type is signed.
True if the type is integer.
exact, but not all exact types are integer. For example, rational and fixed-exponent representations are exact but not integer.
floating types, specifies the base of the exponent representation.
(one less than that integer) is a normalized floating point number.
the range of normalized floating point numbers.
(one less than that integer) is a representable finite floating point number.
the range of representable finite floating point numbers.
True if the type has a representation for positive infinity.
Not a Number.
Not a Number.
See std::float_denorm_style for more information.
rather than as an inexact result.
known as IEEE 754. (Only makes sense for floating point types.)
finite. All built-in types are bounded, this member would be false for arbitrary precision types.
operation involving +, -, or * on values of that type whose result would fall outside the range [min(),max()], the value returned differs from the true value by an integer multiple of max() - min() + 1. On most machines, this is false for floating types, true for unsigned integers, and true for signed integers. See PR22200 about signed integers.
True if trapping is implemented for this type.
True if tininess is detected before rounding. (see IEC 559)
meaningful for floating types; integer types will all be round_toward_zero.
Properties of fundamental types.
This class allows a program to obtain information about the representation of a fundamental type on a given platform. For non-fundamental types, the functions will return 0 and the data members will all be false
.
_GLIBCXX_RESOLVE_LIB_DEFECTS: DRs 201 and 184 (hi Gaby!) are noted, but not incorporated in this documented (yet).
The minimum finite value, or for floating types with denormalization, the minimum positive normalized value.
The maximum finite value.
value greater than 1 that is representable.
The maximum rounding error measurement (see LIA-1).
numeric_limits<bool> specialization.
numeric_limits<char> specialization.
numeric_limits<signed char> specialization.
numeric_limits<unsigned char> specialization.
numeric_limits<wchar_t> specialization.
numeric_limits<short> specialization.
numeric_limits<unsigned short> specialization.
numeric_limits<int> specialization.
numeric_limits<unsigned int> specialization.
numeric_limits<long> specialization.
numeric_limits<unsigned long> specialization.
numeric_limits<long long> specialization.
numeric_limits<unsigned long long> specialization.
numeric_limits<float> specialization.
numeric_limits<double> specialization.
numeric_limits<long double> specialization.
149 _GLIBCXX_BEGIN_NAMESPACE_VERSION
156 enum float_round_style
158 round_indeterminate = -1,
159 round_toward_zero = 0,
160 round_to_nearest = 1,
161 round_toward_infinity = 2,
162 round_toward_neg_infinity = 3
171 enum float_denorm_style
174 denorm_indeterminate = -1,
191 struct __numeric_limits_base
195 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
false;
200 static _GLIBCXX_USE_CONSTEXPR
int digits = 0;
203 static _GLIBCXX_USE_CONSTEXPR
int digits10 = 0;
205 #if __cplusplus >= 201103L
208 static constexpr
int max_digits10 = 0;
212 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
215 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
false;
220 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
false;
224 static _GLIBCXX_USE_CONSTEXPR
int radix = 0;
228 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
232 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
237 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
241 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
244 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
248 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
252 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
255 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
259 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
263 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
268 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
false;
277 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
280 static _GLIBCXX_USE_CONSTEXPR
bool traps =
false;
283 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
288 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style =
303 template<
typename _Tp>
304 struct numeric_limits :
public __numeric_limits_base
308 static _GLIBCXX_CONSTEXPR _Tp
309 min() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
312 static _GLIBCXX_CONSTEXPR _Tp
313 max() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
315 #if __cplusplus >= 201103L
319 lowest() noexcept {
return _Tp(); }
324 static _GLIBCXX_CONSTEXPR _Tp
325 epsilon() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
328 static _GLIBCXX_CONSTEXPR _Tp
329 round_error() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
332 static _GLIBCXX_CONSTEXPR _Tp
333 infinity() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
337 static _GLIBCXX_CONSTEXPR _Tp
338 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
342 static _GLIBCXX_CONSTEXPR _Tp
343 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
348 static _GLIBCXX_CONSTEXPR _Tp
349 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return _Tp(); }
352 #if __cplusplus >= 201103L
353 template<
typename _Tp>
354 struct numeric_limits<const _Tp>
355 :
public numeric_limits<_Tp> { };
357 template<
typename _Tp>
358 struct numeric_limits<volatile _Tp>
359 :
public numeric_limits<_Tp> { };
361 template<
typename _Tp>
362 struct numeric_limits<const volatile _Tp>
363 :
public numeric_limits<_Tp> { };
371 struct numeric_limits<
bool>
373 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
375 static _GLIBCXX_CONSTEXPR
bool
376 min() _GLIBCXX_USE_NOEXCEPT {
return false; }
378 static _GLIBCXX_CONSTEXPR
bool
379 max() _GLIBCXX_USE_NOEXCEPT {
return true; }
381 #if __cplusplus >= 201103L
382 static constexpr
bool
383 lowest() noexcept {
return min(); }
385 static _GLIBCXX_USE_CONSTEXPR
int digits = 1;
386 static _GLIBCXX_USE_CONSTEXPR
int digits10 = 0;
387 #if __cplusplus >= 201103L
388 static constexpr
int max_digits10 = 0;
390 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
391 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
392 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
393 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
395 static _GLIBCXX_CONSTEXPR
bool
396 epsilon() _GLIBCXX_USE_NOEXCEPT {
return false; }
398 static _GLIBCXX_CONSTEXPR
bool
399 round_error() _GLIBCXX_USE_NOEXCEPT {
return false; }
401 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
402 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
403 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
404 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
406 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
407 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
408 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
409 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
411 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
413 static _GLIBCXX_CONSTEXPR
bool
414 infinity() _GLIBCXX_USE_NOEXCEPT {
return false; }
416 static _GLIBCXX_CONSTEXPR
bool
417 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return false; }
419 static _GLIBCXX_CONSTEXPR
bool
420 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return false; }
422 static _GLIBCXX_CONSTEXPR
bool
423 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return false; }
425 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
426 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
427 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
433 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
434 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
440 struct numeric_limits<char>
442 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
444 static _GLIBCXX_CONSTEXPR
char
447 static _GLIBCXX_CONSTEXPR
char
450 #if __cplusplus >= 201103L
451 static constexpr
char
452 lowest() noexcept {
return min(); }
457 #if __cplusplus >= 201103L
458 static constexpr
int max_digits10 = 0;
461 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
462 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
463 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
465 static _GLIBCXX_CONSTEXPR
char
466 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
468 static _GLIBCXX_CONSTEXPR
char
469 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
471 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
472 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
473 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
474 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
476 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
477 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
478 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
479 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
481 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
483 static _GLIBCXX_CONSTEXPR
484 char infinity() _GLIBCXX_USE_NOEXCEPT {
return char(); }
486 static _GLIBCXX_CONSTEXPR
char
487 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return char(); }
489 static _GLIBCXX_CONSTEXPR
char
490 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return char(); }
492 static _GLIBCXX_CONSTEXPR
char
493 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return static_cast<char>(0); }
495 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
496 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
497 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo = !is_signed;
500 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
501 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
507 struct numeric_limits<signed char>
509 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
511 static _GLIBCXX_CONSTEXPR
signed char
512 min() _GLIBCXX_USE_NOEXCEPT {
return -__SCHAR_MAX__ - 1; }
514 static _GLIBCXX_CONSTEXPR
signed char
515 max() _GLIBCXX_USE_NOEXCEPT {
return __SCHAR_MAX__; }
517 #if __cplusplus >= 201103L
518 static constexpr
signed char
519 lowest() noexcept {
return min(); }
523 static _GLIBCXX_USE_CONSTEXPR
int digits10
525 #if __cplusplus >= 201103L
526 static constexpr
int max_digits10 = 0;
528 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
529 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
530 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
531 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
533 static _GLIBCXX_CONSTEXPR
signed char
534 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
536 static _GLIBCXX_CONSTEXPR
signed char
537 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
539 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
540 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
541 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
542 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
544 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
545 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
546 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
547 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
549 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
551 static _GLIBCXX_CONSTEXPR
signed char
552 infinity() _GLIBCXX_USE_NOEXCEPT {
return static_cast<signed char>(0); }
554 static _GLIBCXX_CONSTEXPR
signed char
555 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return static_cast<signed char>(0); }
557 static _GLIBCXX_CONSTEXPR
signed char
558 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
559 {
return static_cast<signed char>(0); }
561 static _GLIBCXX_CONSTEXPR
signed char
562 denorm_min() _GLIBCXX_USE_NOEXCEPT
563 {
return static_cast<signed char>(0); }
565 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
566 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
567 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
570 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
571 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
577 struct numeric_limits<unsigned char>
579 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
581 static _GLIBCXX_CONSTEXPR
unsigned char
582 min() _GLIBCXX_USE_NOEXCEPT {
return 0; }
584 static _GLIBCXX_CONSTEXPR
unsigned char
585 max() _GLIBCXX_USE_NOEXCEPT {
return __SCHAR_MAX__ * 2U + 1; }
587 #if __cplusplus >= 201103L
588 static constexpr
unsigned char
589 lowest() noexcept {
return min(); }
592 static _GLIBCXX_USE_CONSTEXPR
int digits
594 static _GLIBCXX_USE_CONSTEXPR
int digits10
596 #if __cplusplus >= 201103L
597 static constexpr
int max_digits10 = 0;
599 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
600 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
601 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
602 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
604 static _GLIBCXX_CONSTEXPR
unsigned char
605 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
607 static _GLIBCXX_CONSTEXPR
unsigned char
608 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
610 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
611 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
612 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
613 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
615 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
616 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
617 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
618 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
620 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
622 static _GLIBCXX_CONSTEXPR
unsigned char
623 infinity() _GLIBCXX_USE_NOEXCEPT
624 {
return static_cast<unsigned char>(0); }
626 static _GLIBCXX_CONSTEXPR
unsigned char
627 quiet_NaN() _GLIBCXX_USE_NOEXCEPT
628 {
return static_cast<unsigned char>(0); }
630 static _GLIBCXX_CONSTEXPR
unsigned char
631 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
632 {
return static_cast<unsigned char>(0); }
634 static _GLIBCXX_CONSTEXPR
unsigned char
635 denorm_min() _GLIBCXX_USE_NOEXCEPT
636 {
return static_cast<unsigned char>(0); }
638 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
639 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
640 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
true;
643 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
644 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
652 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
654 static _GLIBCXX_CONSTEXPR
wchar_t
657 static _GLIBCXX_CONSTEXPR
wchar_t
660 #if __cplusplus >= 201103L
661 static constexpr
wchar_t
662 lowest() noexcept {
return min(); }
666 static _GLIBCXX_USE_CONSTEXPR
int digits10
668 #if __cplusplus >= 201103L
669 static constexpr
int max_digits10 = 0;
672 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
673 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
674 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
676 static _GLIBCXX_CONSTEXPR
wchar_t
677 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
679 static _GLIBCXX_CONSTEXPR
wchar_t
680 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
682 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
683 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
684 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
685 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
687 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
688 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
689 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
690 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
692 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
694 static _GLIBCXX_CONSTEXPR
wchar_t
695 infinity() _GLIBCXX_USE_NOEXCEPT {
return wchar_t(); }
697 static _GLIBCXX_CONSTEXPR
wchar_t
698 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return wchar_t(); }
700 static _GLIBCXX_CONSTEXPR
wchar_t
701 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return wchar_t(); }
703 static _GLIBCXX_CONSTEXPR
wchar_t
704 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return wchar_t(); }
706 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
707 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
708 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo = !is_signed;
711 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
712 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
716 #if __cplusplus >= 201103L
719 struct numeric_limits<char16_t>
721 static constexpr
bool is_specialized =
true;
723 static constexpr char16_t
726 static constexpr char16_t
729 static constexpr char16_t
730 lowest() noexcept {
return min(); }
734 static constexpr
int max_digits10 = 0;
736 static constexpr
bool is_integer =
true;
737 static constexpr
bool is_exact =
true;
738 static constexpr
int radix = 2;
740 static constexpr char16_t
741 epsilon() noexcept {
return 0; }
743 static constexpr char16_t
744 round_error() noexcept {
return 0; }
746 static constexpr
int min_exponent = 0;
747 static constexpr
int min_exponent10 = 0;
748 static constexpr
int max_exponent = 0;
749 static constexpr
int max_exponent10 = 0;
751 static constexpr
bool has_infinity =
false;
752 static constexpr
bool has_quiet_NaN =
false;
753 static constexpr
bool has_signaling_NaN =
false;
754 static constexpr float_denorm_style has_denorm = denorm_absent;
755 static constexpr
bool has_denorm_loss =
false;
757 static constexpr char16_t
758 infinity() noexcept {
return char16_t(); }
760 static constexpr char16_t
761 quiet_NaN() noexcept {
return char16_t(); }
763 static constexpr char16_t
764 signaling_NaN() noexcept {
return char16_t(); }
766 static constexpr char16_t
767 denorm_min() noexcept {
return char16_t(); }
769 static constexpr
bool is_iec559 =
false;
770 static constexpr
bool is_bounded =
true;
771 static constexpr
bool is_modulo = !is_signed;
774 static constexpr
bool tinyness_before =
false;
775 static constexpr float_round_style round_style = round_toward_zero;
780 struct numeric_limits<char32_t>
782 static constexpr
bool is_specialized =
true;
784 static constexpr char32_t
787 static constexpr char32_t
790 static constexpr char32_t
791 lowest() noexcept {
return min(); }
795 static constexpr
int max_digits10 = 0;
797 static constexpr
bool is_integer =
true;
798 static constexpr
bool is_exact =
true;
799 static constexpr
int radix = 2;
801 static constexpr char32_t
802 epsilon() noexcept {
return 0; }
804 static constexpr char32_t
805 round_error() noexcept {
return 0; }
807 static constexpr
int min_exponent = 0;
808 static constexpr
int min_exponent10 = 0;
809 static constexpr
int max_exponent = 0;
810 static constexpr
int max_exponent10 = 0;
812 static constexpr
bool has_infinity =
false;
813 static constexpr
bool has_quiet_NaN =
false;
814 static constexpr
bool has_signaling_NaN =
false;
815 static constexpr float_denorm_style has_denorm = denorm_absent;
816 static constexpr
bool has_denorm_loss =
false;
818 static constexpr char32_t
819 infinity() noexcept {
return char32_t(); }
821 static constexpr char32_t
822 quiet_NaN() noexcept {
return char32_t(); }
824 static constexpr char32_t
825 signaling_NaN() noexcept {
return char32_t(); }
827 static constexpr char32_t
828 denorm_min() noexcept {
return char32_t(); }
830 static constexpr
bool is_iec559 =
false;
831 static constexpr
bool is_bounded =
true;
832 static constexpr
bool is_modulo = !is_signed;
835 static constexpr
bool tinyness_before =
false;
836 static constexpr float_round_style round_style = round_toward_zero;
842 struct numeric_limits<short>
844 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
846 static _GLIBCXX_CONSTEXPR
short
847 min() _GLIBCXX_USE_NOEXCEPT {
return -__SHRT_MAX__ - 1; }
849 static _GLIBCXX_CONSTEXPR
short
850 max() _GLIBCXX_USE_NOEXCEPT {
return __SHRT_MAX__; }
852 #if __cplusplus >= 201103L
853 static constexpr
short
854 lowest() noexcept {
return min(); }
859 #if __cplusplus >= 201103L
860 static constexpr
int max_digits10 = 0;
862 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
863 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
864 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
865 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
867 static _GLIBCXX_CONSTEXPR
short
868 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
870 static _GLIBCXX_CONSTEXPR
short
871 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
873 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
874 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
875 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
876 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
878 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
879 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
880 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
881 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
883 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
885 static _GLIBCXX_CONSTEXPR
short
886 infinity() _GLIBCXX_USE_NOEXCEPT {
return short(); }
888 static _GLIBCXX_CONSTEXPR
short
889 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return short(); }
891 static _GLIBCXX_CONSTEXPR
short
892 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return short(); }
894 static _GLIBCXX_CONSTEXPR
short
895 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return short(); }
897 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
898 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
899 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
902 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
903 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
909 struct numeric_limits<unsigned short>
911 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
913 static _GLIBCXX_CONSTEXPR
unsigned short
914 min() _GLIBCXX_USE_NOEXCEPT {
return 0; }
916 static _GLIBCXX_CONSTEXPR
unsigned short
917 max() _GLIBCXX_USE_NOEXCEPT {
return __SHRT_MAX__ * 2U + 1; }
919 #if __cplusplus >= 201103L
920 static constexpr
unsigned short
921 lowest() noexcept {
return min(); }
924 static _GLIBCXX_USE_CONSTEXPR
int digits
926 static _GLIBCXX_USE_CONSTEXPR
int digits10
928 #if __cplusplus >= 201103L
929 static constexpr
int max_digits10 = 0;
931 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
932 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
933 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
934 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
936 static _GLIBCXX_CONSTEXPR
unsigned short
937 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
939 static _GLIBCXX_CONSTEXPR
unsigned short
940 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
942 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
943 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
944 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
945 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
947 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
948 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
949 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
950 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
952 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
954 static _GLIBCXX_CONSTEXPR
unsigned short
955 infinity() _GLIBCXX_USE_NOEXCEPT
956 {
return static_cast<unsigned short>(0); }
958 static _GLIBCXX_CONSTEXPR
unsigned short
959 quiet_NaN() _GLIBCXX_USE_NOEXCEPT
960 {
return static_cast<unsigned short>(0); }
962 static _GLIBCXX_CONSTEXPR
unsigned short
963 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
964 {
return static_cast<unsigned short>(0); }
966 static _GLIBCXX_CONSTEXPR
unsigned short
967 denorm_min() _GLIBCXX_USE_NOEXCEPT
968 {
return static_cast<unsigned short>(0); }
970 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
971 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
972 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
true;
975 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
976 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
982 struct numeric_limits<int>
984 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
986 static _GLIBCXX_CONSTEXPR
int
987 min() _GLIBCXX_USE_NOEXCEPT {
return -__INT_MAX__ - 1; }
989 static _GLIBCXX_CONSTEXPR
int
990 max() _GLIBCXX_USE_NOEXCEPT {
return __INT_MAX__; }
992 #if __cplusplus >= 201103L
994 lowest() noexcept {
return min(); }
999 #if __cplusplus >= 201103L
1000 static constexpr
int max_digits10 = 0;
1002 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
1003 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1004 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1005 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1007 static _GLIBCXX_CONSTEXPR
int
1008 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1010 static _GLIBCXX_CONSTEXPR
int
1011 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1013 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1014 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1015 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1016 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1018 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1019 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1020 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1021 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1023 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1025 static _GLIBCXX_CONSTEXPR
int
1026 infinity() _GLIBCXX_USE_NOEXCEPT {
return static_cast<int>(0); }
1028 static _GLIBCXX_CONSTEXPR
int
1029 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return static_cast<int>(0); }
1031 static _GLIBCXX_CONSTEXPR
int
1032 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return static_cast<int>(0); }
1034 static _GLIBCXX_CONSTEXPR
int
1035 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return static_cast<int>(0); }
1037 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1038 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1039 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
1042 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1043 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1044 = round_toward_zero;
1049 struct numeric_limits<unsigned int>
1051 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1053 static _GLIBCXX_CONSTEXPR
unsigned int
1054 min() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1056 static _GLIBCXX_CONSTEXPR
unsigned int
1057 max() _GLIBCXX_USE_NOEXCEPT {
return __INT_MAX__ * 2U + 1; }
1059 #if __cplusplus >= 201103L
1060 static constexpr
unsigned int
1061 lowest() noexcept {
return min(); }
1064 static _GLIBCXX_USE_CONSTEXPR
int digits
1066 static _GLIBCXX_USE_CONSTEXPR
int digits10
1068 #if __cplusplus >= 201103L
1069 static constexpr
int max_digits10 = 0;
1071 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
1072 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1073 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1074 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1076 static _GLIBCXX_CONSTEXPR
unsigned int
1077 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1079 static _GLIBCXX_CONSTEXPR
unsigned int
1080 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1082 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1083 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1084 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1085 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1087 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1088 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1089 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1090 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1092 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1094 static _GLIBCXX_CONSTEXPR
unsigned int
1095 infinity() _GLIBCXX_USE_NOEXCEPT {
return static_cast<unsigned int>(0); }
1097 static _GLIBCXX_CONSTEXPR
unsigned int
1098 quiet_NaN() _GLIBCXX_USE_NOEXCEPT
1099 {
return static_cast<unsigned int>(0); }
1101 static _GLIBCXX_CONSTEXPR
unsigned int
1102 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
1103 {
return static_cast<unsigned int>(0); }
1105 static _GLIBCXX_CONSTEXPR
unsigned int
1106 denorm_min() _GLIBCXX_USE_NOEXCEPT
1107 {
return static_cast<unsigned int>(0); }
1109 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1110 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1111 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
true;
1114 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1115 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1116 = round_toward_zero;
1121 struct numeric_limits<long>
1123 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1125 static _GLIBCXX_CONSTEXPR
long
1126 min() _GLIBCXX_USE_NOEXCEPT {
return -__LONG_MAX__ - 1; }
1128 static _GLIBCXX_CONSTEXPR
long
1129 max() _GLIBCXX_USE_NOEXCEPT {
return __LONG_MAX__; }
1131 #if __cplusplus >= 201103L
1132 static constexpr
long
1133 lowest() noexcept {
return min(); }
1138 #if __cplusplus >= 201103L
1139 static constexpr
int max_digits10 = 0;
1141 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
1142 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1143 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1144 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1146 static _GLIBCXX_CONSTEXPR
long
1147 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1149 static _GLIBCXX_CONSTEXPR
long
1150 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1152 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1153 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1154 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1155 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1157 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1158 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1159 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1160 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1162 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1164 static _GLIBCXX_CONSTEXPR
long
1165 infinity() _GLIBCXX_USE_NOEXCEPT {
return static_cast<long>(0); }
1167 static _GLIBCXX_CONSTEXPR
long
1168 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return static_cast<long>(0); }
1170 static _GLIBCXX_CONSTEXPR
long
1171 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return static_cast<long>(0); }
1173 static _GLIBCXX_CONSTEXPR
long
1174 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return static_cast<long>(0); }
1176 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1177 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1178 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
1181 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1182 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1183 = round_toward_zero;
1188 struct numeric_limits<unsigned long>
1190 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1192 static _GLIBCXX_CONSTEXPR
unsigned long
1193 min() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1195 static _GLIBCXX_CONSTEXPR
unsigned long
1196 max() _GLIBCXX_USE_NOEXCEPT {
return __LONG_MAX__ * 2UL + 1; }
1198 #if __cplusplus >= 201103L
1199 static constexpr
unsigned long
1200 lowest() noexcept {
return min(); }
1203 static _GLIBCXX_USE_CONSTEXPR
int digits
1205 static _GLIBCXX_USE_CONSTEXPR
int digits10
1207 #if __cplusplus >= 201103L
1208 static constexpr
int max_digits10 = 0;
1210 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
1211 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1212 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1213 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1215 static _GLIBCXX_CONSTEXPR
unsigned long
1216 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1218 static _GLIBCXX_CONSTEXPR
unsigned long
1219 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1221 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1222 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1223 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1224 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1226 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1227 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1228 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1229 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1231 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1233 static _GLIBCXX_CONSTEXPR
unsigned long
1234 infinity() _GLIBCXX_USE_NOEXCEPT
1235 {
return static_cast<unsigned long>(0); }
1237 static _GLIBCXX_CONSTEXPR
unsigned long
1238 quiet_NaN() _GLIBCXX_USE_NOEXCEPT
1239 {
return static_cast<unsigned long>(0); }
1241 static _GLIBCXX_CONSTEXPR
unsigned long
1242 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
1243 {
return static_cast<unsigned long>(0); }
1245 static _GLIBCXX_CONSTEXPR
unsigned long
1246 denorm_min() _GLIBCXX_USE_NOEXCEPT
1247 {
return static_cast<unsigned long>(0); }
1249 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1250 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1251 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
true;
1254 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1255 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1256 = round_toward_zero;
1261 struct numeric_limits<long long>
1263 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1265 static _GLIBCXX_CONSTEXPR
long long
1266 min() _GLIBCXX_USE_NOEXCEPT {
return -__LONG_LONG_MAX__ - 1; }
1268 static _GLIBCXX_CONSTEXPR
long long
1269 max() _GLIBCXX_USE_NOEXCEPT {
return __LONG_LONG_MAX__; }
1271 #if __cplusplus >= 201103L
1272 static constexpr
long long
1273 lowest() noexcept {
return min(); }
1276 static _GLIBCXX_USE_CONSTEXPR
int digits
1278 static _GLIBCXX_USE_CONSTEXPR
int digits10
1280 #if __cplusplus >= 201103L
1281 static constexpr
int max_digits10 = 0;
1283 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
1284 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1285 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1286 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1288 static _GLIBCXX_CONSTEXPR
long long
1289 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1291 static _GLIBCXX_CONSTEXPR
long long
1292 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1294 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1295 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1296 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1297 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1299 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1300 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1301 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1302 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1304 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1306 static _GLIBCXX_CONSTEXPR
long long
1307 infinity() _GLIBCXX_USE_NOEXCEPT {
return static_cast<long long>(0); }
1309 static _GLIBCXX_CONSTEXPR
long long
1310 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return static_cast<long long>(0); }
1312 static _GLIBCXX_CONSTEXPR
long long
1313 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
1314 {
return static_cast<long long>(0); }
1316 static _GLIBCXX_CONSTEXPR
long long
1317 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return static_cast<long long>(0); }
1319 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1320 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1321 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
1324 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1325 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1326 = round_toward_zero;
1331 struct numeric_limits<unsigned long long>
1333 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1335 static _GLIBCXX_CONSTEXPR
unsigned long long
1336 min() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1338 static _GLIBCXX_CONSTEXPR
unsigned long long
1339 max() _GLIBCXX_USE_NOEXCEPT {
return __LONG_LONG_MAX__ * 2ULL + 1; }
1341 #if __cplusplus >= 201103L
1342 static constexpr
unsigned long long
1343 lowest() noexcept {
return min(); }
1346 static _GLIBCXX_USE_CONSTEXPR
int digits
1348 static _GLIBCXX_USE_CONSTEXPR
int digits10
1350 #if __cplusplus >= 201103L
1351 static constexpr
int max_digits10 = 0;
1353 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
1354 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1355 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1356 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1358 static _GLIBCXX_CONSTEXPR
unsigned long long
1359 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1361 static _GLIBCXX_CONSTEXPR
unsigned long long
1362 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1364 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1365 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1366 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1367 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1369 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1370 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1371 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1372 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1374 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1376 static _GLIBCXX_CONSTEXPR
unsigned long long
1377 infinity() _GLIBCXX_USE_NOEXCEPT
1378 {
return static_cast<unsigned long long>(0); }
1380 static _GLIBCXX_CONSTEXPR
unsigned long long
1381 quiet_NaN() _GLIBCXX_USE_NOEXCEPT
1382 {
return static_cast<unsigned long long>(0); }
1384 static _GLIBCXX_CONSTEXPR
unsigned long long
1385 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
1386 {
return static_cast<unsigned long long>(0); }
1388 static _GLIBCXX_CONSTEXPR
unsigned long long
1389 denorm_min() _GLIBCXX_USE_NOEXCEPT
1390 {
return static_cast<unsigned long long>(0); }
1392 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1393 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1394 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
true;
1397 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1398 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1399 = round_toward_zero;
1402 #if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_INT128)
1405 struct numeric_limits<__int128>
1407 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1409 static _GLIBCXX_CONSTEXPR __int128
1412 static _GLIBCXX_CONSTEXPR __int128
1415 #if __cplusplus >= 201103L
1416 static constexpr __int128
1417 lowest() noexcept {
return min(); }
1420 static _GLIBCXX_USE_CONSTEXPR
int digits
1422 static _GLIBCXX_USE_CONSTEXPR
int digits10
1424 #if __cplusplus >= 201103L
1425 static constexpr
int max_digits10 = 0;
1427 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
1428 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1429 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1430 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1432 static _GLIBCXX_CONSTEXPR __int128
1433 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1435 static _GLIBCXX_CONSTEXPR __int128
1436 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1438 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1439 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1440 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1441 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1443 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1444 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1445 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1446 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1448 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1450 static _GLIBCXX_CONSTEXPR __int128
1451 infinity() _GLIBCXX_USE_NOEXCEPT
1452 {
return static_cast<__int128
>(0); }
1454 static _GLIBCXX_CONSTEXPR __int128
1455 quiet_NaN() _GLIBCXX_USE_NOEXCEPT
1456 {
return static_cast<__int128
>(0); }
1458 static _GLIBCXX_CONSTEXPR __int128
1459 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
1460 {
return static_cast<__int128
>(0); }
1462 static _GLIBCXX_CONSTEXPR __int128
1463 denorm_min() _GLIBCXX_USE_NOEXCEPT
1464 {
return static_cast<__int128
>(0); }
1466 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1467 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1468 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
1470 static _GLIBCXX_USE_CONSTEXPR
bool traps
1472 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1473 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1474 = round_toward_zero;
1479 struct numeric_limits<unsigned __int128>
1481 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1483 static _GLIBCXX_CONSTEXPR
unsigned __int128
1484 min() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1486 static _GLIBCXX_CONSTEXPR
unsigned __int128
1489 #if __cplusplus >= 201103L
1490 static constexpr
unsigned __int128
1491 lowest() noexcept {
return min(); }
1494 static _GLIBCXX_USE_CONSTEXPR
int digits
1496 static _GLIBCXX_USE_CONSTEXPR
int digits10
1498 #if __cplusplus >= 201103L
1499 static constexpr
int max_digits10 = 0;
1501 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
false;
1502 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
true;
1503 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
true;
1504 static _GLIBCXX_USE_CONSTEXPR
int radix = 2;
1506 static _GLIBCXX_CONSTEXPR
unsigned __int128
1507 epsilon() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1509 static _GLIBCXX_CONSTEXPR
unsigned __int128
1510 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0; }
1512 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = 0;
1513 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = 0;
1514 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = 0;
1515 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = 0;
1517 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity =
false;
1518 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN =
false;
1519 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN =
false;
1520 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1522 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss =
false;
1524 static _GLIBCXX_CONSTEXPR
unsigned __int128
1525 infinity() _GLIBCXX_USE_NOEXCEPT
1526 {
return static_cast<unsigned __int128
>(0); }
1528 static _GLIBCXX_CONSTEXPR
unsigned __int128
1529 quiet_NaN() _GLIBCXX_USE_NOEXCEPT
1530 {
return static_cast<unsigned __int128
>(0); }
1532 static _GLIBCXX_CONSTEXPR
unsigned __int128
1533 signaling_NaN() _GLIBCXX_USE_NOEXCEPT
1534 {
return static_cast<unsigned __int128
>(0); }
1536 static _GLIBCXX_CONSTEXPR
unsigned __int128
1537 denorm_min() _GLIBCXX_USE_NOEXCEPT
1538 {
return static_cast<unsigned __int128
>(0); }
1540 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559 =
false;
1541 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1542 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
true;
1545 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
false;
1546 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1547 = round_toward_zero;
1553 struct numeric_limits<float>
1555 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1557 static _GLIBCXX_CONSTEXPR
float
1558 min() _GLIBCXX_USE_NOEXCEPT {
return __FLT_MIN__; }
1560 static _GLIBCXX_CONSTEXPR
float
1561 max() _GLIBCXX_USE_NOEXCEPT {
return __FLT_MAX__; }
1563 #if __cplusplus >= 201103L
1564 static constexpr
float
1565 lowest() noexcept {
return -__FLT_MAX__; }
1568 static _GLIBCXX_USE_CONSTEXPR
int digits = __FLT_MANT_DIG__;
1569 static _GLIBCXX_USE_CONSTEXPR
int digits10 = __FLT_DIG__;
1570 #if __cplusplus >= 201103L
1571 static constexpr
int max_digits10
1574 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
1575 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
false;
1576 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
false;
1577 static _GLIBCXX_USE_CONSTEXPR
int radix = __FLT_RADIX__;
1579 static _GLIBCXX_CONSTEXPR
float
1580 epsilon() _GLIBCXX_USE_NOEXCEPT {
return __FLT_EPSILON__; }
1582 static _GLIBCXX_CONSTEXPR
float
1583 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0.5F; }
1585 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = __FLT_MIN_EXP__;
1586 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = __FLT_MIN_10_EXP__;
1587 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = __FLT_MAX_EXP__;
1588 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = __FLT_MAX_10_EXP__;
1590 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity = __FLT_HAS_INFINITY__;
1591 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN = __FLT_HAS_QUIET_NAN__;
1592 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN = has_quiet_NaN;
1593 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1594 =
bool(__FLT_HAS_DENORM__) ? denorm_present : denorm_absent;
1595 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss
1598 static _GLIBCXX_CONSTEXPR
float
1599 infinity() _GLIBCXX_USE_NOEXCEPT {
return __builtin_huge_valf(); }
1601 static _GLIBCXX_CONSTEXPR
float
1602 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return __builtin_nanf(
""); }
1604 static _GLIBCXX_CONSTEXPR
float
1605 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return __builtin_nansf(
""); }
1607 static _GLIBCXX_CONSTEXPR
float
1608 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return __FLT_DENORM_MIN__; }
1610 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559
1611 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
1612 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1613 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
1616 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before
1618 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1622 #undef __glibcxx_float_has_denorm_loss
1623 #undef __glibcxx_float_traps
1624 #undef __glibcxx_float_tinyness_before
1628 struct numeric_limits<double>
1630 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1632 static _GLIBCXX_CONSTEXPR
double
1633 min() _GLIBCXX_USE_NOEXCEPT {
return __DBL_MIN__; }
1635 static _GLIBCXX_CONSTEXPR
double
1636 max() _GLIBCXX_USE_NOEXCEPT {
return __DBL_MAX__; }
1638 #if __cplusplus >= 201103L
1639 static constexpr
double
1640 lowest() noexcept {
return -__DBL_MAX__; }
1643 static _GLIBCXX_USE_CONSTEXPR
int digits = __DBL_MANT_DIG__;
1644 static _GLIBCXX_USE_CONSTEXPR
int digits10 = __DBL_DIG__;
1645 #if __cplusplus >= 201103L
1646 static constexpr
int max_digits10
1649 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
1650 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
false;
1651 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
false;
1652 static _GLIBCXX_USE_CONSTEXPR
int radix = __FLT_RADIX__;
1654 static _GLIBCXX_CONSTEXPR
double
1655 epsilon() _GLIBCXX_USE_NOEXCEPT {
return __DBL_EPSILON__; }
1657 static _GLIBCXX_CONSTEXPR
double
1658 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0.5; }
1660 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = __DBL_MIN_EXP__;
1661 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = __DBL_MIN_10_EXP__;
1662 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = __DBL_MAX_EXP__;
1663 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = __DBL_MAX_10_EXP__;
1665 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity = __DBL_HAS_INFINITY__;
1666 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN = __DBL_HAS_QUIET_NAN__;
1667 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN = has_quiet_NaN;
1668 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1669 =
bool(__DBL_HAS_DENORM__) ? denorm_present : denorm_absent;
1670 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss
1673 static _GLIBCXX_CONSTEXPR
double
1674 infinity() _GLIBCXX_USE_NOEXCEPT {
return __builtin_huge_val(); }
1676 static _GLIBCXX_CONSTEXPR
double
1677 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return __builtin_nan(
""); }
1679 static _GLIBCXX_CONSTEXPR
double
1680 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return __builtin_nans(
""); }
1682 static _GLIBCXX_CONSTEXPR
double
1683 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return __DBL_DENORM_MIN__; }
1685 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559
1686 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
1687 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1688 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
1691 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before
1693 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
1697 #undef __glibcxx_double_has_denorm_loss
1698 #undef __glibcxx_double_traps
1699 #undef __glibcxx_double_tinyness_before
1703 struct numeric_limits<long double>
1705 static _GLIBCXX_USE_CONSTEXPR
bool is_specialized =
true;
1707 static _GLIBCXX_CONSTEXPR
long double
1708 min() _GLIBCXX_USE_NOEXCEPT {
return __LDBL_MIN__; }
1710 static _GLIBCXX_CONSTEXPR
long double
1711 max() _GLIBCXX_USE_NOEXCEPT {
return __LDBL_MAX__; }
1713 #if __cplusplus >= 201103L
1714 static constexpr
long double
1715 lowest() noexcept {
return -__LDBL_MAX__; }
1718 static _GLIBCXX_USE_CONSTEXPR
int digits = __LDBL_MANT_DIG__;
1719 static _GLIBCXX_USE_CONSTEXPR
int digits10 = __LDBL_DIG__;
1720 #if __cplusplus >= 201103L
1721 static _GLIBCXX_USE_CONSTEXPR
int max_digits10
1724 static _GLIBCXX_USE_CONSTEXPR
bool is_signed =
true;
1725 static _GLIBCXX_USE_CONSTEXPR
bool is_integer =
false;
1726 static _GLIBCXX_USE_CONSTEXPR
bool is_exact =
false;
1727 static _GLIBCXX_USE_CONSTEXPR
int radix = __FLT_RADIX__;
1729 static _GLIBCXX_CONSTEXPR
long double
1730 epsilon() _GLIBCXX_USE_NOEXCEPT {
return __LDBL_EPSILON__; }
1732 static _GLIBCXX_CONSTEXPR
long double
1733 round_error() _GLIBCXX_USE_NOEXCEPT {
return 0.5L; }
1735 static _GLIBCXX_USE_CONSTEXPR
int min_exponent = __LDBL_MIN_EXP__;
1736 static _GLIBCXX_USE_CONSTEXPR
int min_exponent10 = __LDBL_MIN_10_EXP__;
1737 static _GLIBCXX_USE_CONSTEXPR
int max_exponent = __LDBL_MAX_EXP__;
1738 static _GLIBCXX_USE_CONSTEXPR
int max_exponent10 = __LDBL_MAX_10_EXP__;
1740 static _GLIBCXX_USE_CONSTEXPR
bool has_infinity = __LDBL_HAS_INFINITY__;
1741 static _GLIBCXX_USE_CONSTEXPR
bool has_quiet_NaN = __LDBL_HAS_QUIET_NAN__;
1742 static _GLIBCXX_USE_CONSTEXPR
bool has_signaling_NaN = has_quiet_NaN;
1743 static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
1744 =
bool(__LDBL_HAS_DENORM__) ? denorm_present : denorm_absent;
1745 static _GLIBCXX_USE_CONSTEXPR
bool has_denorm_loss
1748 static _GLIBCXX_CONSTEXPR
long double
1749 infinity() _GLIBCXX_USE_NOEXCEPT {
return __builtin_huge_vall(); }
1751 static _GLIBCXX_CONSTEXPR
long double
1752 quiet_NaN() _GLIBCXX_USE_NOEXCEPT {
return __builtin_nanl(
""); }
1754 static _GLIBCXX_CONSTEXPR
long double
1755 signaling_NaN() _GLIBCXX_USE_NOEXCEPT {
return __builtin_nansl(
""); }
1757 static _GLIBCXX_CONSTEXPR
long double
1758 denorm_min() _GLIBCXX_USE_NOEXCEPT {
return __LDBL_DENORM_MIN__; }
1760 static _GLIBCXX_USE_CONSTEXPR
bool is_iec559
1761 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
1762 static _GLIBCXX_USE_CONSTEXPR
bool is_bounded =
true;
1763 static _GLIBCXX_USE_CONSTEXPR
bool is_modulo =
false;
1766 static _GLIBCXX_USE_CONSTEXPR
bool tinyness_before =
1768 static _GLIBCXX_USE_CONSTEXPR float_round_style round_style =
1772 #undef __glibcxx_long_double_has_denorm_loss
1773 #undef __glibcxx_long_double_traps
1774 #undef __glibcxx_long_double_tinyness_before
1776 _GLIBCXX_END_NAMESPACE_VERSION
#define __glibcxx_max_digits10(T)
Definition: limits:144
#define __glibcxx_digits10(T)
Definition: limits:141
#define __glibcxx_float_traps
Definition: limits:92
#define __glibcxx_double_traps
Definition: limits:106
#define bool
Definition: stdbool.h:33
#define __glibcxx_double_has_denorm_loss
Definition: limits:103
#define __glibcxx_long_double_traps
Definition: limits:120
const _Tp & min(const _Tp &__a, const _Tp &__b)
Equivalent to std::min.
Definition: base.h:144
#define __glibcxx_long_double_has_denorm_loss
Definition: limits:117
#define __glibcxx_long_double_tinyness_before
Definition: limits:123
#define __glibcxx_max(T)
Definition: limits:133
#define __glibcxx_float_tinyness_before
Definition: limits:95
const _Tp & max(const _Tp &__a, const _Tp &__b)
Equivalent to std::max.
Definition: base.h:150
__WCHAR_TYPE__ wchar_t
Definition: stddef.h:324
#define __glibcxx_signed(T)
Definition: limits:128
#define __glibcxx_min(T)
Definition: limits:130
#define __glibcxx_digits(T)
Definition: limits:137
#define __glibcxx_integral_traps
Definition: limits:80
#define __glibcxx_double_tinyness_before
Definition: limits:109
#define __glibcxx_float_has_denorm_loss
Definition: limits:89