我想为Java提供快速的log1p函数。 Java有Math.log1p,但显然对我的需求来说太慢了。
我在这里找到了log1p的代码:
http://golang.org/src/pkg/math/log1p.go
用于GO语言。
它与Java中的相同,还是更快? (假设我把它翻译成java)。 有人知道log1p的其他一些快速实现吗?
感谢。
答案 0 :(得分:0)
自log1p(x) = Math.log(x+1)
以来,找到自然对数快速算法就足以满足您的需求。
Java中的快速自然对数
我在这里找到了以下近似值,并没有多少 有关它的信息,除了它被称为“Borchardt的算法” 它出自“Dead Reconing:计算没有 仪器”。近似值不是很好(有些人可能会说非常好 坏...),价值越大,情况越糟。但近似值 也是一个单调,缓慢增加的功能,这是足够好的 对于我的用例。
public static 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。