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