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

`hypot`

, `hypotf`

,
`hypotl`

, `cabs`

,
`cabsf`

, `cabsl`

—
Euclidean distance and complex absolute value
functions

```
#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`);

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`.

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.

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`).

A `hypot`

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

() in Version 7 AT&T
UNIX.

February 8, 2020 | OpenBSD-current |