|  | .\" Copyright (c) 1985, 1991 Regents of the University of California. | 
|  | .\" All rights reserved. | 
|  | .\" | 
|  | .\" Redistribution and use in source and binary forms, with or without | 
|  | .\" modification, are permitted provided that the following conditions | 
|  | .\" are met: | 
|  | .\" 1. Redistributions of source code must retain the above copyright | 
|  | .\"    notice, this list of conditions and the following disclaimer. | 
|  | .\" 2. Redistributions in binary form must reproduce the above copyright | 
|  | .\"    notice, this list of conditions and the following disclaimer in the | 
|  | .\"    documentation and/or other materials provided with the distribution. | 
|  | .\" 3. All advertising materials mentioning features or use of this software | 
|  | .\"    must display the following acknowledgement: | 
|  | .\"	This product includes software developed by the University of | 
|  | .\"	California, Berkeley and its contributors. | 
|  | .\" 4. Neither the name of the University nor the names of its contributors | 
|  | .\"    may be used to endorse or promote products derived from this software | 
|  | .\"    without specific prior written permission. | 
|  | .\" | 
|  | .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | 
|  | .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
|  | .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
|  | .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | 
|  | .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 
|  | .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | 
|  | .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 
|  | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | 
|  | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 
|  | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 
|  | .\" SUCH DAMAGE. | 
|  | .\" | 
|  | .\"     from: @(#)hypot.3	6.7 (Berkeley) 5/6/91 | 
|  | .\" $FreeBSD: src/lib/msun/man/hypot.3,v 1.13 2005/01/14 23:28:28 das Exp $ | 
|  | .\" | 
|  | .Dd January 14, 2005 | 
|  | .Dt HYPOT 3 | 
|  | .Os | 
|  | .Sh NAME | 
|  | .Nm hypot , | 
|  | .Nm hypotf , | 
|  | .Nm cabs , | 
|  | .Nm cabsf | 
|  | .Nd Euclidean distance and complex absolute value functions | 
|  | .Sh LIBRARY | 
|  | .Lb libm | 
|  | .Sh SYNOPSIS | 
|  | .In math.h | 
|  | .Ft double | 
|  | .Fn hypot "double x" "double y" | 
|  | .Ft float | 
|  | .Fn hypotf "float x" "float y" | 
|  | .In complex.h | 
|  | .Ft double | 
|  | .Fn cabs "double complex z" | 
|  | .Ft float | 
|  | .Fn cabsf "float complex z" | 
|  | .Sh DESCRIPTION | 
|  | The | 
|  | .Fn hypot | 
|  | and | 
|  | .Fn hypotf | 
|  | 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. | 
|  | The | 
|  | .Fn cabs | 
|  | and | 
|  | .Fn cabsf | 
|  | functions compute the complex absolute value of | 
|  | .Fa z . | 
|  | .Pp | 
|  | .Fn hypot "\*(If" "v" | 
|  | = | 
|  | .Fn hypot "v" "\*(If" | 
|  | = +\*(If for all | 
|  | .Fa v , | 
|  | including \*(Na. | 
|  | .Sh ERROR (due to Roundoff, etc.) | 
|  | Below 0.97 | 
|  | .Em ulps . | 
|  | Consequently | 
|  | .Fn hypot "5.0" "12.0" | 
|  | = 13.0 | 
|  | exactly; | 
|  | in general, hypot and cabs return an integer whenever an | 
|  | integer might be expected. | 
|  | .Pp | 
|  | 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 | 
|  | .Em ulps . | 
|  | .Sh NOTES | 
|  | As might be expected, | 
|  | .Fn hypot "v" "\*(Na" | 
|  | and | 
|  | .Fn hypot "\*(Na" "v" | 
|  | are \*(Na for all | 
|  | .Em finite | 
|  | .Fa v . | 
|  | But programmers | 
|  | might be surprised at first to discover that | 
|  | .Fn hypot "\(+-\*(If" "\*(Na" | 
|  | = +\*(If. | 
|  | This is intentional; it happens because | 
|  | .Fn hypot "\*(If" "v" | 
|  | = +\*(If | 
|  | for | 
|  | .Em all | 
|  | .Fa v , | 
|  | finite or infinite. | 
|  | Hence | 
|  | .Fn hypot "\*(If" "v" | 
|  | is independent of | 
|  | .Fa v . | 
|  | Unlike the reserved operand fault on a | 
|  | .Tn VAX , | 
|  | the | 
|  | .Tn IEEE | 
|  | \*(Na is designed to | 
|  | disappear when it turns out to be irrelevant, as it does in | 
|  | .Fn hypot "\*(If" "\*(Na" . | 
|  | .Sh SEE ALSO | 
|  | .Xr math 3 , | 
|  | .Xr sqrt 3 | 
|  | .Sh HISTORY | 
|  | Both a | 
|  | .Fn hypot | 
|  | function and a | 
|  | .Fn cabs | 
|  | function | 
|  | appeared in | 
|  | .At v7 . |