## NAME

`hypot`

, `hypotf`

,
`hypotl`

, `cabs`

,
`cabsf`

, `cabsl`

—
Euclidean distance and complex absolute
value functions

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

```
#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`; with "reserved operand" in place of
"NaN", the same is true on a VAX. But programmers on machines
other than a VAX (it has no infinity) 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`. Unlike
the reserved operand fault on a VAX, the IEEE NaN is designed to disappear
when it turns out to be irrelevant, as it does in
`hypot`

(`infinity`,
`NaN`).

## SEE ALSO

## HISTORY

Both a `hypot`

() function and a
`cabs`

() function appeared in
Version 7 AT&T UNIX.