Hi Sundar
thanks for this. But I didn't make it clear that I'm interested in extreme numbers such as 1e300 and 1e-300. Then > f(1e300) [1] 7.911257e+283 is different from 1e300*.Machine$double.eps [I'm interested in the gap between successive different exactly representable numbers right across the IEEE range] rksh On 11 Sep 2006, at 10:50, Sundar Dorai-Raj wrote: > > > Robin Hankin said the following on 9/11/2006 3:52 AM: >> Hi >> Given a real number x, I want to know how accurately R can >> represent numbers near x. >> In particular, I want to know the infimum of exactly representable >> numbers greater than x, and the supremum of exactly representable >> numbers >> less than x. And then the interesting thing is the difference >> between these two. >> I have a little function that does some of this: >> f <- function(x,FAC=1.1){ >> delta <- x >> while(x+delta > x){ >> delta <- delta/FAC >> } >> return(delta*FAC) >> } >> But this can't be optimal. >> Is there a better way? > > I believe this is what .Machine$double.eps is. From ?.Machine > > double.eps: the smallest positive floating-point number 'x' such that > '1 + x != 1'. It equals 'base^ulp.digits' if either 'base' > is 2 or 'rounding' is 0; otherwise, it is > '(base^ulp.digits) > / 2'. > > See also .Machine$double.neg.eps. Is this what you need? > > --sundar -- Robin Hankin Uncertainty Analyst National Oceanography Centre, Southampton European Way, Southampton SO14 3ZH, UK tel 023-8059-7743 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.