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. Regards, Ulrike -- 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