This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki Nan version 3

author

cowan

comment


    

ipnr

198.185.18.207

name

Nan

readonly

0

text

== R6RS ==

These are the R6RS examples involving !NaNs (already accounted for verbally in the "Implementation extensions" section of R7RS):

{{{
(number? +nan.0)   => #t ; NaN is real but not rational
(complex? +nan.0)  => #t
(real? +nan.0)     => #t
(rational? +nan.0) => #f

                         ; NaN compares #f to anything
(= +nan.0 z)       => #f where z numeric
(< +nan.0 x)       => #f where x real
(> +nan.0 x)       => #f where x real

(zero? +nan.0)     => #f ; NaN is unsigned
(positive? +nan.0) => #f
(negative? +nan.0) => #f

                         ; NaN is mostly sticky
(* 0 +inf.0)       => 0 or +nan.0
(* 0 +nan.0)       => 0 or +nan.0
(+ +nan.0 x)       => +nan.0 where x real
(* +nan.0 x)       => +nan.0 where x real and not exact 0

                         ; Sum of +inf.0 and -inf.0 is NaN
(+ +inf.0 -inf.0)  => +nan.0
(- +inf.0 +inf.0)  => +nan.0

                         ; 0/0 is NaN unless both 0s are exact
(/ 0 0.0) => +nan.0
(/ 0.0 0) => +nan.0
(/ 0.0 0.0) => +nan.0

(round +nan.0)     => +nan.0 ; Nan rounds (etc.) to NaN

(rationalize +inf.0 +inf.0) => +nan.0 ; Rationalizing infinity to nearest infinity is NaN
}}}

== Implementations ==

=== `(eqv +nan.0 +nan.0)` ===

The following 8 implementations return #t: Chez, Gambit, Guile, !Ikarus/Vicare, Kawa, Larceny, Racket, STklos.

The following 6 implementations return #f: Bigloo, Chibi, Chicken, Gauche, MIT Scheme, Scheme48.

=== `-nan.0` ===

Racket, Gauche, MIT,
Chicken, Guile, Chez, Ikarus, Larceny, Ypsilon, STklos all support
`+nan.0` and `-nan.0` as equivalent forms.  Bigloo, Scheme48/scsh,
SISC, SCM, Scheme 9 don't support either form.  Gambit and Chibi
support `+nan.0` but not `-nan.0`.

time

2012-05-17 03:53:44

version

3