HYPOT(3) MachTen Programmer’s Manual HYPOT(3)

NAME
hypot, cabs - euclidean distance and complex absolute value functions

SYNOPSIS
#include <math.h>

double
hypot(double x, double y)

struct {double x, y;} z;

double
cabs(z)

DESCRIPTION
The hypot() and cabs() functions computes the sqrt(x*x+y*y) in such a way
that underflow will not happen, and overflow occurs only if the final re-
sult deserves it.

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

ERROR (due to Roundoff, etc.)
Below 0.97 ulps. Consequently hypot(5.0, 12.0) = 13.0 exactly; in gener-
al, hypot and cabs return an integer whenever an integer might be expect-
ed.

The same cannot be said for the shorter and faster version of hypot and
cabs that is provided in the comments in cabs.c; its error can exceed 1.2
ulps.

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 (if 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 in-
dependent 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
math(3), sqrt(3)

HISTORY
Both a hypot() function and a cabs() function appeared in Version 7 AT&T
UNIX.

4th Berkeley Distribution June 4, 1993 1