[Glass] Negative infinity and positive infinity have the same sign

monty via Glass glass at lists.gemtalksystems.com
Fri Jan 27 10:49:39 PST 2017


Apparently there is also #signBit, which works for SmallFloats too, and because SmallDouble is immediate, you can also use #== with -0.0 after sending #asFloat (to convert non-floats, SmallFloats, and DecimalFloats).

The only backwards compatible approach I found for Pharo/Squeak is to use #at: on a zero float to test if its first (big-endian) word is non-zero.

> Sent: Thursday, January 26, 2017 at 3:10 PM
> From: "Martin McClure" <martin.mcclure at gemtalksystems.com>
> To: monty <monty2 at programmer.net>, glass at lists.gemtalksystems.com
> Subject: Re: [Glass] Negative infinity and positive infinity have the same sign
>
> 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
> 


More information about the Glass mailing list