我想为Java提供一个快速的log1p函数。 Java具有Math.log1p,但对于我的需求而言显然太慢了。

我在这里找到了log1p的代码:

http://golang.org/src/pkg/math/log1p.go

用于GO语言。

它与Java中的一样吗?还是速度更快? (假设我将其翻译为Java)。
任何人都知道log1p的其他一些快速实现吗?

谢谢。

最佳答案

log1p(x) = Math.log(x+1)以来,找到一个自然的快速日志记录算法即可满足您的需求。

Java中的快速自然对数

我在这里找到了以下近似值,并且没有太多
信息,除了它被称为“Borchardt算法”
摘自《死亡侦查:无计算
仪器”。近似值不是很好(有些人可能会说非常
不好...),值越大越糟。但是近似
也是单调的,缓慢增加的函数,足够好了
对于我的用例。

公共静态double log(double x){
返回6 *(x-1)/(x +1 + 4 *(Math.sqrt(x))); }

该近似值比Math.log()快11.7倍。

请参阅this网站。另外,a performance comparison for math libraries in java.

但是,您的需要的可能是链接到c ++编译的东西,即here

10-08 07:34