descriptionR6RS says:
0.0^z^ is 1.0 if z = 0.0, and 0.0 if (real-part z) is positive. For other cases in which the first argument is zero, either an exception is raised with condition type &implementation-restriction, or an unspecified number object is returned.
R5RS specifies behavior that is simply incorrect for z with negative real part: 0^z^ is 1 if z = 0 and 0 otherwise.
I tested the usual suite on `(expt 0.0 0.0)` `(expt 0.0 2)`, and `(expt 0.0 -2)`:
Conforming implementations:
Racket, Gauche, Gambit, Chicken (with and without the numbers egg), Bigloo, Kawa, Chibi, Chez, SCM, !Ikarus/Vicare, Ypsilon, Mosh, NexJ, STklos, KSi, RScheme, XLisp, Rep, VX, SXM, Spark, Inlab return `1.0`, `0.0`, and `+inf.0`.
Guile, Larceny return `1.0`, `0.0`, and `+nan.0`.
SISC, !IronScheme, Elk return `1.0`, `0.0`, and `0.0`.
UMB returns `1.0`, `0.0`, and an exception.
Non-conforming implementations:
Scheme48, BDC return an exception, `0.0`, and `+inf.0`.
Scsh returns `-nan.0`, `0.0`, and an exception.
Scheme 7 returns `0.0`, `0.0`, and an exception.
Scheme 9 returns exact `0`, `0.0`, and `+nan.0`.
Elk returns exact `1`, exact `0`, and exact `0`.
!SigScheme, Shoe, !TinyScheme, Dream, Schemik, Oaklisp, Owl Lisp don't support inexact `expt`.
I still don't know how to turn off floating-point traps in MIT.
R6RS says:
0.0^z^ is 1.0 if z = 0.0, and 0.0 if (real-part z) is positive. For other cases in which the first argument is zero, either an exception is raised with condition type &implementation-restriction, or an unspecified number object is returned.
R5RS specifies behavior that is simply incorrect for z with negative real part: 0^z^ is 1 if z = 0 and 0 otherwise.
I tested the usual suite on `(expt 0.0 0.0)` `(expt 0.0 2)`, and `(expt 0.0 -2)`:
Conforming implementations:
Racket, Gauche, Gambit, Chicken (with and without the numbers egg), Bigloo, Kawa, Chibi, Chez, SCM, !Ikarus/Vicare, Ypsilon, Mosh, NexJ, STklos, KSi, RScheme, XLisp, Rep, VX, SXM, Spark, Inlab return `1.0`, `0.0`, and `+inf.0`.
Guile, Larceny return `1.0`, `0.0`, and `+nan.0`.
SISC, !IronScheme, Elk return `1.0`, `0.0`, and `0.0`.
UMB returns `1.0`, `0.0`, and an exception.
Non-conforming implementations:
Scheme48, BDC return an exception, `0.0`, and `+inf.0`.
Scsh returns `-nan.0`, `0.0`, and an exception.
Scheme 7 returns `0.0`, `0.0`, and an exception.
Scheme 9 returns exact `0`, `0.0`, and `+nan.0`.
Elk returns exact `1`, exact `0`, and exact `0`.
MIT returns an exception, `0.0`, and another exception.
!SigScheme, Shoe, !TinyScheme, Dream, Schemik, Oaklisp, Owl Lisp don't support inexact `expt`.