HYPOT(3M-SysV) RISC/os Reference Manual HYPOT(3M-SysV)
NAME
hypot, cabs - Euclidean distance, complex absolute value
SYNOPSIS
#include <math.h>
double hypot(x,y)
double x,y;
float fhypot(float x, float y)
double x,y;
double cabs(z)
struct {double x,y;} z;
float fcabs(z)
struct {float x,y;} z;
DESCRIPTION
Hypot(x,y), fhypot(x,y), cabs(x,y) and fcabs(x,y) return
sqrt(x*x+y*y) computed in such a way that underflow will not
happen, and overflow occurs only if the final result
deserves it.
Fhypot and fcabs are the same functions as hypot and cabs
but for the float data type.
hypot(infinity,v) = hypot(v,infinity) = +infinity for all v,
including NaN.
DIAGNOSTICS
When the correct value would overflow, hypot returns +infin-
ity.
ERROR (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 when-
ever an integer might be expected.
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. Programmers might be surprised at first
to discover that hypot(+infinity,NaN) = +infinity. This is
intentional; it happens because hypot(infinity,v) = +infin-
ity for all v, finite or infinite. Hence hypot(infinity,v)
is independent of v. The IEEE NaN is designed to disappear
when it turns out to be irrelevant, as it does in
hypot(infinity,NaN).
Printed 1/15/91 Page 1
HYPOT(3M-SysV) RISC/os Reference Manual HYPOT(3M-SysV)
SEE ALSO
math(3M), sqrt(3M)
AUTHOR
W. Kahan
Page 2 Printed 1/15/91