# define __glibcpp_f32_has_QNaN true
# define __glibcpp_f32_SNaN_bytes { 0x7f800001 }
# define __glibcpp_f32_has_SNaN true
-# define __glibcpp_f32_denorm_min_bytes { 0x00000001 }
-# define __glibcpp_f32_has_denorm denorm_present
# define __glibcpp_f32_is_iec559 true
#endif
#ifndef __glibcpp_f32_QNaN_bytes
# define __glibcpp_f32_SNaN_bytes { }
# define __glibcpp_f32_has_SNaN false
#endif
-#ifndef __glibcpp_f32_denorm_min_bytes
-# define __glibcpp_f32_denorm_min_bytes { }
-# define __glibcpp_f32_has_denorm denorm_indeterminate
-#endif
#ifndef __glibcpp_f32_is_iec559
# define __glibcpp_f32_is_iec559 false
#endif
# if __TARGET_FLOAT_WORDS_ORDER__ == __GCC_BIG_ENDIAN__
# define __glibcpp_f64_QNaN_bytes { 0x7ff80000, 0x0 }
# define __glibcpp_f64_SNaN_bytes { 0x7ff00000, 0x1 }
-# define __glibcpp_f64_denorm_min_bytes { 0x0, 0x1 }
# else
# define __glibcpp_f64_QNaN_bytes { 0x0, 0x7ff80000 }
# define __glibcpp_f64_SNaN_bytes { 0x1, 0x7ff00000 }
-# define __glibcpp_f64_denorm_min_bytes { 0x1, 0x0 }
# endif
# define __glibcpp_f64_has_QNaN true
# define __glibcpp_f64_has_SNaN true
-# define __glibcpp_f64_has_denorm denorm_present
# define __glibcpp_f64_is_iec559 true
#endif
#ifndef __glibcpp_f64_QNaN_bytes
# define __glibcpp_f64_SNaN_bytes { }
# define __glibcpp_f64_has_SNaN false
#endif
-#ifndef __glibcpp_f64_denorm_min_bytes
-# define __glibcpp_f64_denorm_min_bytes { }
-# define __glibcpp_f64_has_denorm denorm_indeterminate
-#endif
#ifndef __glibcpp_f64_is_iec559
# define __glibcpp_f64_is_iec559 false
#endif
{ 0x7f, 0xff, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }
# define __glibcpp_f80_SNaN_bytes \
{ 0x7f, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 }
-# define __glibcpp_f80_denorm_min_bytes \
- { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 }
# else
# define __glibcpp_f80_QNaN_bytes \
{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC0, 0xff, 0x7f }
# define __glibcpp_f80_SNaN_bytes \
{ 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f }
-# define __glibcpp_f80_denorm_min_bytes \
- { 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }
# endif
# define __glibcpp_f80_has_QNaN true
# define __glibcpp_f80_has_SNaN true
-# define __glibcpp_f80_has_denorm denorm_present
# define __glibcpp_f80_is_iec559 true
#endif
#ifndef __glibcpp_f80_QNaN_bytes
# define __glibcpp_f80_SNaN_bytes { }
# define __glibcpp_f80_has_SNaN false
#endif
-#ifndef __glibcpp_f80_denorm_min_bytes
-# define __glibcpp_f80_denorm_min_bytes { }
-# define __glibcpp_f80_has_denorm denorm_indeterminate
-#endif
#ifndef __glibcpp_f80_is_iec559
# define __glibcpp_f80_is_iec559 false
#endif
# if __TARGET_BYTES_ORDER__ == __GCC_BIG_ENDIAN__
# define __glibcpp_f96_QNaN_bytes { 0x7ff80000, 0x0, 0x0 }
# define __glibcpp_f96_SNaN_bytes { 0x7ff00000, 0x0, 0x1 }
-# define __glibcpp_f96_denorm_min_bytes { 0x0, 0x0, 0x1 }
# else
# define __glibcpp_f96_QNaN_bytes { 0x0, 0x0, 0x7ff80000 }
# define __glibcpp_f96_SNaN_bytes { 0x1, 0x0, 0x7ff00000 }
-# define __glibcpp_f96_denorm_min_bytes { 0x1, 0x0, 0x0 }
# endif
# define __glibcpp_f96_has_QNaN true
# define __glibcpp_f96_has_SNaN true
-# define __glibcpp_f96_has_denorm denorm_present
# define __glibcpp_f96_is_iec559 true
#endif
#ifndef __glibcpp_f96_QNaN_bytes
# define __glibcpp_f96_SNaN_bytes { }
# define __glibcpp_f96_has_SNaN false
#endif
-#ifndef __glibcpp_f96_denorm_min_bytes
-# define __glibcpp_f96_denorm_min_bytes { }
-# define __glibcpp_f96_has denorm_indeterminate
-#endif
#define __glibcpp_f128_round_error 1.0L
#if __GCC_FLOAT_FORMAT__ == __IEEE_FORMAT__
# if __TARGET_FLOAT_WORDS_ORDER__ == __GCC_BIG_ENDIAN__
# define __glibcpp_f128_QNaN_bytes { 0x7fff0800, 0x0, 0x0, 0x0 }
# define __glibcpp_f128_SNaN_bytes { 0x7fff0000, 0x0, 0x0, 0x1 }
-# define __glibcpp_f128_denorm_min_bytes { 0x0, 0x0, 0x0, 0x1 }
# else
# define __glibcpp_f128_QNaN_bytes { 0x0, 0x0, 0x0, 0x7fff0800 }
# define __glibcpp_f128_SNaN_bytes { 0x1, 0x0, 0x0, 0x7fff0000 }
-# define __glibcpp_f128_denorm_min_bytes { 0x1, 0x0, 0x0, 0x0 }
# endif
# define __glibcpp_f128_has_QNaN true
# define __glibcpp_f128_has_SNaN true
-# define __glibcpp_f128_has_denorm denorm_present
#endif
#ifndef __glibcpp_f128_QNaN_bytes
# define __glibcpp_f128_QNaN_bytes { }
# define __glibcpp_f128_SNaN_bytes { }
# define __glibcpp_f128_has_SNaN false
#endif
-#ifndef __glibcpp_f128_denorm_min_bytes
-# define __glibcpp_f128_denorm_min_bytes { }
-# define __glibcpp_f128_has_denorm denorm_indeterminate
-#endif
#ifndef __glibcpp_f128_is_iec559
# define __glibcpp_f128_is_iec559 false
#endif
# define __glibcpp_float_round_error __glibcpp_f32_round_error
# define __glibcpp_float_QNaN_bytes __glibcpp_f32_QNaN_bytes
# define __glibcpp_float_SNaN_bytes __glibcpp_f32_SNaN_bytes
-# define __glibcpp_float_denorm_min_bytes __glibcpp_f32_denorm_min_bytes
# define __glibcpp_float_has_QNaN __glibcpp_f32_has_QNaN
# define __glibcpp_float_has_SNaN __glibcpp_f32_has_SNaN
-# define __glibcpp_float_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f32_is_iec559
#elif __FLOAT_BIT__ == 64
# define __glibcpp_float_round_error __glibcpp_f64_round_error
# define __glibcpp_float_QNaN_bytes __glibcpp_f64_QNaN_bytes
# define __glibcpp_float_SNaN_bytes __glibcpp_f64_SNaN_bytes
-# define __glibcpp_float_denorm_min_bytes __glibcpp_f64_denorm_min_bytes
# define __glibcpp_float_has_QNaN __glibcpp_f64_has_QNaN
# define __glibcpp_float_has_SNaN __glibcpp_f64_has_SNaN
-# define __glibcpp_float_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f64_is_iec559
#elif __FLOAT_BIT__ == 80
# define __glibcpp_float_round_error __glibcpp_f80_round_error
# define __glibcpp_float_QNaN_bytes __glibcpp_f80_QNaN_bytes
# define __glibcpp_float_SNaN_bytes __glibcpp_f80_SNaN_bytes
-# define __glibcpp_float_denorm_min_bytes __glibcpp_f80_denorm_min_bytes
# define __glibcpp_float_has_QNaN __glibcpp_f80_has_QNaN
# define __glibcpp_float_has_SNaN __glibcpp_f80_has_SNaN
-# define __glibcpp_float_has_denorm __glibcpp_f80_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f80_is_iec559
#else
// You must define these macros in the configuration file.
# define __glibcpp_float_has_SNaN false
#endif
-#ifndef __glibcpp_float_denorm_min_bytes
-# define __glibcpp_float_denorm_min_bytes { }
-# define __glibcpp_float_has_denorm denorm_indeterminate
-#endif
-
#ifndef __glibcpp_float_has_denorm_loss
# define __glibcpp_float_has_denorm_loss false
#endif
# define __glibcpp_double_round_error __glibcpp_f32_round_error
# define __glibcpp_double_QNaN_bytes __glibcpp_f32_QNaN_bytes
# define __glibcpp_double_SNaN_bytes __glibcpp_f32_SNaN_bytes
-# define __glibcpp_double_denorm_min_bytes __glibcpp_f32_denorm_min_bytes
# define __glibcpp_double_has_QNaN __glibcpp_f32_has_QNaN
# define __glibcpp_double_has_SNaN __glibcpp_f32_has_SNaN
-# define __glibcpp_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f32_is_iec559
#elif __DOUBLE_BIT__ == 64
# define __glibcpp_double_round_error __glibcpp_f64_round_error
# define __glibcpp_double_QNaN_bytes __glibcpp_f64_QNaN_bytes
# define __glibcpp_double_SNaN_bytes __glibcpp_f64_SNaN_bytes
-# define __glibcpp_double_denorm_min_bytes __glibcpp_f64_denorm_min_bytes
# define __glibcpp_double_has_QNaN __glibcpp_f64_has_QNaN
# define __glibcpp_double_has_SNaN __glibcpp_f64_has_SNaN
-# define __glibcpp_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f64_is_iec559
#elif __DOUBLE_BIT__ == 80
# define __glibcpp_double_round_error __glibcpp_f80_round_error
# define __glibcpp_double_QNaN_bytes __glibcpp_f80_QNaN_bytes
# define __glibcpp_double_SNaN_bytes __glibcpp_f80_SNaN_bytes
-# define __glibcpp_double_denorm_min_bytes __glibcpp_f80_denorm_min_bytes
# define __glibcpp_double_has_QNaN __glibcpp_f80_has_QNaN
# define __glibcpp_double_has_SNaN __glibcpp_f80_has_SNaN
-# define __glibcpp_double_has_denorm __glibcpp_f80_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f80_is_iec559
#else
// You must define these macros in the configuration file.
# define __glibcpp_double_has_SNaN false
#endif
-#ifndef __glibcpp_double_denorm_min_bytes
-# define __glibcpp_double_denorm_min_bytes { }
-# define __glibcpp_double_has_denorm denorm_indeterminate
-#endif
-
#ifndef __glibcpp_double_has_denorm_loss
# define __glibcpp_double_has_denorm_loss false
#endif
# define __glibcpp_long_double_round_error __glibcpp_f32_round_error
# define __glibcpp_long_double_QNaN_bytes __glibcpp_f32_QNaN_bytes
# define __glibcpp_long_double_SNaN_bytes __glibcpp_f32_SNaN_bytes
-# define __glibcpp_long_double_denorm_min_bytes __glibcpp_f32_denorm_min_bytes
# define __glibcpp_long_double_has_QNaN __glibcpp_f32_has_QNaN
# define __glibcpp_long_double_has_SNaN __glibcpp_f32_has_SNaN
-# define __glibcpp_long_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f32_is_iec559
#elif __LONG_DOUBLE_BIT__ == 64
# define __glibcpp_long_double_round_error __glibcpp_f64_round_error
# define __glibcpp_long_double_QNaN_bytes __glibcpp_f64_QNaN_bytes
# define __glibcpp_long_double_SNaN_bytes __glibcpp_f64_SNaN_bytes
-# define __glibcpp_long_double_denorm_min_bytes __glibcpp_f64_denorm_min_bytes
# define __glibcpp_long_double_has_QNaN __glibcpp_f64_has_QNaN
# define __glibcpp_long_double_has_SNaN __glibcpp_f64_has_SNaN
-# define __glibcpp_long_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f64_is_iec559
#elif __LONG_DOUBLE_BIT__ == 80
# define __glibcpp_long_double_round_error __glibcpp_f80_round_error
# define __glibcpp_long_double_QNaN_bytes __glibcpp_f80_QNaN_bytes
# define __glibcpp_long_double_SNaN_bytes __glibcpp_f80_SNaN_bytes
-# define __glibcpp_long_double_denorm_min_bytes __glibcpp_f80_denorm_min_bytes
# define __glibcpp_long_double_has_QNaN __glibcpp_f80_has_QNaN
# define __glibcpp_long_double_has_SNaN __glibcpp_f80_has_SNaN
-# define __glibcpp_long_double_has_denorm __glibcpp_f80_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f80_is_iec559
#elif __LONG_DOUBLE_BIT__ == 96
# define __glibcpp_long_double_round_error __glibcpp_f96_round_error
# define __glibcpp_long_double_QNaN_bytes __glibcpp_f96_QNaN_bytes
# define __glibcpp_long_double_SNaN_bytes __glibcpp_f96_SNaN_bytes
-# define __glibcpp_long_double_denorm_min_bytes __glibcpp_f96_denorm_min_bytes
# define __glibcpp_long_double_has_QNaN __glibcpp_f96_has_QNaN
# define __glibcpp_long_double_has_SNaN __glibcpp_f96_has_SNaN
-# define __glibcpp_long_double_has_denorm __glibcpp_f96_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f96_is_iec559
#elif __LONG_DOUBLE_BIT__ == 128
# define __glibcpp_long_double_round_error __glibcpp_f128_round_error
# define __glibcpp_long_double_QNaN_bytes __glibcpp_f128_QNaN_bytes
# define __glibcpp_long_double_SNaN_bytes __glibcpp_f128_SNaN_bytes
-# define __glibcpp_long_double_denorm_min_bytes __glibcpp_f128_denorm_min_bytes
# define __glibcpp_long_double_has_QNaN __glibcpp_f128_has_QNaN
# define __glibcpp_long_double_has_SNaN __glibcpp_f128_has_SNaN
-# define __glibcpp_long_double_has_denorm __glibcpp_f128_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f128_is_iec559
#else
// You must define these macros in the configuration file.
# define __glibcpp_long_double_has_SNaN false
#endif
-#ifndef __glibcpp_long_double_denorm_min_bytes
-# define __glibcpp_long_double_denorm_min_bytes { }
-# define __glibcpp_long_double_has_denorm denorm_indeterminate
-#endif
-
#ifndef __glibcpp_long_double_has_denorm_loss
# define __glibcpp_long_double_has_denorm_loss false
#endif
extern const __float_storage __glibcpp_float_QNaN;
extern const __float_storage __glibcpp_float_SNaN;
- extern const __float_storage __glibcpp_float_denorm_min;
extern const __double_storage __glibcpp_double_QNaN;
extern const __double_storage __glibcpp_double_SNaN;
- extern const __double_storage __glibcpp_double_denorm_min;
extern const __long_double_storage __glibcpp_long_double_QNaN;
extern const __long_double_storage __glibcpp_long_double_SNaN;
- extern const __long_double_storage __glibcpp_long_double_denorm_min;
enum float_round_style
{
= __builtin_huge_valf () / 2 == __builtin_huge_valf ();
static const bool has_quiet_NaN = __glibcpp_float_has_QNaN;
static const bool has_signaling_NaN = __glibcpp_float_has_SNaN;
- static const float_denorm_style has_denorm = __glibcpp_float_has_denorm;
+ static const float_denorm_style has_denorm
+ = __FLT_DENORM_MIN__ ? denorm_present : denorm_absent;
static const bool has_denorm_loss = __glibcpp_float_has_denorm_loss;
static float infinity() throw()
static float signaling_NaN() throw()
{ return *reinterpret_cast<const float*>(__glibcpp_float_SNaN); }
static float denorm_min() throw()
- { return *reinterpret_cast<const float*>(__glibcpp_float_denorm_min); }
+ { return __FLT_DENORM_MIN__; }
static const bool is_iec559 = __glibcpp_float_is_iec559;
static const bool is_bounded = __glibcpp_float_is_bounded;
#undef __glibcpp_float_round_error
#undef __glibcpp_float_has_QNaN
#undef __glibcpp_float_has_SNaN
-#undef __glibcpp_float_has_denorm
#undef __glibcpp_float_has_denorm_loss
#undef __glibcpp_float_is_iec559
#undef __glibcpp_float_is_bounded
= __builtin_huge_val () / 2 == __builtin_huge_val ();
static const bool has_quiet_NaN = __glibcpp_double_has_QNaN;
static const bool has_signaling_NaN = __glibcpp_double_has_SNaN;
- static const float_denorm_style has_denorm =
- __glibcpp_double_has_denorm;
+ static const float_denorm_style has_denorm
+ = __DBL_DENORM_MIN__ ? denorm_present : denorm_absent;
static const bool has_denorm_loss = __glibcpp_double_has_denorm_loss;
static double infinity() throw()
static double signaling_NaN() throw()
{ return *reinterpret_cast<const double*>(__glibcpp_double_SNaN); }
static double denorm_min() throw()
- { return *reinterpret_cast<const double*>(__glibcpp_double_denorm_min); }
+ { return __DBL_DENORM_MIN__; }
static const bool is_iec559 = __glibcpp_double_is_iec559;
static const bool is_bounded = __glibcpp_double_is_bounded;
#undef __glibcpp_double_round_error
#undef __glibcpp_double_has_QNaN
#undef __glibcpp_double_has_SNaN
-#undef __glibcpp_double_has_denorm
#undef __glibcpp_double_has_denorm_loss
#undef __glibcpp_double_is_iec559
#undef __glibcpp_double_is_bounded
= __builtin_huge_vall () / 2 == __builtin_huge_vall ();
static const bool has_quiet_NaN = __glibcpp_long_double_has_SNaN;
static const bool has_signaling_NaN = __glibcpp_long_double_has_SNaN;
- static const float_denorm_style has_denorm =
- __glibcpp_long_double_has_denorm;
- static const bool has_denorm_loss =
- __glibcpp_long_double_has_denorm_loss;
+ static const float_denorm_style has_denorm
+ = __LDBL_DENORM_MIN__ ? denorm_present : denorm_absent;
+ static const bool has_denorm_loss
+ = __glibcpp_long_double_has_denorm_loss;
static long double infinity() throw()
{ return __builtin_huge_vall (); }
}
static long double denorm_min() throw()
- {
- return *reinterpret_cast<const long double*>
- (__glibcpp_long_double_denorm_min);
- }
+ { return __LDBL_DENORM_MIN__; }
static const bool is_iec559 = __glibcpp_long_double_is_iec559;
static const bool is_bounded = __glibcpp_long_double_is_bounded;
#undef __glibcpp_long_double_round_error
#undef __glibcpp_long_double_has_QNaN
#undef __glibcpp_long_double_has_SNaN
-#undef __glibcpp_long_double_has_denorm
#undef __glibcpp_long_double_has_denorm_loss
#undef __glibcpp_long_double_is_iec559
#undef __glibcpp_long_double_is_bounded