[R] exactly representable numbers

Robin Hankin r.hankin at noc.soton.ac.uk
Mon Sep 11 12:15:04 CEST 2006


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



More information about the R-help mailing list