hypot , hotf , hypotl , hypotd32, hypotd64和 hypotd128 子例程
用途
计算 Euclidean 距离函数和复杂绝对值。
库
IEEE 数学库 (libm.a) System V 数学库 (libmsaa.a)
语法
描述
hypot, hypotf, hypotl, hypotd32, hypotd64和 hypotd128 子例程计算 x2 + y2 的平方根的值,而不产生不适当的溢出或下溢。
希望检查错误情况的应用程序应该将 错误号 全局变量设置为零,并在调用这些子例程之前调用 费克莱雷克斯普(FE_ALL_EXCEPT)。 返回时,如果 错误号 为非零或 费泰斯特西普(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) 为非零,那么表示发生了错误。
参数
| 项 | 描述 |
|---|---|
| X | 指定部分双精度浮点值。 |
| y | 指定部分双精度浮点值。 |
返回值
成功完成后, 海波, 下夫, 皮特尔, hypotd32, hypotd64和 hypotd128 子例程将返回长度为 X 和 Y的直角三角形的幂等值长度。
如果正确的值将导致溢出,那么会发生范围错误,并且 下夫, 皮特尔, hypotd32, hypotd64和 hypotd128 子例程将分别返回宏 HUGE_VALF, HUGE_VALL, HUGE_VAL_D32, HUGE_VAL_D64和 HUGE_VAL_D128 的值。
如果 x 或 y 是 ± Inf ,那么将返回 + Inf (即使 x 或 y 中的一个是 NaN)。
如果x或y为NaN,而另一个不是 ±Inf,则返回NaN。
如果两个参数都是不正常的,并且正确的结果是不正常的,那么可能会发生范围错误并返回正确的结果。
错误代码
使用 libm.a (-lm) 库时,如果正确的值溢出, hypot 子例程将返回 HUGE_VAL 值。
使用 libmsaa.a (-lmsaa) 时,如果正确的值溢出,那么 hypot 子例程将返回 HUGE_VAL 并将全局变量 errno 设置为 ERANGE。
当使用 libmsaa.a (-lmsaa) 库时,可以使用 matherr 子例程来更改这些错误处理过程。