gpt4 book ai didi

java - 为什么hypot()函数这么慢?

转载 作者:IT老高 更新时间:2023-10-28 12:37:40 33 4
gpt4 key购买 nike

我用 C++ hypot()Java Math.hypot 做了一些测试。它们似乎都比 sqrt(a*a + b*b) 慢得多。是因为精度更高吗?计算斜边 hypot 函数使用什么方法?令人惊讶的是,我在文档中找不到任何表现不佳的迹象。

最佳答案

这不是一个简单的 sqrt 函数。您应该检查此链接以了解算法的实现:http://www.koders.com/c/fid7D3C8841ADC384A5F8DE0D081C88331E3909BF3A.aspx

它有while循环来检查收敛

/* Slower but safer algorithm due to Moler and Morrison.  Never
produces any intermediate result greater than roughly the
larger of X and Y. Should converge to machine-precision
accuracy in 3 iterations. */

double r = ratio*ratio, t, s, p = abig, q = asmall;

do {
t = 4. + r;
if (t == 4.)
break;
s = r / t;
p += 2. * s * p;
q *= s;
r = (q / p) * (q / p);
} while (1);

编辑(来自 J.M 的更新):

Here是原始的 Moler-Morrison 论文,here由于 Dubrulle,这是一个很好的后续行动。

关于java - 为什么hypot()函数这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764978/

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