realroots



 There is an argument to be made that numbers that fall off the scale for
floats, on input, should automatically be parsed into bfloats.  That is,
1.0e-500 should become a bfloat.
This would not avoid the numerical underflow that happens in the midst of
computation, but it avoids the case of someone being surprised when
rat(1.0e-500) is 0.  Mathematica does something like this, trying (not
completely successfully) to smooth the transition between machine and
software floats.

Maybe the simplest thing to do is to have every float input be read in as a
bigfloat, and then if it looks like it fits into a double float and that's
what the user requested (e.g. 1.0d3, not 1.0b3), convert it down. Maybe
$fpprec would have to be set at least at some minimum.

The place to change would be in nparse.lisp near line 460.

RJF