cnt <- function(vector) { x <- abs(vector) z <- x * 0 + 1 times <- max(floor(log(max(x), 2)), 0) for(i in 1:times) { y <- x x <- x * 0 - 1 x <- x + (y %% 2 != 0) * (y + 1) / 2 z <- z + (x != -1) } return(z) }