unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (4.4BSD-Lite2)
Page:
Section:
Apropos / Subsearch:
optional field

HYPOT(3)                    BSD Programmer's Manual                   HYPOT(3)

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

SYNOPSIS
     #include <&lt;math.h>&gt;

     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