MIT Scheme now has support for positive and negative infinities and for signaling (the default) and non-signaling NaNs.
The printed representations are #[+inf], #[-inf], and #[NaN], and are not readable.
To disable signaling: (flo:ignoring-exception-traps thunk). For example:
(flo:ignoring-exception-traps (lambda () (let* ((i (* 1.0e200 1.0e200)) (n (- i i))) (list i (- i) n)))) ;Value 13: (#[+inf] #[-inf] #[NaN])These procedures are available for manipulating the floating-point environment:
flo:nan? flo:raise-exceptions! flo:restore-exception-flags! flo:rounding-mode flo:rounding-modes flo:save-exception-flags flo:set-environment! flo:set-rounding-mode! flo:set-trapped-exceptions! flo:significand-digits-base-2 flo:significand-digits-base-10 flo:supported-exceptions flo:test-exception-flags flo:test-exceptions flo:trap-exceptions! flo:trappable-exceptions flo:trapped-exceptions flo:untrap-exceptions! flo:update-environment! flo:with-default-environment flo:with-exceptions-trapped flo:with-exceptions-untrapped flo:with-rounding-mode flo:with-trapped-exceptions