[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] Padding/placeholders (hashes) in numerical syntax
On 08/16/2011 02:17 PM, John Cowan wrote:
> Per Bothner scripsit:
>>> But in Racket (eqv? 1.0f0 1.0e0) returns #t and
>>> so does (= (/ 1.0f0 3.0f0) (/ 1.0e0 3.0e0)).
>> Kawa correctly returns #f for both of these.
> That is, correctly for R6RS, incorrectly for R5RS. The two
> standards are incompatible here.
I did not say "correctly for R6RS" or "correctly for R5RS".
I say "correctly" - in the sense of As It Should Be.
However, if Obj1 is 1.0f0 and Obj2 is 1.0e0, which are floating-point
numbers with different precisions, then I would expect this to apply:
Obj1 and obj2 yield different results (in the sense of
eqv?) when passed as arguments to any other procedure
that can be defined as a finite composition of
Scheme’s standard arithmetic procedures.
> Similarly, an extended R5RS
> that supports NaN must have (eqv? +nan.0 +nan.0) return #t,
> whereas in R6RS I think it must (and certainly may) return #f.
My reading of R6RS suggests "may" is the case. Regardless, the lack of
specification is a bug in R6RS, which I hope R7RS will fix.
(eqv? +nan.0 +nan.0) ==> #t is the only result that is compatible
with "the spirit" of eqv? as I understand it.
Scheme-reports mailing list