[squeak-dev] Fwd: [Glass] Negative infinity and positive infinity have the same sign

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Fri Jan 27 08:38:11 UTC 2017


Mind the title, it's positive zero, not infinity :)


2017-01-27 8:42 GMT+01:00 <Das.Linux at gmx.de>:

> Hi
>
> On 27.01.2017, at 08:37, Tobias Pape <Das.Linux at gmx.de> wrote:
>
> > Hi all,
> >
> > it seems, we also suffer from this bug:
> >
> > { 0 sign.
> > 0.0 sign.
> > -0 sign.
> > -0.0 sign.
> > }
> > "=>  #(0 0 0 -1)"
>
> PS: why bug?
>

It's a bug because it is against ANSI smalltalk, and because it creates
small incompatibilities with gemstone unecessarily.
I have a patch ready for squeak.

IEEE-754 says that 0.0 and -0.0 are equal and equal numbers have same sign,
> but for us
>
>         (0.0 = -0.0) ==> (0.0 sign = -0.0 sign)
>
> is false, while it should be true.
>
>
More exactly, the logic is rather: the sign of zero is zero.
Float negativeZero value cannot be distinguished from zero, so it is zero,
and sign should be zero.

But we can still have another message like signBit immune to this logic.

>
> > Begin forwarded message:
> >
> >> From: Martin McClure via Glass <glass at lists.gemtalksystems.com>
> >> Subject: Re: [Glass] Negative infinity and positive infinity have the
> same sign
> >> Date: 26. Januar 2017 21:10:32 MEZ
> >> To: monty <monty2 at programmer.net>, glass at lists.gemtalksystems.com
> >> Reply-To: Martin McClure <martin.mcclure at gemtalksystems.com>
> >> Delivered-To: glass at mail.commonhouse.net
> >>
> >> On 01/25/2017 12:45 PM, monty via Glass wrote:
> >>> On 3.3.0, "-0.0 sign = 0.0 sign". On Pharo, "-1 sign = -1", "-0.0 sign
> = -1", "0.0 sign = 0", and "1 sign = 1". IEEE Standard 754 mandates that
> negative zero have the same sign bit as a negative number.
> >>> _______________________________________________
> >> Hi Monty,
> >>
> >> The ANSI Smalltalk standard says that #sign should answer 0 if "the
> >> receiver equals zero". This agrees with ISO/IEC 10967 Portable Numerics
> >> standard, which says the same thing. The IEEE 754 spec does not specify
> >> a "sign" operation. The closest equivalent I see is the "isSignMinus"
> >> operation. We don't currently have that message in GemStone, but we
> >> might add it. In GemStone, you can distinguish positive and negative
> >> zero by sending #_sign.
> >>
> >> Pharo's implementation seems very odd. It looks like it's been that way
> >> a long time (John Maloney in 1998?) but the comment contradicts itself.
> >> It says
> >> "Answer 1 if the receiver is greater than 0, -1 if less than 0, else 0.
> >>   Handle IEEE-754 negative-zero by reporting a sign of -1"
> >>
> >> But negative zero *is* equal to 0, so it claims to be answering both 0
> >> and -1 for -0.0. Leaving that aside, it's disturbingly asymmetric to
> >> answer 0 for 0.0 but -1 for -0.0.
> >>
> >> Regards,
> >>
> >> -Martin
> >> _______________________________________________
> >> Glass mailing list
> >> Glass at lists.gemtalksystems.com
> >> http://lists.gemtalksystems.com/mailman/listinfo/glass
> >
> >
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20170127/cf6a1309/attachment.html>


More information about the Squeak-dev mailing list