On Mon, Jun 18, 2012 at 02:26:41PM -0700, whf1984911 wrote: > Hi, > > This problems has bothered me for the lase couple of hours. > > > 1e-100==0 > [1] FALSE > > (1-1e-100)==1 > [1] TRUE > > How can I tell R that 1-1e-100 does not equal to 1, actually, I found out > that > > (1-1e-16)==1 > [1] FALSE > > (1-1e-17)==1 > [1] TRUE
Hi. The smallest eps, such that 1 - eps is not equal 1 in computer arithmetic (double precision) is 2^-53, since the numbers are represented with 53 bits precision. 1 - 2^-53 == 1 [1] FALSE > The reason I care about this is that I was try to use qnorm() in my code, > for example, > > > qnorm(1e-100) > [1] -21.27345 > > and if I want to find qnorm(x) where x is very close to 1, say x=1-1e-100, > then you would think using > qnorm(1-x, lower.tail=F) would give me something other than INF, but that > does not work since R would recognize x==1 in this case and therefore, > 1-x==0, so qnorm(1-x, lower.tail=F) will give me INF which is what I try to > avoid in my code. Function qnorm(x) satisfies the identity qnorm(x) = - qnorm(1-x). So, -qnorm(1e-100) may be used instead of qnorm(1-1e-100). Hope this helps. Petr Savicky. ______________________________________________ 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.