[plt-scheme] Re: v300 on OpenBSD

From: Jed Davis (jdev at panix.com)
Date: Thu Feb 23 21:17:08 EST 2006

Jed Davis <jdev at panix.com> writes, mostly incorrectly:

> Matthew Flatt writes:
>> I don't know why the problem showed up only with OpenBSD (and
>> closely related systems).
> Luck, apparently.  The value of the integer returned-by-pointer from
> frexp is, according to both the Open Group and a comment in FreeBSD's
> source, unspecified in the case of infinity or NaN.  FreeBSD chooses
> to leave the value unchanged from what it was on entry, while the
> implementation used in NetBSD and OpenBSD will set it to 0.

Well, no.  The source file I was looking at (lib/libm/src/s_frexp.c)
isn't used; instead, a different one in libc (!) is; OpenBSD and
FreeBSD use one implementation there and NetBSD another (which latter
was broken for denormalized numbers until two days ago, but that's
beside the point), and neither of them set *exp on inf/nan.

Glibc, however, does set *exp to 0.  The world makes more sense now,
because non-pure-functional hash functions are clearly bad.

(let ((C call-with-current-continuation)) (apply (lambda (x y) (x y)) (map
((lambda (r) ((C C) (lambda (s) (r (lambda l (apply (s s) l))))))  (lambda
(f) (lambda (l) (if (null? l) C (lambda (k) (display (car l)) ((f (cdr l))
(C k)))))))    '((#\J #\d #\D #\v #\s) (#\e #\space #\a #\i #\newline)))))

Posted on the users mailing list.