显然可以在sqrt(x*x + y*y)不使用该hypot(x,y)函数的情况下进行计算。为什么这个功能是标准的一部分?
这与一些内部(基于硬件)优化有关吗?
除了hypot(x,y)避免撤消溢出(@bush)并可能提供比 更准确的答案(@Ian Abbot)之外sqrt(x*x + y*y),还定义了一个微妙的极端情况。
如果 std 库遵循 ANSI/IEEE 754 __STDC_IEC_559__定义,则
\n\nhypert(\xc2\xb1\xe2\x88\x9e; y) 返回 +\xe2\x88\x9e,即使 y 是 NaN。C17dr \xc2\xa7 F.10.4.3
\n
sqrt(x*x + y*y)不会。
可能会有一个成本:为什么hypot()函数这么慢?。这是一个实施质量问题。
\n\n\n这是否与某些内部(基于硬件)优化有关?
\n
@njuffa讨论了这个问题。
\n