HYPOT(3) | Library Functions Manual | HYPOT(3)

# NAME

`hypot`, `hypotf`, `hypotl`, `cabs`, `cabsf`, `cabsl` — Euclidean distance and complex absolute value functions

# SYNOPSIS

Math Library (libm, -lm)
`#include <math.h>`

double
`hypot`(double x, double y);

float
`hypotf`(float x, float y);

long double
`hypotl`(long double x, long double y);

`#include <complex.h>`

double
`cabs`(double complex z);

float
`cabsf`(float complex z);

long double
`cabsl`(long double complex z);

# DESCRIPTION

The `hypot`(), `hypotf`() and `hypotl`() functions compute the sqrt(x*x+y*y) in such a way that underflow will not happen, and overflow occurs only if the final result deserves it.

`hypot`(infinity, v) = `hypot`(v, infinity) = +infinity for all v, including NaN.

The `cabs`(), `cabsf`() and `cabsl`() functions return the absolute value of the complex number z.

# ERRORS (due to Roundoff, etc.)

Below 0.97 ulps. Consequently `hypot`(5.0, 12.0) = 13.0 exactly; in general, hypot and cabs return an integer whenever an integer might be expected.

# NOTES

As might be expected, `hypot`(v, NaN) and `hypot`(NaN, v) are NaN for all finite v. Programmers might be surprised at first to discover that `hypot`(±infinity, NaN) = +infinity. This is intentional; it happens because `hypot`(infinity, v) = +infinity for all v, finite or infinite. Hence `hypot`(infinity, v) is independent of v. The IEEE NaN is designed to disappear when it turns out to be irrelevant, as it does in `hypot`(infinity, NaN).

# SEE ALSO

fpclassify(3), sqrt(3)

# HISTORY

A `hypot`() function first appeared in Version 2 AT&T UNIX, and `cabs`() in Version 7 AT&T UNIX.

June 7, 2025 | Debian