From deepayan.sarkar at gmail.com  Sat Sep  1 04:39:17 2007
From: deepayan.sarkar at gmail.com (deepayan.sarkar at gmail.com)
Date: Fri, 31 Aug 2007 19:39:17 -0700
Subject: [Rd] Friday question: negative zero
In-Reply-To: <46D8B4A6.4040800@stats.uwo.ca>
References: <46D8B4A6.4040800@stats.uwo.ca>
Message-ID: <eb555e660708311939i6258529ej127673d688acc089@mail.gmail.com>



On 8/31/07, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> The IEEE floating point standard allows for negative zero, but it's hard
> to know that you have one in R.  One reliable test is to take the
> reciprocal.  For example,
> 
>  > y <- 0
>  > 1/y
> [1] Inf
>  > y <- -y
>  > 1/y
> [1] -Inf
> 
> The other day I came across one in complex numbers, and it took me a
> while to figure out that negative zero was what was happening:
> 
>   > x <- complex(real = -1)
>   > x
> [1] -1+0i
>   > 1/x
> [1] -1+0i
>   > x^(1/3)
> [1] 0.5+0.8660254i
>   > (1/x)^(1/3)
> [1] 0.5-0.8660254i
> 
> (The imaginary part of 1/x is negative zero.)
> 
> As a Friday question:  are there other ways to create and detect
> negative zero in R?
> 
> And another somewhat more serious question:  is the behaviour of
> negative zero consistent across platforms?  (The calculations above were
> done in Windows in R-devel.)

No, I get

> 1/ Im(1/complex(real = -1))
[1] Inf
> sessionInfo()
R version 2.6.0 Under development (unstable) (2007-08-16 r42532) 
x86_64-unknown-linux-gnu 

This is on an AMD 64, and I get -Inf on everything else I've tried so far, which are all Intel. 

-Deepayan



[Rd] Friday question: negative zero
deepayan.sarkar at gmail.com