log.sum <- function(v) { log.sum.pair <- function(x,y) { if ((y == -Inf) && (x == -Inf)) { return(-Inf); } if (y < x) return(x+log1p(exp(y-x))) else return(y+log1p(exp(x-y))); } r <- v[1]; for (i in 2:length(v)) r <- log.sum.pair(r, v[i]); return(r); }