R中的双精度错误

Double precision error in R

在我的代码中,在似然计算期间存在一个步骤,我需要计算 -ve 数的指数并在添加此类指数后取对数。例如

> log(exp(-2500))
[1] -Inf
> log(exp(-2500)+exp(-3000))
[1] -Inf

由于这些 -ve 数字的绝对值很高,结果是 exp(-ve 数字) 变为零(如预期的那样)。但是,在后面的步骤中评估的对数将零作为输入。有什么方法可以避免 R 中的这些错误输出?

计算可能性的对数。将它们存储在向量 v 中。然后计算

m = max(v)
logsum = log(sum(exp(v-m)))+m