Bug fixes:
authorStephen Adams <edu/mit/csail/zurich/adams>
Thu, 10 Jul 1997 09:25:06 +0000 (09:25 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Thu, 10 Jul 1997 09:25:06 +0000 (09:25 +0000)
commitb1acd1ac40d83305d0fbebba3a96e4508c9f26fd
treedaca00be9ad335e8ce1a081c611aaa6e1a5ec72f
parent6695286ffb887a994f3b06956625ebae02861c7b
Bug fixes:

  . "1/"  returns #F instead of signalling divide by zero.

  . "1.2345e-306" and "1e-400" with FLONUM-PARSER-FAST? true no longer
     signal arithmetic errors.

  . STRING->NUMBER and SUBSTRING->NUMBER now check their arguments

Other changes: FINISH-REAL now exploits the fact that some integers
have exact floating point representations and so flonum arithmetic can
be used to compute the correct result.  Note that to maintain
correctness, i*10^-e must be calculated as i/10^e.  The results are a
modest improvement on free-formatted random flonums (typically 16
digit) in the range 1e-7 to 1e35:

Times for 10000 flonums generated by (random range)

range 1e-100 1e-10 1e-5 1. 1e5 1e10 1e35 1e40
old 10180 8200 8210 7490 5610 3970 3990 4030
new 10280 8350 4690 4390 3930 3230 3180 4170

With FLONUM-PARSER-FAST? true, using the division trick gives better
error rates over a larger range.  Number of errors in 10000 random
flonums

range 1e-20 1e-10 1e-6 1. 1e10 1e20 1e35 1e40
old 3573 2400 3309 2798 3025  685  722 2730
new 2594 2778 1907 1010  761  685  772 2730
v8/src/runtime/make.scm