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 <ld7...@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,                  rip...@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

______________________________________________
R-help@r-project.org 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.

Reply via email to