On Fri, 14 Dec 2001, Cowpertwait, Paul wrote:
> .. the round function seems to get round it (excuse the pun):
>
> > round(gamma(21)/(gamma(6)*gamma(16))) == round(choose(20,5))
> [1] TRUE
>
> So I presume the problem is related to gamma being a real function.
> However, I'm still not sure why there's a break from TRUE to FALSE
for
> certain values. Any comments would be appreciated!
It's rounding error: == is *not* a sensible way to compare real numbers.
Use all.equal(), for example.
BTW, these numbers get large quite rapidly. Use lgamma to do the
calculations on log scale is safer.
--
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 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at
stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._