diff options
author | Eric Andersen <andersen@codepoet.org> | 2003-09-01 15:00:54 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2003-09-01 15:00:54 +0000 |
commit | 557ea04ce0e505c98d4b6852b194d7ed06fe8289 (patch) | |
tree | 0fc0a3a14016dd917d5174e1a355f6ba76a2f508 /libm/fp_private.h | |
parent | e4668543352aa58a0aaa03fe9624daa75fd6da34 (diff) |
Atsushi Nemoto writes:
I found math fpclassify function is broken because FP_XXX definitions
in libm/fp_private.h is incompatible with include/math.h.
Also I noticed fp_private.h and fpmacros.c use many 'long int' for
32bit variables. I think these should be int or u_int32_t.
Here is a patch against 0.9.20.
fp_private.c:
--- fix union members (use u_int32_t instead of 'unsigned long int').
--- remove incompatible FP_XXX definitions (and some unused macros).
fpmacros.c:
--- use FP_NAN instead of FP_QNAN/FP_SNAN.
--- use correct type (int instead of long int).
--- fix union members (use u_int32_t instead of 'unsigned long int').
--- remove unnecessary cast.
Note that I had to remove weak_alias for isnanl,isinfl to compile
patched fpmacroc.c. Is this really needed? Original behavior (using
isnan for isnanl) seems problematic anyway.
Diffstat (limited to 'libm/fp_private.h')
-rw-r--r-- | libm/fp_private.h | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/libm/fp_private.h b/libm/fp_private.h index 30b3e0572..97b3b5703 100644 --- a/libm/fp_private.h +++ b/libm/fp_private.h @@ -72,11 +72,11 @@ typedef struct /* Hex representation of a double. */ { #if defined(__BIG_ENDIAN__) - unsigned long int high; - unsigned long int low; + u_int32_t high; + u_int32_t low; #else - unsigned long int low; - unsigned long int high; + u_int32_t low; + u_int32_t high; #endif } dHexParts; @@ -85,28 +85,3 @@ typedef union unsigned char byties[8]; double dbl; } DblInHex; - -//enum boolean { FALSE, TRUE }; - -/******************************************************************************* -* Macros to access long subfields of a double value. * -*******************************************************************************/ - -#define highpartd(x) *((long *) &x) -#define lowpartd(x) *((long *) &x + 1) - -enum { - FP_SNAN = 0, /* signaling NaN - */ - FP_QNAN = 1, /* quiet NaN - */ - FP_INFINITE = 2, /* + or - infinity - */ - FP_ZERO = 3, /* + or - zero - */ - FP_NORMAL = 4, /* all normal numbers - */ - FP_SUBNORMAL = 5 /* denormal numbers - */ -}; - |