| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
on big endian mips the code is compiled as little-endian and the wrong half of
the 64-bit point value is examined to check for NaN, etc. This bug also broke
fpclassify(), isfinite(), isnormal(), isinf(), finite(), and signbit().
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
math library (which is itself based on the math lib from FreeBSD).
-Erik
|