【发布时间】:2015-04-23 14:59:59
【问题描述】:
以下函数在给定log(x) 和log(y) 的值的情况下计算log(x + y),如果x 或y 非常大或非常小,则避免上溢或下溢:
double log_add(double logx, double logy)
{
return max(logx, logy) + log1p(exp(-fabs(logx - logy)));
}
必须有一个类似的log_sub 函数来计算log(x - y)。这是什么?
更一般地说,我需要在给定log(x)、log(y) 和log(z) 的情况下计算log(x - y - z)。从log_add 和log_sub 我可以分两步计算log(x - y - z),但也许有最佳方法?
【问题讨论】:
-
@LưuVĩnhPhúc 不。您正在否定
y的对数,而不是y本身。 -
哎呀误读了这些值是日志
标签: c++ floating-point numeric logarithm