R/fibonacci.R

Defines functions lucas fibonacci.alternate is.fibonacci fibonacci.under fibonacci.order fibonacci

Documented in fibonacci fibonacci.order fibonacci.under is.fibonacci lucas

golden.ratio <- (1 + sqrt(5)) / 2

fibonacci <- function(n) { (golden.ratio ^ n - (1 - golden.ratio) ^ n) / sqrt(5) }

fibonacci.order <- function(x) {
    n <- as.integer(floor(log(sqrt(5) * x, golden.ratio) + 0.5))
    ifelse(fibonacci(n) == as.integer(x), n, NA)
}

fibonacci.under <- function(m) { fibonacci(floor(log(sqrt(5) * m, golden.ratio) + 0.5)) }

is.fibonacci <- function(x) { fibonacci.under(x) == x }

fibonacci.alternate <- function(n) {
    n <- n - 1
    a <- ceiling(n / 2)
    b <- n - a
    sum(choose(seq(n,a),seq(0,b)))
}

lucas <- function(n) { golden.ratio ^ n + (1 - golden.ratio) ^ n }
graywh/r-gmisc documentation built on April 19, 2023, 1:42 p.m.