[Rd] Error in FrF2 example on Mac OS

Petr Savicky savicky at cs.cas.cz
Tue Mar 24 15:17:28 CET 2009


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.



More information about the R-devel mailing list