| 2004-10-06 Jakub Jelinek <jakub@redhat.com> |
| |
| * config/os/gnu-linux/bits/os_defines.h: Define |
| __glibcpp_{float,double,long_double}* macros. |
| * config/cpu/x86-64/bits/cpu_limits.h (__glibcpp_long_bits): Only |
| define to 64 if __x86_64__. |
| * include/std/std_limits.h (__glibcpp_f*_round_error): Only define |
| if not yet defined. |
| |
| |
| |
| @@ -73,4 +73,87 @@ typedef __loff_t __off64_t; |
| #define __glibcpp_long_double_bits 64 |
| #endif |
| |
| +/* RHEL3 hack. */ |
| +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__IBMCPP__) \ |
| + && (defined(__i386__) || defined(__x86_64__) || defined(__ia64__) \ |
| + || defined(__s390__) || defined(__s390x__) || defined(__powerpc__) \ |
| + || defined(__powerpc64__)) |
| +#define __glibcpp_float_has_quiet_NaN true |
| +#define __glibcpp_float_has_signaling_NaN true |
| +#define __glibcpp_float_has_denorm denorm_present |
| +#define __glibcpp_float_has_infinity true |
| +#define __glibcpp_float_round_style round_to_nearest |
| +#define __glibcpp_float_is_iec559 true |
| +#define __glibcpp_double_has_quiet_NaN true |
| +#define __glibcpp_double_has_signaling_NaN true |
| +#define __glibcpp_double_has_denorm denorm_present |
| +#define __glibcpp_double_has_infinity true |
| +#define __glibcpp_double_round_style round_to_nearest |
| +#define __glibcpp_double_is_iec559 true |
| +#define __glibcpp_long_double_has_quiet_NaN true |
| +#define __glibcpp_long_double_has_signaling_NaN true |
| +#define __glibcpp_long_double_has_denorm denorm_present |
| +#define __glibcpp_long_double_has_infinity true |
| +#define __glibcpp_long_double_round_style round_to_nearest |
| +#define __glibcpp_long_double_is_iec559 true |
| + |
| +#define __glibcpp_f32_round_error 0.5F |
| +#define __glibcpp_f64_round_error 0.5 |
| +#define __glibcpp_f80_round_error 0.5L |
| +#define __glibcpp_f96_round_error 0.5L |
| +#define __glibcpp_f128_round_error 0.5L |
| + |
| +#define __glibcpp_float_infinity 1.0e+40F |
| +#define __glibcpp_double_infinity 1.0e+320 |
| +#define __glibcpp_long_double_infinity 1.0e+5000L |
| + |
| +#define __glibcpp_float_denorm_min 1.40129846e-45F |
| +#define __glibcpp_double_denorm_min 4.9406564584124654e-324 |
| + |
| +#define __glibcpp_float_quiet_NaN \ |
| + (__extension__ ((union { unsigned int __l; float __d; }) \ |
| + { __l: 0x7fc00000 }).__d) |
| +#define __glibcpp_double_quiet_NaN \ |
| + (__extension__ ((union { unsigned long long __l; double __d; }) \ |
| + { __l: 0x7ff8000000000000ULL }).__d) |
| + |
| +#define __glibcpp_float_signaling_NaN \ |
| + (__extension__ ({ union { unsigned int __l; float __d; } __u; \ |
| + __u.__l = 0x7fa00000; \ |
| + __asm ("" : : "r" (&__u) : "memory"); __u.__d; })) |
| +#define __glibcpp_double_signaling_NaN \ |
| + (__extension__ ({ union { unsigned long long __l; double __d; } __u; \ |
| + __u.__l = 0x7ff4000000000000ULL; \ |
| + __asm ("" : : "r" (&__u) : "memory"); __u.__d; })) |
| + |
| +#if __glibcpp_long_double_bits == 80 |
| + |
| +#define __glibcpp_long_double_denorm_min 3.64519953188247460253e-4951L |
| +#define __glibcpp_long_double_quiet_NaN \ |
| + (__extension__ ({ union { unsigned long long __l[2]; \ |
| + long double __d; } __u; \ |
| + __u.__l[0] = 0xcULL << 60; __u.__l[1] = 0x7fff; \ |
| + __u.__d; })) |
| +#define __glibcpp_long_double_signaling_NaN \ |
| + (__extension__ ({ union { unsigned long long __l[2]; \ |
| + long double __d; } __u; \ |
| + __u.__l[0] = 0xaULL << 60; __u.__l[1] = 0x7fff; \ |
| + __asm ("" : : "r" (&__u) : "memory"); __u.__d; })) |
| + |
| +#else |
| + |
| +#define __glibcpp_long_double_denorm_min 4.9406564584124654e-324L |
| +#define __glibcpp_long_double_quiet_NaN \ |
| + (__extension__ ((union { unsigned long long __l; long double __d; }) \ |
| + { __l: 0x7ff8000000000000ULL }).__d) |
| +#define __glibcpp_long_double_signaling_NaN \ |
| + (__extension__ ({ union { unsigned long long __l; \ |
| + long double __d; } __u; \ |
| + __u.__l = 0x7ff4000000000000ULL; \ |
| + __asm ("" : : "r" (&__u) : "memory"); __u.__d; })) |
| + |
| +#endif |
| + |
| +#endif |
| + |
| #endif |
| |
| |
| @@ -28,7 +28,9 @@ |
| #ifndef _GLIBCPP_CPU_LIMITS |
| #define _GLIBCPP_CPU_LIMITS 1 |
| |
| +#ifdef __x86_64__ |
| #define __glibcpp_long_bits 64 |
| +#endif |
| |
| #define __glibcpp_long_double_bits 80 |
| |
| |
| |
| @@ -180,7 +180,9 @@ |
| #define __glibcpp_f32_digits10 6 |
| #define __glibcpp_f32_radix 2 |
| #define __glibcpp_f32_epsilon 1.19209290e-07F |
| +#ifndef __glibcpp_f32_round_error |
| #define __glibcpp_f32_round_error 1.0F |
| +#endif |
| #define __glibcpp_f32_min_exponent -125 |
| #define __glibcpp_f32_min_exponent10 -37 |
| #define __glibcpp_f32_max_exponent 128 |
| @@ -191,7 +193,9 @@ |
| #define __glibcpp_f64_digits10 15 |
| #define __glibcpp_f64_radix 2 |
| #define __glibcpp_f64_epsilon 2.2204460492503131e-16 |
| +#ifndef __glibcpp_f64_round_error |
| #define __glibcpp_f64_round_error 1.0 |
| +#endif |
| #define __glibcpp_f64_min_exponent -1021 |
| #define __glibcpp_f64_min_exponent10 -307 |
| #define __glibcpp_f64_max_exponent 1024 |
| @@ -202,7 +206,9 @@ |
| #define __glibcpp_f80_digits10 18 |
| #define __glibcpp_f80_radix 2 |
| #define __glibcpp_f80_epsilon 1.08420217248550443401e-19L |
| +#ifndef __glibcpp_f80_round_error |
| #define __glibcpp_f80_round_error 1.0L |
| +#endif |
| #define __glibcpp_f80_min_exponent -16381 |
| #define __glibcpp_f80_min_exponent10 -4931 |
| #define __glibcpp_f80_max_exponent 16384 |
| @@ -213,7 +219,9 @@ |
| #define __glibcpp_f96_digits10 18 |
| #define __glibcpp_f96_radix 2 |
| #define __glibcpp_f96_epsilon 1.08420217248550443401e-19L |
| +#ifndef __glibcpp_f96_round_error |
| #define __glibcpp_f96_round_error 1.0L |
| +#endif |
| #define __glibcpp_f96_min_exponent -16382 |
| #define __glibcpp_f96_min_exponent10 -4931 |
| #define __glibcpp_f96_max_exponent 16384 |
| @@ -224,7 +232,9 @@ |
| #define __glibcpp_f128_digits10 33 |
| #define __glibcpp_f128_radix 2 |
| #define __glibcpp_f128_epsilon 1.925929944387235853055977942584927319E-34L |
| +#ifndef __glibcpp_f128_round_error |
| #define __glibcpp_f128_round_error 1.0L |
| +#endif |
| #define __glibcpp_f128_min_exponent -16381 |
| #define __glibcpp_f128_min_exponent10 -4931 |
| #define __glibcpp_f128_max_exponent 16384 |