The previous change to make the output with '(ABSOLUTE <N> ...)
authorStephen Adams <edu/mit/csail/zurich/adams>
Mon, 28 Jul 1997 18:19:05 +0000 (18:19 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Mon, 28 Jul 1997 18:19:05 +0000 (18:19 +0000)
commit34ec2b7a2b5c66ac64fefc3d0a7cca036d066bcd
treece2d8d74aff6548546d65f7c4f1db5c9304fa6b8
parent2e1b6e8745d344e7c07911187a16b9fe23865f0c
The previous change to make the output with '(ABSOLUTE <N> ...)
produce the correct number of digits for numbers with no significant
digits introduced problems with NORMAL rounded and ENGINEERING
formatted output.  All NORMAL rounded output for numbers of the form
ddd.ff were being output as "000.".  Some numbers formatted with
'(ABSOLUTE <N> ENGINEERING) looked like "000e-3".

This has been fixed by

  (1) setting the cutoff for NORMAL rounded numbers to be a value that
      will allow the digit production to run to completion
      (flo:significand-digits - 2).

  (2) adding special cases in the output procedures to deal with empty
      digit strings.

Currently:

Zero still prints as "0." by the initial sign/infinity/NaN dispatch.

Rounded output in NORMAL style for numbers with no significant digits
prints as "0." or "-0.".

Rounded output in SCIENTIFIC / ENGINEERING style for numbers with no
significant digits prints as "0eE" or "-0eE", e.g. "-0e3".

It might be preferable to keep "0." distinguished for zero, but I'm
not sure how for NORMAL formatted output.  (To my eyes, "0.0" looks
more `zero' than "0.", and ".0" implies a small magnitude.)

A small regression test has been appended in a comment to help avoid
problems in future.  Feel free to add tests.
v7/src/runtime/dragon4.scm