hypot(P)                                               hypot(P)





NAME
       hypot, hypotf, hypotl - Euclidean distance function

SYNOPSIS
       #include <math.h>

       double hypot(double x, double y);
       float hypotf(float x, float y);
       long double hypotl(long double x, long double y);


DESCRIPTION
       The  functionality  described  on this reference page is
       aligned with the ISO C standard.  Any  conflict  between
       the  requirements  described here and the ISO C standard
       is unintentional.  This volume  of  IEEE Std 1003.1-2001
       defers to the ISO C standard.

       These  functions  shall  compute the value of the square
       root of x**2+ y**2 without undue overflow or  underflow.

       An  application  wishing  to  check for error situations
       should  set  errno   to   zero   and   call   feclearex-
       cept(FE_ALL_EXCEPT)  before calling these functions.  On
       return, if errno is non-zero or  fetestexcept(FE_INVALID
       |  FE_DIVBYZERO  |  FE_OVERFLOW  | FE_UNDERFLOW) is non-
       zero, an error has occurred.

RETURN VALUE
       Upon successful completion, these functions shall return
       the  length of the hypotenuse of a right-angled triangle
       with sides of length x and y.

       If the correct value would cause overflow, a range error
       shall  occur  and  hypot(), hypotf(), and hypotl() shall
       return the value of the macro HUGE_VAL,  HUGE_VALF,  and
       HUGE_VALL, respectively.

       If  x or y is +-Inf, +Inf shall be returned (even if one
       of x or y is NaN).

       If x or y is NaN, and the other  is  not  +-Inf,  a  NaN
       shall be returned.

       If  both  arguments are subnormal and the correct result
       is subnormal, a range error may occur  and  the  correct
       result is returned.

ERRORS
       These functions shall fail if:

       Range Error
              The result overflows.

       If    the   integer   expression   (math_errhandling   &
       MATH_ERRNO) is non-zero, then  errno  shall  be  set  to
       [ERANGE].  If the integer expression (math_errhandling &
       MATH_ERREXCEPT) is non-zero, then the overflow floating-
       point exception shall be raised.


       These functions may fail if:

       Range Error
              The result underflows.

       If    the   integer   expression   (math_errhandling   &
       MATH_ERRNO) is non-zero, then  errno  shall  be  set  to
       [ERANGE].  If the integer expression (math_errhandling &
       MATH_ERREXCEPT) is non-zero, then the  underflow  float-
       ing-point exception shall be raised.


       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       hypot(x,y), hypot(y,x), and hypot(x, -y) are equivalent.

       hypot(x, +-0) is equivalent to fabs(x).

       Underflow only happens when both x and y  are  subnormal
       and the (inexact) result is also subnormal.

       These functions take precautions against overflow during
       intermediate steps of the computation.

       On   error,   the   expressions   (math_errhandling    &
       MATH_ERRNO)  and (math_errhandling & MATH_ERREXCEPT) are
       independent of each other, but at least one of them must
       be non-zero.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       feclearexcept()  ,  fetestexcept()  , isnan() , sqrt() ,
       the Base  Definitions  volume  of  IEEE Std 1003.1-2001,
       Section  4.18,  Treatment of Error Conditions for Mathe-
       matical Functions, <math.h>

COPYRIGHT
       Portions of this text are reprinted  and  reproduced  in
       electronic  form  from  IEEE  Std  1003.1, 2003 Edition,
       Standard for Information Technology -- Portable  Operat-
       ing System Interface (POSIX), The Open Group Base Speci-
       fications Issue 6, Copyright (C) 2001-2003 by the Insti-
       tute  of  Electrical  and Electronics Engineers, Inc and
       The Open Group. In the event of any discrepancy  between
       this  version  and  the original IEEE and The Open Group
       Standard, the original IEEE and The Open Group  Standard
       is  the  referee  document. The original Standard can be
       obtained        online        at        http://www.open-
       group.org/unix/online.html .



POSIX                         2003                     hypot(P)
