sverre@lars.Seri.GOV (Sverre Froyen) (05/10/91)
This ONLY applies to the libfp.a floating point library that I sent out with my estdio diffs. If you do not use this library you can IGNORE this posting. I finally got around to solving the problem with illegal floating point constants in the assembly code from cc1. It was caused by an oversight (mine) in frexp regarding denormalized numbers. Here is a new frexp.c which seems to work. -- Sverre Froyen sverre@seri.gov, sunpeaks!seri!sverre #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: frexp.c # Wrapped by sverre@lars on Fri May 10 09:43:15 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f frexp.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"frexp.c\" else echo shar: Extracting \"frexp.c\" \(751 characters\) sed "s/^X//" >frexp.c <<'END_OF_frexp.c' X/* X * Return mantissa in range [0.5,1), store exponent. X */ X X#include "flt.h" X Xdouble Xfrexp (double invalue, int *exp) X{ X _double value; X short sign; X X value.d = invalue; X X /* Extract and zero sign */ X sign = value.s[S_MS] & SIGN_MASK; X value.s[S_MS] &= ~SIGN_MASK; X X /* Check for zero exponent (no denormalized numbers) */ X if ((value.s[S_MS] & EXP_MASK) == 0) { X value.l[L_MS] = 0L; X value.l[L_LS] = 0L; X *exp = 0; X value.s[S_MS] = sign; X } X else { X /* Extract exponent and subtract bias */ X *exp = ((value.s[S_MS] & EXP_MASK) >> EXP_SHIFT) - (EXP_BIAS-1); X X /* Set exponent to -1 (biased) */ X value.s[S_MS] &= ~EXP_MASK; X value.s[S_MS] |= (EXP_BIAS-1) << EXP_SHIFT; X X /* Restore sign */ X value.s[S_MS] |= sign; X } X return value.d; X} END_OF_frexp.c if test 751 -ne `wc -c <frexp.c`; then echo shar: \"frexp.c\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of shell archive. exit 0