.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH HYPOT 3 2007-07-26 "" "Linux Programmer's Manual"
+.TH HYPOT 3 2008-07-29 "" "Linux Programmer's Manual"
.SH NAME
hypot, hypotf, hypotl \- Euclidean distance function
.SH SYNOPSIS
.in
.sp
.ad l
-.BR hypot (),
+.BR hypot ():
+_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE; or
+.I cc\ -std=c99
+.br
.BR hypotf (),
.BR hypotl ():
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE; or
+_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE; or
.I cc\ -std=c99
.ad b
.SH DESCRIPTION
.BR hypot ()
function returns
.RI sqrt( x * x + y * y ).
-This is the length of the hypotenuse of a right-angle triangle
+This is the length of the hypotenuse of a right-angled triangle
with sides of length
.I x
and
or the distance of the point
.RI ( x , y )
from the origin.
-.SH "CONFORMING TO"
-SVr4, 4.3BSD, C99.
-The
-.I float
+
+The calculation is performed without undue overflow or underflow
+during the intermediate steps of the calculation.
+.\" e.g., hypot(DBL_MIN, DBL_MIN) does the right thing, as does, say
+.\" hypot(DBL_MAX/2.0, DBL_MAX/2.0).
+.SH RETURN VALUE
+On success, these functions return the length of a right-angled triangle
+with sides of length
+.I x
and
-.I "long double"
-variants are C99 requirements.
+.IR y .
+
+If
+.I x
+or
+.I y
+is an infinity,
+positive infinity is returned.
+
+If
+.I x
+or
+.I y
+is a NaN,
+and the other argument is not an infinity,
+a NaN is returned.
+
+If the result overflows,
+a "range error" occurs,
+and the functions return
+.BR HUGE_VAL ,
+.BR HUGE_VALF ,
+or
+.BR HUGE_VALL ,
+respectively.
+
+If both arguments are subnormal, and the result is subnormal,
+.\" Actually, could the result not be subnormal if both arguments
+.\" are subnormal? I think not -- mtk, Jul 2008
+a "range error" occurs,
+and the correct result is returned.
+.SH ERRORS
+See
+.BR math_error (7)
+for information on how to determine whether an error has occurred
+when calling these functions.
+.PP
+The following errors can occur:
+.TP
+Range error: result overflow
+.I errno
+is set to
+.BR ERANGE .
+An overflow floating-point exception
+.RB ( FE_OVERFLOW )
+is raised.
+.TP
+Range error: result underflow
+.\" .I errno
+.\" is set to
+.\" .BR ERANGE .
+An underflow floating-point exception
+.RB ( FE_UNDERFLOW )
+is raised.
+.IP
+These functions do not set
+.IR errno
+for this case.
+.\" FIXME . Is it intentional that these functions do not set errno?
+.\" They do set errno for the overflow case.
+.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6795
+.SH "CONFORMING TO"
+C99, POSIX.1-2001.
+The variant returning
+.I double
+also conforms to
+SVr4, 4.3BSD.
.SH "SEE ALSO"
.BR cabs (3),
.BR sqrt (3)