Changed behavior of log(gamma(x))

This commit is contained in:
Waldir Leoncio 2019-12-16 16:36:51 +01:00
parent 27a296ad00
commit 002c0db3f9
4 changed files with 35 additions and 6 deletions

View file

@ -4,16 +4,17 @@
#' for the mean parameter.
#' @param points points
#' @param fii fii
#' @export
calculatePopLogml <- function(points, fii) {
n <- length(points)
fuzzy_ones <- sum(points)
fuzzy_zeros <- n - fuzzy_ones
val = log(gamma(1)) -
log(gamma(1 + n / fii)) +
log(gamma(0.5 + fuzzy_ones / fii)) +
log(gamma(0.5 + fuzzy_zeros / fii)) -
log(gamma(0.5)) -
log(gamma(0.5))
val <- log_gamma(1) -
log_gamma(1 + n / fii) +
log_gamma(0.5 + fuzzy_ones / fii) +
log_gamma(0.5 + fuzzy_zeros / fii) -
log_gamma(0.5) -
log_gamma(0.5)
return(val)
}

8
R/log_gamma.R Normal file
View file

@ -0,0 +1,8 @@
#' @title Log Gamma
#' @description Equal to log(gamma(x)) with special handling of x < 0 for
#' Matlab compatibility
#' @param x number
#' @return log(gamma(x)) for x > 0, Inf otherwise
log_gamma <- function(x) {
ifelse(x > 0, log(gamma(x)), Inf)
}