[R] Precision level

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Mar 26 08:22:59 CET 2010


On Fri, 26 Mar 2010, Rolf Turner wrote:

>
> On 26/03/2010, at 12:38 PM, jim holtman wrote:
>
>> WHen using '==' or '%in%' it is a equality test -- it has to equal zero.  If
>> you want a tolerance in the test, use 'all.equal'
>>
>> On Thu, Mar 25, 2010 at 5:29 PM, Dimitri Liakhovitski <ld7631 at gmail.com>wrote:
>>
>>> Hello!
>>>
>>> I am wondering at what point does R consider a numeric value to be
>>> equal to zero - for statements of the type x==0 and x %in% 0.
>>>
>>> Thank you very much!
>
>
> There is still perhaps a question to be answered here.  One can key in
> a representation of a number, different from ``0'' and yet get a value
> deemed to be 0 by the machine.
>
> E.g. on my machine
>> 1e-324 == 0
> [1] TRUE
>> 1e-323 == 0
> [1] FALSE
>
> The question of where the line is drawn is probably ill-posed or meaningless
> or something like that.  It's not clear to me what the issues are.  Also the
> answer, if there is a meaningful one, is likely to be machine dependent rather
> than R dependent.

Nope, for OSes whose runtimes use the IEC 60559 standard (almost all 
of them, as these functions are mainly done in the FPU).

The smallest normalized non-zero double is

> .Machine$double.xmin
[1] 2.225074e-308

For numbers smaller than that there is gradual overflow to zero via 
denormalized numbers.

The general principle is that when a number if parsed, the closest 
representable double is used: and for "1e-324" that is zero.

>
> 	cheers,
>
> 		Rolf Turner


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list