HYPOT(3M) UNIX Programmer's Manual HYPOT(3M) NAME hypot, cabs - Euclidean distance, complex absolute value SYNOPSIS #include double hypot(x,y) double x,y; double cabs(z) struct {double x,y;} z; DESCRIPTION Hypot(x,y) and cabs(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. hypot(infinity,v) = hypot(v,infinity) = +infinity for all v, including _N_a_N. ERROR (due to Roundoff, etc.) Below 0.97 _u_l_ps. 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 _u_l_ps. NOTES As might be expected, hypot(v,_N_a_N) and hypot(_N_a_N,v) are _N_a_N for all _f_i_n_i_t_e v; with "reserved operand" in place of "_N_a_N", the same is true on a VAX. But programmers on machines other than a VAX (it has no infinity) might be surprised at first to discover that hypot(+_infinity,_N_a_N) = +infinity. This is intentional; it happens because hypot(infinity,v) = +infinity for _a_l_l v, finite or infinite. Hence hypot(infinity,v) is independent of v. Unlike the reserved operand on a VAX, the IEEE _N_a_N is designed to disappear when it turns out to be irrelevant, as it does in hypot(infinity,_N_a_N). SEE ALSO math(3M), sqrt(3M) AUTHOR W. Kahan Printed 11/26/99 May 12, 1986 1