diff options
author | Joseph Myers <joseph@codesourcery.com> | 2016-10-17 22:48:51 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2016-10-17 22:48:51 +0000 |
commit | 6f322a894704e7959b9cee7c2cc7ec1963a26e73 (patch) | |
tree | 817009ca0ac99f5c874ae233f8c603d0b646e849 /sysdeps/ieee754 | |
parent | 8e36adc08eebb526d180b8477f1840c5bd549d83 (diff) | |
download | glibc-6f322a894704e7959b9cee7c2cc7ec1963a26e73.zip glibc-6f322a894704e7959b9cee7c2cc7ec1963a26e73.tar.gz glibc-6f322a894704e7959b9cee7c2cc7ec1963a26e73.tar.bz2 |
Define HIGH_ORDER_BIT_IS_SET_FOR_SNAN to 0 or 1.
This patch moves the HIGH_ORDER_BIT_IS_SET_FOR_SNAN macro from being
defined or undefined to the preferred convention of always being
defined, to either 0 or 1, so allowing typo-proof tests with #if.
The macro is moved from math_private.h to a new header
nan-high-order-bit.h to make it easy for all architectures to define,
either through the sysdeps/generic version of the header or through
providing their own version of the header, without needing #ifndef in
the generic math_private.h to give a default definition. The move
also allows the macro to be used without needing math_private.h to be
included; the immediate motivation of this patch is to allow tests to
access this information (to know what kinds of NaNs 0 is a valid
payload for) without needing to include math_private.h. Existing
C level rather than preprocessor conditionals at all, but this patch
does not make such a change).
Tested for x86_64 and x86 (testsuite); also verified for x86_64, x86,
mips64 and powerpc that installed stripped shared libraries are
unchanged by the patch.
* sysdeps/generic/nan-high-order-bit.h: New file.
* sysdeps/hppa/nan-high-order-bit.h: Likewise.
* sysdeps/mips/nan-high-order-bit.h: Likewise.
* sysdeps/hppa/math_private.h: Remove file.
* sysdeps/mips/math_private.h (HIGH_ORDER_BIT_IS_SET_FOR_SNAN): Do
not define here.
* sysdeps/ieee754/dbl-64/s_issignaling.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/s_totalorder.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/s_totalordermag.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/flt-32/s_issignalingf.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/flt-32/s_totalorderf.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/flt-32/s_totalordermagf.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128/s_issignalingl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-96/s_issignalingl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_issignaling.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_totalorder.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_totalordermag.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/s_issignalingf.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/s_totalorderf.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/s_totalordermagf.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_issignalingl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_totalorderl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_totalordermagl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_issignalingl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_totalorderl.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_totalordermagl.c | 3 |
18 files changed, 36 insertions, 18 deletions
diff --git a/sysdeps/ieee754/dbl-64/s_issignaling.c b/sysdeps/ieee754/dbl-64/s_issignaling.c index 4b93d6a..0b845e2 100644 --- a/sysdeps/ieee754/dbl-64/s_issignaling.c +++ b/sysdeps/ieee754/dbl-64/s_issignaling.c @@ -18,11 +18,12 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> int __issignaling (double x) { -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN u_int32_t hxi; GET_HIGH_WORD (hxi, x); /* We only have to care about the high-order bit of x's significand, because diff --git a/sysdeps/ieee754/dbl-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/s_totalorder.c index 73ac32f..c4ec917 100644 --- a/sysdeps/ieee754/dbl-64/s_totalorder.c +++ b/sysdeps/ieee754/dbl-64/s_totalorder.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -27,7 +28,7 @@ totalorder (double x, double y) uint32_t lx, ly; EXTRACT_WORDS (hx, lx, x); EXTRACT_WORDS (hy, ly, y); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN uint32_t uhx = hx & 0x7fffffff, uhy = hy & 0x7fffffff; /* For the preferred quiet NaN convention, this operation is a comparison of the representations of the arguments interpreted as diff --git a/sysdeps/ieee754/dbl-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/s_totalordermag.c index e41dade..3850c33 100644 --- a/sysdeps/ieee754/dbl-64/s_totalordermag.c +++ b/sysdeps/ieee754/dbl-64/s_totalordermag.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -29,7 +30,7 @@ totalordermag (double x, double y) EXTRACT_WORDS (hy, ly, y); hx &= 0x7fffffff; hy &= 0x7fffffff; -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* For the preferred quiet NaN convention, this operation is a comparison of the representations of the absolute values of the arguments. If both arguments are NaNs, invert the diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c index c22e608..18d1acd 100644 --- a/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c +++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c @@ -18,13 +18,14 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> int __issignaling (double x) { u_int64_t xi; EXTRACT_WORDS64 (xi, x); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* We only have to care about the high-order bit of x's significand, because having it set (sNaN) already makes the significand different from that used to designate infinity. */ diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c index 02cd799..dd5587b 100644 --- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c +++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -26,7 +27,7 @@ totalorder (double x, double y) int64_t ix, iy; EXTRACT_WORDS64 (ix, x); EXTRACT_WORDS64 (iy, y); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* For the preferred quiet NaN convention, this operation is a comparison of the representations of the arguments interpreted as sign-magnitude integers. If both arguments are NaNs, invert the diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c index 38f2e1b..999a919 100644 --- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c +++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -28,7 +29,7 @@ totalordermag (double x, double y) EXTRACT_WORDS64 (iy, y); ix &= 0x7fffffffffffffffULL; iy &= 0x7fffffffffffffffULL; -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* For the preferred quiet NaN convention, this operation is a comparison of the representations of the absolute values of the arguments. If both arguments are NaNs, invert the diff --git a/sysdeps/ieee754/flt-32/s_issignalingf.c b/sysdeps/ieee754/flt-32/s_issignalingf.c index 2409ff4..965ba92 100644 --- a/sysdeps/ieee754/flt-32/s_issignalingf.c +++ b/sysdeps/ieee754/flt-32/s_issignalingf.c @@ -18,13 +18,14 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> int __issignalingf (float x) { u_int32_t xi; GET_FLOAT_WORD (xi, x); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* We only have to care about the high-order bit of x's significand, because having it set (sNaN) already makes the significand different from that used to designate infinity. */ diff --git a/sysdeps/ieee754/flt-32/s_totalorderf.c b/sysdeps/ieee754/flt-32/s_totalorderf.c index 1ed30d8..243387b 100644 --- a/sysdeps/ieee754/flt-32/s_totalorderf.c +++ b/sysdeps/ieee754/flt-32/s_totalorderf.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -26,7 +27,7 @@ totalorderf (float x, float y) int32_t ix, iy; GET_FLOAT_WORD (ix, x); GET_FLOAT_WORD (iy, y); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* For the preferred quiet NaN convention, this operation is a comparison of the representations of the arguments interpreted as sign-magnitude integers. If both arguments are NaNs, invert the diff --git a/sysdeps/ieee754/flt-32/s_totalordermagf.c b/sysdeps/ieee754/flt-32/s_totalordermagf.c index 7c01edc..be78eae 100644 --- a/sysdeps/ieee754/flt-32/s_totalordermagf.c +++ b/sysdeps/ieee754/flt-32/s_totalordermagf.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -28,7 +29,7 @@ totalordermagf (float x, float y) GET_FLOAT_WORD (iy, y); ix &= 0x7fffffff; iy &= 0x7fffffff; -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* For the preferred quiet NaN convention, this operation is a comparison of the representations of the absolute values of the arguments. If both arguments are NaNs, invert the diff --git a/sysdeps/ieee754/ldbl-128/s_issignalingl.c b/sysdeps/ieee754/ldbl-128/s_issignalingl.c index 6af1db4..cb0f2a5 100644 --- a/sysdeps/ieee754/ldbl-128/s_issignalingl.c +++ b/sysdeps/ieee754/ldbl-128/s_issignalingl.c @@ -18,13 +18,14 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> int __issignalingl (_Float128 x) { u_int64_t hxi, lxi __attribute__ ((unused)); GET_LDOUBLE_WORDS64 (hxi, lxi, x); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* We only have to care about the high-order bit of x's significand, because having it set (sNaN) already makes the significand different from that used to designate infinity. */ diff --git a/sysdeps/ieee754/ldbl-128/s_totalorderl.c b/sysdeps/ieee754/ldbl-128/s_totalorderl.c index dc76ccf..32ede1f 100644 --- a/sysdeps/ieee754/ldbl-128/s_totalorderl.c +++ b/sysdeps/ieee754/ldbl-128/s_totalorderl.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -27,7 +28,7 @@ totalorderl (_Float128 x, _Float128 y) uint64_t lx, ly; GET_LDOUBLE_WORDS64 (hx, lx, x); GET_LDOUBLE_WORDS64 (hy, ly, y); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN uint64_t uhx = hx & 0x7fffffffffffffffULL; uint64_t uhy = hy & 0x7fffffffffffffffULL; /* For the preferred quiet NaN convention, this operation is a diff --git a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c index bcfeecd..5446809 100644 --- a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c +++ b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -29,7 +30,7 @@ totalordermagl (_Float128 x, _Float128 y) GET_LDOUBLE_WORDS64 (hy, ly, y); hx &= 0x7fffffffffffffffULL; hy &= 0x7fffffffffffffffULL; -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN /* For the preferred quiet NaN convention, this operation is a comparison of the representations of the absolute values of the arguments. If both arguments are NaNs, invert the diff --git a/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c b/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c index 0915139..94cfffcd 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> int __issignalingl (long double x) @@ -29,7 +30,7 @@ __issignalingl (long double x) xhi = ldbl_high (x); EXTRACT_WORDS64 (xi, xhi); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN # error untested /* We only have to care about the high-order bit of x's significand, because having it set (sNaN) already makes the significand different from that diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c index 1535b2f..ff55779 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -30,7 +31,7 @@ totalorderl (long double x, long double y) EXTRACT_WORDS64 (hx, xhi); ldbl_unpack (y, &yhi, &ylo); EXTRACT_WORDS64 (hy, yhi); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN # error not implemented #endif uint64_t hx_sign = hx >> 63; diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c index 509a23a..739e231 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -30,7 +31,7 @@ totalordermagl (long double x, long double y) EXTRACT_WORDS64 (hx, xhi); ldbl_unpack (y, &yhi, &ylo); EXTRACT_WORDS64 (hy, yhi); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN # error not implemented #endif uint64_t x_sign = hx & 0x8000000000000000ULL; diff --git a/sysdeps/ieee754/ldbl-96/s_issignalingl.c b/sysdeps/ieee754/ldbl-96/s_issignalingl.c index 73646ca..364e5db 100644 --- a/sysdeps/ieee754/ldbl-96/s_issignalingl.c +++ b/sysdeps/ieee754/ldbl-96/s_issignalingl.c @@ -18,13 +18,14 @@ #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> int __issignalingl (long double x) { u_int32_t exi, hxi, lxi; GET_LDOUBLE_WORDS (exi, hxi, lxi, x); -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN # error not implemented #else /* To keep the following comparison simple, toggle the quiet/signaling bit, diff --git a/sysdeps/ieee754/ldbl-96/s_totalorderl.c b/sysdeps/ieee754/ldbl-96/s_totalorderl.c index 4f14baf..ddc28b8 100644 --- a/sysdeps/ieee754/ldbl-96/s_totalorderl.c +++ b/sysdeps/ieee754/ldbl-96/s_totalorderl.c @@ -19,6 +19,7 @@ #include <float.h> #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -41,7 +42,7 @@ totalorderl (long double x, long double y) if ((expy & 0x7fff) == 0x7fff) hy |= 0x80000000; } -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN # error not implemented #endif uint32_t x_sign = expx >> 15; diff --git a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c index 0167f0f..4ca28e7 100644 --- a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c +++ b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c @@ -19,6 +19,7 @@ #include <float.h> #include <math.h> #include <math_private.h> +#include <nan-high-order-bit.h> #include <stdint.h> int @@ -43,7 +44,7 @@ totalordermagl (long double x, long double y) if (expy == 0x7fff) hy |= 0x80000000; } -#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN # error not implemented #endif return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly))); |