1 // Numerical limits for C++
10 // Rounding style for floating point numbers
11 enum float_round_style {
12 round_indeterminate = -1,
13 round_toward_zero = 0,
15 round_toward_infinity = 2,
16 round_toward_neg_infinity = 3
19 // How to represent denormalized values
20 enum float_denorm_style {
21 denorm_indeterminate = -1,
26 template<class Type> class numeric_limits
29 // Not specialized by default
30 static const bool is_specialized = false;
33 static const bool is_bounded = false;
34 static Type lowest() throw();
35 static Type max( ) throw( );
36 static Type min( ) throw( );
39 static const bool has_infinity = false;
40 static Type infinity( ) throw( );
43 static const float_denorm_style has_denorm = denorm_absent;
44 static const bool has_denorm_loss = false;
45 static Type denorm_min( ) throw( );
48 static const int digits = 0;
49 static const int digits10 = 0;
52 static const bool has_quiet_NaN = false;
53 static const bool has_signaling_NaN = false;
54 static Type quiet_NaN( ) throw( );
55 static Type signaling_NaN( ) throw( );
58 static const bool is_exact = false;
59 static const bool is_iec559 = false;
60 static const bool is_integer = false;
61 static const bool is_modulo = false;
62 static const bool is_signed = false;
65 static Type epsilon( ) throw( );
66 static const int max_digits10 = 0;
67 static const int radix = 0;
68 static const bool traps = false;
71 static const int max_exponent = 0;
72 static const int max_exponent10 = 0;
73 static const int min_exponent = 0;
74 static const int min_exponent10 = 0;
77 static Type round_error( ) throw( );
78 static const float_round_style round_style = round_toward_zero;
79 static const bool tinyness_before = false;
82 template<> class numeric_limits<wchar_t>
84 static const bool is_specialized = true;
87 static const bool is_bounded = true;
88 static wchar_t lowest() throw()
90 static wchar_t max( ) throw()
92 static wchar_t min( ) throw()
96 static const bool has_infinity = false;
97 static wchar_t infinity( ) throw()
101 static const float_denorm_style has_denorm = denorm_absent;
102 static const bool has_denorm_loss = false;
103 static wchar_t denorm_min( ) throw()
107 static const bool is_signed = WCHAR_MIN != 0;
108 static const int digits = sizeof(wchar_t) * CHAR_BIT - (is_signed ? 1 : 0);
109 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
110 static const int digits10 = digits * 643 / 2136;
113 static wchar_t quiet_NaN( ) throw()
115 static wchar_t signaling_NaN( ) throw()
120 static const bool is_exact = true;
121 static const bool is_iec559 = false;
122 static const bool is_integer = true;
123 static const bool is_modulo = true;
126 static wchar_t epsilon( ) throw()
128 static const int max_digits10 = 0;
129 static const int radix = 2;
130 static const bool traps = false;
133 static const int max_exponent = 0;
134 static const int max_exponent10 = 0;
135 static const int min_exponent = 0;
136 static const int min_exponent10 = 0;
139 static wchar_t round_error( ) throw( )
141 static const float_round_style round_style = round_toward_zero;
142 static const bool tinyness_before = false;
145 template<> class numeric_limits<bool>
148 static const bool is_specialized = true;
151 static const bool is_bounded = true;
152 static bool lowest() throw()
154 static bool max( ) throw( )
156 static bool min( ) throw( )
160 static const bool has_infinity = false;
161 static bool infinity( ) throw( )
165 static const float_denorm_style has_denorm = denorm_absent;
166 static const bool has_denorm_loss = false;
167 static bool denorm_min( ) throw( )
171 static const int digits = 1;
172 static const int digits10 = 0;
175 static const bool has_quiet_NaN = false;
176 static const bool has_signaling_NaN = false;
177 static bool quiet_NaN( ) throw( )
179 static bool signaling_NaN( ) throw( )
183 static const bool is_exact = true;
184 static const bool is_iec559 = false;
185 static const bool is_integer = true;
186 static const bool is_modulo = false;
187 static const bool is_signed = false;
190 static bool epsilon( ) throw( )
192 static const int max_digits10 = 0;
193 static const int radix = 2;
194 static const bool traps = false;
197 static const int max_exponent = 0;
198 static const int max_exponent10 = 0;
199 static const int min_exponent = 0;
200 static const int min_exponent10 = 0;
203 static bool round_error( ) throw( )
205 static const float_round_style round_style = round_toward_zero;
206 static const bool tinyness_before = false;
209 template<> class numeric_limits<char>
212 static const bool is_specialized = true;
215 static const bool is_bounded = true;
216 static char lowest() throw()
218 static char max( ) throw( )
220 static char min( ) throw( )
224 static const bool has_infinity = false;
225 static char infinity( ) throw( )
229 static const float_denorm_style has_denorm = denorm_absent;
230 static const bool has_denorm_loss = false;
231 static char denorm_min( ) throw( )
235 static const bool is_signed = CHAR_MIN != 0;
236 static const int digits = sizeof(char) * CHAR_BIT - (is_signed ? 1 : 0);
237 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
238 static const int digits10 = digits * 643 / 2136;
241 static const bool has_quiet_NaN = false;
242 static const bool has_signaling_NaN = false;
243 static char quiet_NaN( ) throw( )
245 static char signaling_NaN( ) throw( )
249 static const bool is_exact = true;
250 static const bool is_iec559 = false;
251 static const bool is_integer = true;
252 static const bool is_modulo = true;
255 static char epsilon( ) throw( )
257 static const int max_digits10 = 0;
258 static const int radix = 2;
259 static const bool traps = false;
262 static const int max_exponent = 0;
263 static const int max_exponent10 = 0;
264 static const int min_exponent = 0;
265 static const int min_exponent10 = 0;
268 static char round_error( ) throw( )
270 static const float_round_style round_style = round_toward_zero;
271 static const bool tinyness_before = false;
274 template<> class numeric_limits<signed char>
277 static const bool is_specialized = true;
280 static const bool is_bounded = true;
281 static signed char lowest() throw()
283 static signed char max( ) throw( )
285 static signed char min( ) throw( )
289 static const bool has_infinity = false;
290 static signed char infinity( ) throw( )
294 static const float_denorm_style has_denorm = denorm_absent;
295 static const bool has_denorm_loss = false;
296 static signed char denorm_min( ) throw( )
300 static const int digits = sizeof(signed char) * CHAR_BIT - 1;
301 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
302 static const int digits10 = digits * 643 / 2136;
305 static const bool has_quiet_NaN = false;
306 static const bool has_signaling_NaN = false;
307 static signed char quiet_NaN( ) throw( )
309 static signed char signaling_NaN( ) throw( )
313 static const bool is_exact = true;
314 static const bool is_iec559 = false;
315 static const bool is_integer = true;
316 static const bool is_modulo = true;
317 static const bool is_signed = true;
320 static signed char epsilon( ) throw( )
322 static const int max_digits10 = 0;
323 static const int radix = 2;
324 static const bool traps = false;
327 static const int max_exponent = 0;
328 static const int max_exponent10 = 0;
329 static const int min_exponent = 0;
330 static const int min_exponent10 = 0;
333 static signed char round_error( ) throw( )
335 static const float_round_style round_style = round_toward_zero;
336 static const bool tinyness_before = false;
339 template<> class numeric_limits<unsigned char>
342 static const bool is_specialized = true;
345 static const bool is_bounded = true;
346 static unsigned char lowest() throw()
348 static unsigned char max( ) throw( )
350 static unsigned char min( ) throw( )
354 static const bool has_infinity = false;
355 static unsigned char infinity( ) throw( )
359 static const float_denorm_style has_denorm = denorm_absent;
360 static const bool has_denorm_loss = false;
361 static unsigned char denorm_min( ) throw( )
365 static const int digits = sizeof(unsigned char) * CHAR_BIT;
366 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
367 static const int digits10 = digits * 643 / 2136;
370 static const bool has_quiet_NaN = false;
371 static const bool has_signaling_NaN = false;
372 static unsigned char quiet_NaN( ) throw( )
374 static unsigned char signaling_NaN( ) throw( )
378 static const bool is_exact = true;
379 static const bool is_iec559 = false;
380 static const bool is_integer = true;
381 static const bool is_modulo = true;
382 static const bool is_signed = false;
385 static unsigned char epsilon( ) throw( )
387 static const int max_digits10 = 0;
388 static const int radix = 2;
389 static const bool traps = false;
392 static const int max_exponent = 0;
393 static const int max_exponent10 = 0;
394 static const int min_exponent = 0;
395 static const int min_exponent10 = 0;
398 static unsigned char round_error( ) throw( )
400 static const float_round_style round_style = round_toward_zero;
401 static const bool tinyness_before = false;
404 template<> class numeric_limits<short>
407 static const bool is_specialized = true;
410 static const bool is_bounded = true;
411 static short lowest() throw()
413 static short max( ) throw( )
415 static short min( ) throw( )
419 static const bool has_infinity = false;
420 static short infinity( ) throw( )
424 static const float_denorm_style has_denorm = denorm_absent;
425 static const bool has_denorm_loss = false;
426 static short denorm_min( ) throw( )
430 static const bool is_signed = SHRT_MIN != 0;
431 static const int digits = sizeof(short) * CHAR_BIT - (is_signed ? 1 : 0);
432 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
433 static const int digits10 = digits * 643 / 2136;
436 static const bool has_quiet_NaN = false;
437 static const bool has_signaling_NaN = false;
438 static short quiet_NaN( ) throw( )
440 static short signaling_NaN( ) throw( )
444 static const bool is_exact = true;
445 static const bool is_iec559 = false;
446 static const bool is_integer = true;
447 static const bool is_modulo = true;
450 static short epsilon( ) throw( )
452 static const int max_digits10 = 0;
453 static const int radix = 2;
454 static const bool traps = false;
457 static const int max_exponent = 0;
458 static const int max_exponent10 = 0;
459 static const int min_exponent = 0;
460 static const int min_exponent10 = 0;
463 static short round_error( ) throw( )
465 static const float_round_style round_style = round_toward_zero;
466 static const bool tinyness_before = false;
469 template<> class numeric_limits<unsigned short>
472 static const bool is_specialized = true;
475 static const bool is_bounded = true;
476 static unsigned short lowest() throw()
478 static unsigned short max( ) throw( )
480 static unsigned short min( ) throw( )
484 static const bool has_infinity = false;
485 static unsigned short infinity( ) throw( )
489 static const float_denorm_style has_denorm = denorm_absent;
490 static const bool has_denorm_loss = false;
491 static unsigned short denorm_min( ) throw( )
495 static const int digits = sizeof(unsigned short) * CHAR_BIT;
496 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
497 static const int digits10 = digits * 643 / 2136;
500 static const bool has_quiet_NaN = false;
501 static const bool has_signaling_NaN = false;
502 static unsigned short quiet_NaN( ) throw( )
504 static unsigned short signaling_NaN( ) throw( )
508 static const bool is_exact = true;
509 static const bool is_iec559 = false;
510 static const bool is_integer = true;
511 static const bool is_modulo = true;
512 static const bool is_signed = false;
515 static unsigned short epsilon( ) throw( )
517 static const int max_digits10 = 0;
518 static const int radix = 2;
519 static const bool traps = false;
522 static const int max_exponent = 0;
523 static const int max_exponent10 = 0;
524 static const int min_exponent = 0;
525 static const int min_exponent10 = 0;
528 static unsigned short round_error( ) throw( )
530 static const float_round_style round_style = round_toward_zero;
531 static const bool tinyness_before = false;
534 template<> class numeric_limits<int>
537 static const bool is_specialized = true;
540 static const bool is_bounded = true;
541 static int lowest() throw()
543 static int max( ) throw( )
545 static int min( ) throw( )
549 static const bool has_infinity = false;
550 static int infinity( ) throw( )
554 static const float_denorm_style has_denorm = denorm_absent;
555 static const bool has_denorm_loss = false;
556 static int denorm_min( ) throw( )
560 static const bool is_signed = INT_MIN != 0;
561 static const int digits = sizeof(int) * CHAR_BIT - (is_signed ? 1 : 0);
562 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
563 static const int digits10 = digits * 643 / 2136;
566 static const bool has_quiet_NaN = false;
567 static const bool has_signaling_NaN = false;
568 static int quiet_NaN( ) throw( )
570 static int signaling_NaN( ) throw( )
574 static const bool is_exact = true;
575 static const bool is_iec559 = false;
576 static const bool is_integer = true;
577 static const bool is_modulo = true;
580 static int epsilon( ) throw( )
582 static const int max_digits10 = 0;
583 static const int radix = 2;
584 static const bool traps = false;
587 static const int max_exponent = 0;
588 static const int max_exponent10 = 0;
589 static const int min_exponent = 0;
590 static const int min_exponent10 = 0;
593 static int round_error( ) throw( )
595 static const float_round_style round_style = round_toward_zero;
596 static const bool tinyness_before = false;
599 template<> class numeric_limits<unsigned int>
602 static const bool is_specialized = true;
605 static const bool is_bounded = true;
606 static unsigned int lowest() throw()
608 static unsigned int max( ) throw( )
610 static unsigned int min( ) throw( )
614 static const bool has_infinity = false;
615 static unsigned int infinity( ) throw( )
619 static const float_denorm_style has_denorm = denorm_absent;
620 static const bool has_denorm_loss = false;
621 static unsigned int denorm_min( ) throw( )
625 static const int digits = sizeof(unsigned int) * CHAR_BIT;
626 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
627 static const int digits10 = digits * 643 / 2136;
630 static const bool has_quiet_NaN = false;
631 static const bool has_signaling_NaN = false;
632 static unsigned int quiet_NaN( ) throw( )
634 static unsigned int signaling_NaN( ) throw( )
638 static const bool is_exact = true;
639 static const bool is_iec559 = false;
640 static const bool is_integer = true;
641 static const bool is_modulo = true;
642 static const bool is_signed = false;
645 static unsigned int epsilon( ) throw( )
647 static const int max_digits10 = 0;
648 static const int radix = 2;
649 static const bool traps = false;
652 static const int max_exponent = 0;
653 static const int max_exponent10 = 0;
654 static const int min_exponent = 0;
655 static const int min_exponent10 = 0;
658 static unsigned int round_error( ) throw( )
660 static const float_round_style round_style = round_toward_zero;
661 static const bool tinyness_before = false;
664 template<> class numeric_limits<long>
667 static const bool is_specialized = true;
670 static const bool is_bounded = true;
671 static long lowest() throw()
673 static long max( ) throw( )
675 static long min( ) throw( )
679 static const bool has_infinity = false;
680 static long infinity( ) throw( )
684 static const float_denorm_style has_denorm = denorm_absent;
685 static const bool has_denorm_loss = false;
686 static long denorm_min( ) throw( )
690 static const bool is_signed = LONG_MIN != 0;
691 static const long digits = sizeof(long) * CHAR_BIT - (is_signed ? 1 : 0);
692 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
693 static const long digits10 = digits * 643 / 2136;
696 static const bool has_quiet_NaN = false;
697 static const bool has_signaling_NaN = false;
698 static long quiet_NaN( ) throw( )
700 static long signaling_NaN( ) throw( )
704 static const bool is_exact = true;
705 static const bool is_iec559 = false;
706 static const bool is_longeger = true;
707 static const bool is_modulo = true;
710 static long epsilon( ) throw( )
712 static const int max_digits10 = 0;
713 static const long radix = 2;
714 static const bool traps = false;
717 static const long max_exponent = 0;
718 static const long max_exponent10 = 0;
719 static const long min_exponent = 0;
720 static const long min_exponent10 = 0;
723 static long round_error( ) throw( )
725 static const float_round_style round_style = round_toward_zero;
726 static const bool tinyness_before = false;
729 template<> class numeric_limits<unsigned long>
732 static const bool is_specialized = true;
735 static const bool is_bounded = true;
736 static unsigned long lowest() throw()
738 static unsigned long max( ) throw( )
740 static unsigned long min( ) throw( )
744 static const bool has_infinity = false;
745 static unsigned long infinity( ) throw( )
749 static const float_denorm_style has_denorm = denorm_absent;
750 static const bool has_denorm_loss = false;
751 static unsigned long denorm_min( ) throw( )
755 static const long digits = sizeof(unsigned long) * CHAR_BIT;
756 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
757 static const long digits10 = digits * 643 / 2136;
760 static const bool has_quiet_NaN = false;
761 static const bool has_signaling_NaN = false;
762 static unsigned long quiet_NaN( ) throw( )
764 static unsigned long signaling_NaN( ) throw( )
768 static const bool is_exact = true;
769 static const bool is_iec559 = false;
770 static const bool is_longeger = true;
771 static const bool is_modulo = true;
772 static const bool is_signed = false;
775 static unsigned long epsilon( ) throw( )
777 static const int max_digits10 = 0;
778 static const long radix = 2;
779 static const bool traps = false;
782 static const long max_exponent = 0;
783 static const long max_exponent10 = 0;
784 static const long min_exponent = 0;
785 static const long min_exponent10 = 0;
788 static unsigned long round_error( ) throw( )
790 static const float_round_style round_style = round_toward_zero;
791 static const bool tinyness_before = false;
794 template<> class numeric_limits<long long>
797 static const bool is_specialized = true;
800 static const bool is_bounded = true;
801 static long long lowest() throw()
803 static long long max( ) throw( )
805 static long long min( ) throw( )
809 static const bool has_infinity = false;
810 static long long infinity( ) throw( )
814 static const float_denorm_style has_denorm = denorm_absent;
815 static const bool has_denorm_loss = false;
816 static long long denorm_min( ) throw( )
820 static const long long digits = sizeof(long long) * CHAR_BIT - (LLONG_MIN != 0 ? 1 : 0);
821 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
822 static const long long digits10 = digits * 643 / 2136;
825 static const bool has_quiet_NaN = false;
826 static const bool has_signaling_NaN = false;
827 static long long quiet_NaN( ) throw( )
829 static long long signaling_NaN( ) throw( )
833 static const bool is_exact = true;
834 static const bool is_iec559 = false;
835 static const bool is_integer = true;
836 static const bool is_modulo = true;
837 static const bool is_signed = LLONG_MIN != 0;
840 static long long epsilon( ) throw( )
842 static const int max_digits10 = 0;
843 static const long long radix = 2;
844 static const bool traps = false;
847 static const long long max_exponent = 0;
848 static const long long max_exponent10 = 0;
849 static const long long min_exponent = 0;
850 static const long long min_exponent10 = 0;
853 static long long round_error( ) throw( )
855 static const float_round_style round_style = round_toward_zero;
856 static const bool tinyness_before = false;
859 template<> class numeric_limits<unsigned long long>
862 static const bool is_specialized = true;
865 static const bool is_bounded = true;
866 static unsigned long long lowest() throw()
868 static unsigned long long max( ) throw( )
870 static unsigned long long min( ) throw( )
874 static const bool has_infinity = false;
875 static unsigned long long infinity( ) throw( )
879 static const float_denorm_style has_denorm = denorm_absent;
880 static const bool has_denorm_loss = false;
881 static unsigned long long denorm_min( ) throw( )
885 static const long long digits = sizeof(unsigned long long) * CHAR_BIT;
886 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
887 static const long long digits10 = digits * 643 / 2136;
890 static const bool has_quiet_NaN = false;
891 static const bool has_signaling_NaN = false;
892 static unsigned long long quiet_NaN( ) throw( )
894 static unsigned long long signaling_NaN( ) throw( )
898 static const bool is_exact = true;
899 static const bool is_iec559 = false;
900 static const bool is_integer = true;
901 static const bool is_modulo = true;
902 static const bool is_signed = false;
905 static unsigned long long epsilon( ) throw( )
907 static const int max_digits10 = 0;
908 static const long long radix = 2;
909 static const bool traps = false;
912 static const long long max_exponent = 0;
913 static const long long max_exponent10 = 0;
914 static const long long min_exponent = 0;
915 static const long long min_exponent10 = 0;
918 static unsigned long long round_error( ) throw( )
920 static const float_round_style round_style = round_toward_zero;
921 static const bool tinyness_before = false;
924 template<> class numeric_limits<float>
927 static const bool is_specialized = true;
930 static const bool is_bounded = true;
931 static float lowest() throw()
933 static float max( ) throw( )
935 static float min( ) throw( )
939 static const bool has_infinity = true;
940 static float infinity( ) throw( )
941 //{return _FInf._Float;}
943 static const unsigned __inf_bytes = 0x7f800000;
944 return *(float*)&__inf_bytes;
948 static const float_denorm_style has_denorm = denorm_present;
949 static const bool has_denorm_loss = true;
950 static float denorm_min( ) throw( )
951 {return _FDenorm._Float;}
954 static const int digits = FLT_MANT_DIG;
955 static const int digits10 = FLT_DIG;
958 static const bool has_quiet_NaN = true;
959 static const bool has_signaling_NaN = true;
960 static float quiet_NaN( ) throw( )
961 {return _FNan._Float;}
962 static float signaling_NaN( ) throw( )
963 {return _FSnan._Float;}
966 static const bool is_exact = false;
967 static const bool is_iec559 = true;
968 static const bool is_integer = false;
969 static const bool is_modulo = false;
970 static const bool is_signed = true;
973 static float epsilon( ) throw( )
974 {return FLT_EPSILON;}
975 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
976 static const int max_digits10 = FLT_MANT_DIG * 643 / 2136;
977 static const int radix = FLT_RADIX;
978 static const bool traps = true;
981 static const int max_exponent = FLT_MAX_EXP;
982 static const int max_exponent10 = FLT_MAX_10_EXP;
983 static const int min_exponent = FLT_MIN_EXP;
984 static const int min_exponent10 = FLT_MIN_10_EXP;
987 static float round_error( ) throw( )
989 static const float_round_style round_style = round_to_nearest;
990 static const bool tinyness_before = true;
993 template<> class numeric_limits<double>
996 static const bool is_specialized = true;
999 static const bool is_bounded = true;
1000 static double lowest() throw()
1002 static double max( ) throw( )
1004 static double min( ) throw( )
1008 static const bool has_infinity = true;
1009 static double infinity( ) throw( )
1010 {return _Inf._Double;}
1013 static const float_denorm_style has_denorm = denorm_present;
1014 static const bool has_denorm_loss = true;
1015 static double denorm_min( ) throw( )
1016 {return _Denorm._Double;}
1019 static const int digits = DBL_MANT_DIG;
1020 static const int digits10 = DBL_DIG;
1023 static const bool has_quiet_NaN = true;
1024 static const bool has_signaling_NaN = true;
1025 static double quiet_NaN( ) throw( )
1026 {return _Nan._Double;}
1027 static double signaling_NaN( ) throw( )
1028 {return _Snan._Double;}
1031 static const bool is_exact = false;
1032 static const bool is_iec559 = true;
1033 static const bool is_integer = false;
1034 static const bool is_modulo = false;
1035 static const bool is_signed = true;
1038 static double epsilon( ) throw( )
1039 {return DBL_EPSILON;}
1040 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
1041 static const int max_digits10 = DBL_MANT_DIG * 643 / 2136;
1042 static const int radix = FLT_RADIX;
1043 static const bool traps = true;
1046 static const int max_exponent = DBL_MAX_EXP;
1047 static const int max_exponent10 = DBL_MAX_10_EXP;
1048 static const int min_exponent = DBL_MIN_EXP;
1049 static const int min_exponent10 = DBL_MIN_10_EXP;
1052 static double round_error( ) throw( )
1054 static const float_round_style round_style = round_to_nearest;
1055 static const bool tinyness_before = true;
1058 template<> class numeric_limits<long double>
1061 static const bool is_specialized = true;
1064 static const bool is_bounded = true;
1065 static long double lowest() throw()
1067 static long double max( ) throw( )
1069 static long double min( ) throw( )
1073 static const bool has_infinity = true;
1074 static long double infinity( ) throw( )
1075 {return _LInf._Long_double;}
1078 static const float_denorm_style has_denorm = denorm_present;
1079 static const bool has_denorm_loss = true;
1080 static long double denorm_min( ) throw( )
1081 {return _LDenorm._Long_double;}
1084 static const int digits = LDBL_MANT_DIG;
1085 static const int digits10 = LDBL_DIG;
1088 static const bool has_quiet_NaN = true;
1089 static const bool has_signaling_NaN = true;
1090 static long double quiet_NaN( ) throw( )
1091 {return _LNan._Long_double;}
1092 static long double signaling_NaN( ) throw( )
1093 {return _LSnan._Long_double;}
1096 static const bool is_exact = false;
1097 static const bool is_iec559 = true;
1098 static const bool is_integer = false;
1099 static const bool is_modulo = false;
1100 static const bool is_signed = true;
1103 static long double epsilon( ) throw( )
1104 {return LDBL_EPSILON;}
1105 // The fraction 643/2136 approximates log10(2) to 7 significant digits.
1106 static const int max_digits10 = FLT_MANT_DIG * 643 / 2136;
1107 static const int radix = FLT_RADIX;
1108 static const bool traps = true;
1111 static const int max_exponent = LDBL_MAX_EXP;
1112 static const int max_exponent10 = LDBL_MAX_10_EXP;
1113 static const int min_exponent = LDBL_MIN_EXP;
1114 static const int min_exponent10 = LDBL_MIN_10_EXP;
1117 static long double round_error( ) throw( )
1119 static const float_round_style round_style = round_to_nearest;
1120 static const bool tinyness_before = true;