hypot , hotf , hypotl , hypotd32, hypotd64和 hypotd128 子例程

用途

计算 Euclidean 距离函数和复杂绝对值。

IEEE 数学库 (libm.a) System V 数学库 (libmsaa.a)

语法

#include <math.h>
double hypot ( x,  y)
double x, y;
float hypotf (x, y)
float x;
float y;

long double hypotl (x, y)
long double x;
long double y;
_Decimal32 hypotd32 (x, y)
_Decimal32 x, y;

_Decimal64 hypotd64 (x, y)
_Decimal64 x, y;

_Decimal128 hypotd128 (x, y)
_Decimal128 x, y;

描述

hypothypotfhypotlhypotd32hypotd64hypotd128 子例程计算 x2 + y2 的平方根的值,而不产生不适当的溢出或下溢。

希望检查错误情况的应用程序应该将 错误号 全局变量设置为零,并在调用这些子例程之前调用 费克莱雷克斯普(FE_ALL_EXCEPT)。 返回时,如果 错误号 为非零或 费泰斯特西普(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) 为非零,那么表示发生了错误。

参数

描述
X 指定部分双精度浮点值。
y 指定部分双精度浮点值。

返回值

成功完成后, 海波下夫皮特尔hypotd32hypotd64hypotd128 子例程将返回长度为 XY的直角三角形的幂等值长度。

如果正确的值将导致溢出,那么会发生范围错误,并且 下夫皮特尔hypotd32hypotd64hypotd128 子例程将分别返回宏 HUGE_VALFHUGE_VALLHUGE_VAL_D32HUGE_VAL_D64HUGE_VAL_D128 的值。

如果 xy 是 ± Inf ,那么将返回 + Inf (即使 xy 中的一个是 NaN)。

如果xy为NaN,而另一个不是 ±Inf,则返回NaN。

如果两个参数都是不正常的,并且正确的结果是不正常的,那么可能会发生范围错误并返回正确的结果。

错误代码

使用 libm.a (-lm) 库时,如果正确的值溢出, hypot 子例程将返回 HUGE_VAL 值。

注: (hypot (INF , value) 和 hypot (value INF) 对于所有值都等于 + INF ,即使 value = NaN也是如此。

使用 libmsaa.a (-lmsaa) 时,如果正确的值溢出,那么 hypot 子例程将返回 HUGE_VAL 并将全局变量 errno 设置为 ERANGE

当使用 libmsaa.a (-lmsaa) 库时,可以使用 matherr 子例程来更改这些错误处理过程。