NAME
hypot, hypotf
    — Euclidean distance and complex
    absolute value functions
LIBRARY
library “libm”
SYNOPSIS
#include
  <math.h>
double
  
  hypot(double
    x, double y);
float
  
  hypotf(float
    x, float y);
DESCRIPTION
Thehypot()
  functions compute the sqrt(x*x+y*y) 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 NaN.
ERRORS
Below 0.97 ulps. Consequently
    hypot(5.0,
    12.0) = 13.0 exactly; in general, hypot returns an
    integer whenever an integer might be expected.
The same cannot be said for the shorter and faster version of hypot 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 (it 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 independent 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
HISTORY
Both a hypot() function and a
    cabs() function appeared in
    Version 7 AT&T UNIX.
    cabs() was removed from public namespace in
    NetBSD 5.0 to avoid conflicts with the complex
    function in C99.