### NAME

hypot, hypotf, hypotl - Euclidean distance function

### SYNOPSIS

**#include <math.h>**

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

Link with *-lm*.

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

**hypot**(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE; or
*cc -std=c99* **hypotf**(), **hypotl**(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE; or
*cc -std=c99*

### DESCRIPTION

The
**hypot**() function returns
sqrt(*x***x*+*y***y*). This is the length of the hypotenuse of a right-angled triangle
with sides of length
*x* and
*y*, or the distance of the point
(*x*,*y*) from the origin.

The calculation is performed without undue overflow or underflow during the intermediate steps of the calculation.

### RETURN VALUE

On success, these functions return the length of a right-angled triangle
with sides of length
*x* and
*y*.

If
*x* or
*y* is an infinity,
positive infinity is returned.

If
*x* or
*y* is a NaN,
and the other argument is not an infinity,
a NaN is returned.

If the result overflows,
a range error occurs,
and the functions return
**HUGE_VAL**, **HUGE_VALF**, or
**HUGE_VALL**, respectively.

If both arguments are subnormal, and the result is subnormal, a range error occurs, and the correct result is returned.

### ERRORS

See math_error(7) for information on how to determine whether an error has occurred when calling these functions.

The following errors can occur:

Range error: result overflow | |

errno is set to
ERANGE. An overflow floating-point exception
(FE_OVERFLOW) is raised.
| |

Range error: result underflow | |

An underflow floating-point exception
(FE_UNDERFLOW) is raised.
| |

These functions do not set
errno for this case.
| |

### CONFORMING TO

C99, POSIX.1-2001.
The variant returning
*double* also conforms to
SVr4, 4.3BSD.

### SEE ALSO

### COLOPHON

This page is part of release 3.23 of the Linux
*man-pages* project.
A description of the project,
and information about reporting bugs,
can be found at
http://www.kernel.org/doc/man-pages/.