| HYPOT(3) | Library Functions Manual | HYPOT(3) | 
hypot, hypotf,
  hypotl —
#include <math.h>
double
  
  hypot(double
    x, double y);
float
  
  hypotf(float
    x, float y);
long double
  
  hypotl(long
    double x, long double
    y);
#include
    <tgmath.h>
real-floating
  
  hypot(real-floating,
    real-floating);
hypot() 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.
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.
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).
hypot() appeared in
  Version 7 AT&T UNIX.
| September 26, 2017 | NetBSD 9.4 |