gpt4 book ai didi

c++ - log(1+x) 是 log1p 就像 log(1-x) 是?

转载 作者:可可西里 更新时间:2023-11-01 17:32:47 26 4
gpt4 key购买 nike

<math.h>提供了一种更准确的计算方法 log(1+x)对于 double

是否有类似的精确计算方式log(1-x)

我问的原因是因为我试图在对数空间中做一些工作以获得更高的精度(我主要是对非常接近于零的数字进行乘法和求和)。我发现很容易编写一个给出 log( exp(log_of_a) + exp(log_of_b) ) = log( a + b ) 的函数通过使用 log1p .我正在尝试为差异做一个类似的功能:

log( exp(log_of_a) - exp(log_of_b) ) = log( a - b )哪里a > b ,当然。

本质上,只要log_a都不是或 log_b == -inf ,该函数应该简单地返回:

return log( 1 - exp(log_b-log_a) ) + log_a;

在我的 log_add函数,我最终得到一个 log( 1 + ... ) ,所以我使用 log1p .但是我这里有 log( 1 - ... ) .为了以防万一,我什至用谷歌搜索了 log1m,但没有运气......

当参数x[-inf, 1) 范围内, 那么我可以简单地使用 log1p(-x) (根据我的断言 a > b )。

这是解决此问题的最佳方法吗?我觉得我一定在做以前做过的工作......

非常感谢您帮助我了解如何获得最准确的结果(或解释为什么我无法获得比这更准确的结果)。

最佳答案

@Raymond Chen 说得对:“ float 的否定是精确的,所以 log1p(-x)log1p(x) 一样精确。”只是让它成为一个真正的答案。

关于c++ - log(1+x) 是 log1p 就像 log(1-x) 是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com