[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Wrapping up SRFI-70



 | Date: Mon, 15 Aug 2005 09:38:34 -0700
 | From: Per Bothner <per@xxxxxxxxxxx>
 | 
 | Aubrey Jaffer wrote:
 | > I believe that the junking of 0/0 makes SRFI-70 compatible with
 | > IEEE-754.  Do you agree?
 | 
 | It's a bit awkward.  The syntax 0/0 suggests 0/0 is exact.
 | The 0/0 syntax is extra awkward for an implementation that
 | defines 1/0 and -1/0 as exact infinities, as Kawa does.

SRFI-70 specifies no Scheme notation for 0/0.  It is used in the
Specification to stand for a numeric error-object (or violation of
implementation restriction).

 | (Exact infinites are an experimental addition in Kawa  I won't claim
 | they're terribly well-specified or justified.  I think they can be
 | useful in some situation, such as sentinel values.)
 | 
 | I did find some discrepencies between your specification and Kawa:
 | 
 | #|kawa:21|# (define neg-inf (/ -1.0 0.0))
 | #|kawa:22|# neg-inf
 | #i-1/0
 | #|kawa:23|# (log neg-inf)
 | #i1/0+3.141592653589793i
 | #|kawa:26|# (sqrt neg-inf)
 | #i+1/0i
 | 
 | Kawa allows complex numbers with infinite components.
 | Whether this is "correct" or accidental I don't know.

Non-real numbers with infinite components would all be SRFI-70
error-objects.  But SRFI-70 needs to be clearer about this.

 | Also I got:
 | 
 | #|kawa:30|# (angle neg-inf)
 | 0

The result should be pi, the same as (angle -1).

 | #|kawa:29|# (angle inf)
 | 0

If inf is inexact, then (angle inf) should be 0.0