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

Das.Linux at gmx.de Das.Linux at gmx.de
Fri Jan 27 07:42:15 UTC 2017


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?
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.


> 
> 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
> 
> 



More information about the Squeak-dev mailing list