Numbers with small mantissa widths Marc Nieper-Wißkirchen (27 Aug 2024 08:46 UTC)
Re: Numbers with small mantissa widths Michael Sperber (28 Aug 2024 14:18 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (28 Aug 2024 08:08 UTC)
Re: Numbers with small mantissa widths Michael Sperber (28 Aug 2024 15:14 UTC)
Re: Numbers with small mantissa widths Will Clinger (28 Aug 2024 15:12 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (28 Aug 2024 15:27 UTC)
Re: Numbers with small mantissa widths Will Clinger (28 Aug 2024 18:21 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (28 Aug 2024 21:09 UTC)
Re: Numbers with small mantissa widths Will Clinger (29 Aug 2024 04:45 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (29 Aug 2024 11:53 UTC)
Re: Numbers with small mantissa widths Will Clinger (29 Aug 2024 15:25 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (29 Aug 2024 15:57 UTC)
Re: Numbers with small mantissa widths Will Clinger (29 Aug 2024 19:21 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (31 Aug 2024 20:02 UTC)
Re: Numbers with small mantissa widths Will Clinger (01 Sep 2024 01:43 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (02 Sep 2024 15:57 UTC)
Re: Numbers with small mantissa widths Will Clinger (02 Sep 2024 23:48 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (03 Sep 2024 16:45 UTC)
Re: Numbers with small mantissa widths Bradley Lucier (04 Sep 2024 01:30 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (04 Sep 2024 06:11 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (04 Sep 2024 14:03 UTC)
Re: Numbers with small mantissa widths Will Clinger (13 Sep 2024 12:49 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (14 Sep 2024 09:43 UTC)
Re: Numbers with small mantissa widths Will Clinger (13 Sep 2024 12:50 UTC)
Re: Numbers with small mantissa widths Michael Sperber (29 Aug 2024 13:56 UTC)
Re: Numbers with small mantissa widths Marc Nieper-Wißkirchen (29 Aug 2024 11:38 UTC)

Re: Numbers with small mantissa widths Will Clinger 28 Aug 2024 16:58 UTC

On Wed, Aug 28, 2024, at 8:27 AM, Marc Nieper-Wißkirchen wrote:
> If those "loopholes" are interpreted in the way you do here, what is
> the actual meaning of x|p then?  Adding an explicit mantissa width
> becomes somewhat meaningless when an implementation is allowed to
> ignore it in any case.

You appear to be assuming there is some objective "actual meaning
of x|p".  In my opinion, the purpose and specification of that notation
has never been defined so well as to create an objectively actual
meaning.

> Moreover, interpreting those loopholes in that way seems to confound
> the meaning of the various exponent marks (s, f, d, l) with the meaning
> of the explicit mantissa width.

The meanings of those exponent markers are implementation-dependent
as well, but it seems to me their meanings are more well-defined than the
meaning of the x|p notation.

> Maybe we can simplify the discussion by looking at exact numbers where
> any machine floating point representation does not play a role.
>
> The sentence
>
> "A representation of a number object with nonempty mantissa width, x
> |p, represents the best binary floating-point approximation of x using
> a p-bit significant."
>
> from R6RS implies that
>
> #e0.1|1
>
> denotes the number 1/8.  (And applying the inexact procedure to that
> number gives 0.125 regardless of any specific machine floating-point
> format.)

I disagree with your interpretation.  It seems to me that "the best binary
floating-point approximation of x" will depend upon specifics of the
floating-point system adopted by an implementation, and that the sentence
as written gives priority to that implementation-dependent choice of floating
point approximations ahead of the "using a p-bit [significand]" phrase, which
appears to me to have been an unsuccessful attempt to add some too-little,
too-late qualification to the implementation-dependent choice of floating point
that has already been implied by the phrase that precedes it.

> Chez Scheme, however, evaluates #e0.1|1 to 1/10.

One could argue that is a bug.  On the other hand, one could argue that
pretending it is possible to convert an ambiguous and poorly specified
notation such as 0.1|1 into an unambiguous and well-specified notation
by prefixing it with #e is folly.  The #e can't undo the ambiguity and poor
specification of a notation that follows it.

In summary, I think the x|p notation is a classic example of how attempts
to over-specify relatively unimportant corner cases for the purpose of
improving compatibility between implementations often create even more
opportunities for incompatibility between implementations.  If not for the
existence of the x|p notation, someone who wants to write the number 1/8
would simply write 1/8 or #e0.125 or .125 (depending on the desired property
of exactness), and there would be no question as to what is meant.

Will