GNU bug report logs - #14865
flmax and flmin do not handle +nan.0 correctly

Previous Next

Package: guile;

Reported by: Göran Weinholt <goran <at> weinholt.se>

Date: Mon, 15 Jul 2013 11:15:03 UTC

Severity: normal

Done: Mark H Weaver <mhw <at> netris.org>

Bug is archived. No further changes may be made.

Full log


Message #10 received at 14865-done <at> debbugs.gnu.org (full text, mbox):

From: Mark H Weaver <mhw <at> netris.org>
To: Göran Weinholt <goran <at> weinholt.se>
Cc: 14865-done <at> debbugs.gnu.org
Subject: Re: bug#14865: flmax and flmin do not handle +nan.0 correctly
Date: Tue, 16 Jul 2013 05:27:30 -0400
Göran Weinholt <goran <at> weinholt.se> writes:

> the flmax and flmin procedures from (rnrs) do not handle +nan.0
> correctly:
>
> scheme@(guile-user)> (import (rnrs))
> scheme@(guile-user)> (flmax +inf.0 +nan.0)
> $1 = +inf.0
> scheme@(guile-user)> (flmin -inf.0 +nan.0)
> $2 = -inf.0
>
> The result should be +nan.0. From r6rs-lib: "They always return a NaN
> when one or more of the arguments is a NaN."

Indeed.  I had actually carefully implemented 'min' and 'max' according
to R6RS section 11.7.4 (Numerical operations), which states:

   For any real number object x:
     (max +inf.0 x) => +inf.0
     (min -inf.0 x) => -inf.0

and section 3.5 states that NaNs are real number objects.

At first I was baffled by the inconsistency between min/max and
flmin/flmax, but now I see that the R6RS errata corrected this:

   The examples for min and max involving infinities should be prefixed by:
   "For any real number object x /that is not a NaN/:"

Fixed in b4c55c9ccedd47c16007b590f064ef3bd67565aa.

    Thanks!
      Mark




This bug report was last modified 12 years and 8 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.