Go to main content

man pages section 3: Extended Library Functions, Volume 2

Exit Print View

Updated: Thursday, June 13, 2019
 
 

hypot(3M)

Name

hypot, hypotf, hypotl - Euclidean distance function

Synopsis

c99 [ flag... ] file... –lm [ library... ]
#include <math.h>

double hypot(double x, double y);
float hypotf(float x, float y);
long double hypotl(long double x, long double y);

Description

These functions compute the length of the square root of x2 + y2 without undue overflow or underflow.

Return Values

Upon successful completion, these functions return the length of the hypotenuse of a right angled triangle with sides of length x2 and y2.

If the correct value would cause overflow, a range error occurs and hypot(), hypotf(), and hypotl() return the value of the macro HUGE_VAL, HUGE_VALF, and HUGE_VALL, respectively.

If x or y is ±Inf, +Inf is returned even if one of x or y is NaN.

If x or y is NaN and the other is not ±Inf, a NaN is returned.

Errors

These functions will fail if:

Range Error

The result overflows.

If the integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, the overflow floating-point exception is raised.

Usage

hypot(x,y), hypot(y,x), and hypot(x, −y) are equivalent.

hypot(x, ±0) is equivalent to fabs(x).

These functions takes precautions against underflow and overflow during intermediate steps of the computation.

An application wanting to check for exceptions should call feclearexcept(FE_ALL_EXCEPT) before calling these functions. On return, if fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) is non-zero, an exception has been raised. An application should either examine the return value or check the floating point exception flags to detect exceptions.

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
Availability
system/library/math
MT-Level
MT-Safe
Standard

See Also

math.h(3HEAD), fabs(3M), feclearexcept(3M), fetestexcept(3M), isnan(3M), sqrt(3M), attributes(7), standards(7)