HYPOT(3) NetBSD 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); float hypotf(float x, float 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. 4.4BSD May 6, 1991 1
Powered by man-cgi (2024-08-26). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.