On Mar 24, 2009, at 10:41 , Ulrike Grömping wrote:
Petr Savicky wrote:
On Tue, Mar 24, 2009 at 02:45:57PM +0100, Uwe Ligges wrote:
gives the custom error message "nruns must be a power of 2.",
which is
generated in the first check within function FrF2:
if (!is.null(nruns)){
k <- floor(log2(nruns))
if (!2^k==nruns) stop("nruns must be a power of 2.")}
Probably a rounding issue on different platforms?
I guess the test should be something like:
if (!is.null(nruns)){
if(!isTRUE(all.equal(log2(nruns) %% 1, 0)))
stop("nruns must be a power of 2.")
}
Probably, k is needed also later. Assumig that 2^k works correctly,
the following could be sufficient
if (!is.null(nruns)){
k <- round(log2(nruns))
if (!2^k==nruns) stop("nruns must be a power of 2.")}
In order to test the assumption, one can use
x <- 2^(0:100 + 0) # use double exponent to be sure
all(x == floor(x))
Powers of two are represented exactly, since they have only one
significant bit.
Petr.
Yes, round instead of floor should also do the job, if rounding is the
issue. But then, with powers of 2 indeed being represented exactly
(I would
expect even on Macs), maybe rounding is not the issue? I have no
possibility
to check this, since I do not have access to a Mac with R installed.
On my
windows machine,
all(log2(x)==floor(log2(x)))
with x as defined above yields TRUE.
What you're missing is that you cannot rely on log2 to give you an
integer. The test above bears no relevance to your problem - this is
not about representing 2^x - this is about log2 which you cannot
expect to satisfy log2(2^b) == b numerically since it could as well be
computed log(x)/log(2) which is not exactly representable. Use round
and all is well :).
> which(floor(log2(2^x))!=x)
[1] 4 7 8 13 14 15 25 27 29 49 53 57 64 97
> which(round(log2(2^x))!=x)
integer(0)
Cheers,
Simon
View this message in context:
http://www.nabble.com/Error-in-FrF2-example-on-Mac-OS-tp22675998p22681913.html
Sent from the R devel mailing list archive at Nabble.com.
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel