Re: [Rd] Friday question: negative zero

From: Steven McKinney <smckinney_at_bccrc.ca>
Date: Fri, 31 Aug 2007 19:00:15 -0700

Seems the same on this Apple Mac OSX platform:

> y <- 0
> 1/y
[1] Inf
> y <- -y
> 1/y
[1] -Inf
> 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

> sessionInfo()

R version 2.5.1 (2007-06-27)
powerpc-apple-darwin8.9.1

locale:
en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8

attached base packages:
[1] "stats" "graphics" "grDevices" "utils" "datasets" "methods" "base"
> system("uname -a")

Darwin Dapple.local 8.10.0 Darwin Kernel Version 8.10.0: Wed May 23 16:50:59 PDT 2007; root:xnu-792.21.3~1/RELEASE_PPC Power Macintosh powerpc
> version

               _                           
platform       powerpc-apple-darwin8.9.1   
arch           powerpc                     
os             darwin8.9.1                 
system         powerpc, darwin8.9.1        
status                                     
major          2                           
minor          5.1                         
year           2007                        
month          06                          
day            27                          
svn rev        42083                       
language       R                           
version.string R version 2.5.1 (2007-06-27)

Steven McKinney

-----Original Message-----
From: r-devel-bounces_at_r-project.org on behalf of Duncan Murdoch Sent: Fri 8/31/2007 5:39 PM
To: R Devel
Subject: [Rd] Friday question: negative zero  

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

Duncan Murdoch



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Sat 01 Sep 2007 - 08:26:38 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sat 01 Sep 2007 - 08:40:01 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.