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.