I can't answer the question about underflow. But if you don't mind
installing a nightly build of Racket, you get the (currently
undocumented) module `unstable/flonum', which exports these:
flonum-bit-field
bit-field-flonum
flonum-ordinal; number of flonums away from 0 (+ or -)
ordinal-flonum
flstep; the flonum n steps away (by ordering fl)
flnext; next largest flonum (by ordering fl)
flprev; next smallest flonum (by ordering fl)
-max.0; negative flonum with greatest non-infinite magnitude
-min.0; negative flonum with smallest nonzero magnitude
+min.0; positive flonum with smallest nonzero magnitude
+max.0; positive flonum with greatest non-infinite magnitude
Also, the `plot' module in the nightly build deals just fine with
intervals that are too small to represent using flonums. For example, to
illustrate floating-point discretization and the density of flonums at
different ranges:
#lang racket
(require plot unstable/flonum)
(plot (function (λ (x) (inexact-exact (sin x)))
(flstep 0.0 -10) (flstep 0.0 10)))
(- (flonum-ordinal 1.0) (flonum-ordinal 0.0))
(- (flonum-ordinal 2.0) (flonum-ordinal 1.0))
(- (flonum-ordinal 3.0) (flonum-ordinal 2.0))
(- (flonum-ordinal +max.0) (flonum-ordinal 1.0))
(parameterize ([plot-x-ticks (log-ticks #:base 2)])
(plot (function (compose flonum-ordinal exact-inexact) 1.0 8.0)))
Neil T
On 11/29/2011 09:32 AM, J. Ian Johnson wrote:
I'm currently proctoring the freshmen's lab on inexact numbers and was curious
how to denote subnormal numbers in Racket.
Turns out that's not possible, since there is no underflow. Why does Racket
follow the old standard of representing underflow with inexact zero?
I imagine changing it now would break a lot of code, but I'm just curious.
-Ian
_
For list-related administrative tasks:
http://lists.racket-lang.org/listinfo/dev
_
For list-related administrative tasks:
http://lists.racket-lang.org/listinfo/dev