[comp.sys.nsc.32k] Floating point colons, estdio, and frexp.

sverre@lev.Seri.GOV (Sverre Froyen) (03/18/91)

I am puzzled.  Trying to track down the cause of colons `:'
in some of the floating point numers output from the compiler
I made the following change to frexp.c (I am using estdio and
the libfp.a I posted):

*** 1.1	1991/03/12 20:05:28
--- frexp.c	1991/03/15 20:49:16
***************
*** 16,23 ****
  	sign = value.s[S_MS] & SIGN_MASK;
  	value.s[S_MS] &= ~SIGN_MASK;
  
! 	/* Check for zero */
! 	if (value.l[L_MS] == 0 && value.l[L_LS] == 0) {
  		*exp = 0;
  		value.s[S_MS] = sign;
  	}
--- 16,25 ----
  	sign = value.s[S_MS] & SIGN_MASK;
  	value.s[S_MS] &= ~SIGN_MASK;
  
! 	/* Check for zero exponent (no denormalized numbers) */
! 	if ((value.s[S_MS] & EXP_MASK) == 0) {
! 		value.l[S_MS] = 0L;
! 		value.l[L_LS] = 0L;
  		*exp = 0;
  		value.s[S_MS] = sign;
  	}

That is, instead of checking just for zeros, I decided to check
for zeros and denormalized numbers.  This caused the following error
message when compiling libm.a (no colons this time):

cc -O -DNATIONAL -c erf.c
cc: Program cc1 got fatal signal 10.
make: Error code 256

I then decided to print-out value.l[L_MS] and value.l[L_LS] in
frexp inside the if statement (just before they are zeroed).
This resulted in several 0x0 0x0 pairs when compiling erf.c which
now compiled without errors.

I then thought this might be a compiler bootstrap problem so
I removed the print statement and relinked the compiler.
The signal 10 error message reappeared.

Ideas anyone?

Sverre
-- 
Sverre Froyen
sverre@seri.gov, sunpeaks!seri!sverre