计算 log(x/(y*z)) 还是 log(x)-log(y)-log(z) 更好?

Is it better to compute log(x/(y*z)) or log(x)-log(y)-log(z)?

在数学上,log(x/(y*z))log(x)-log(y)-log(z) are equivalent。在电脑上,他们会给出不同的答案。哪个更适合计算?

前者会更快,后者会更精确,所以这取决于你的需要。

Log 是数值稳定的,但除法不是。想象一下 yz 非常接近 0。那么y * z有很大概率会被评估为0x / (y * z)溢出。但是 log(y) 即使对于非常小的 y 也会给出准确的结果。所以log(x)-log(y)-log(z)预计会更精确。