BSD 4_3_Net_2 release
[unix-history] / usr / src / lib / libm / common_source / hypot.3
index d3c4807..01250c4 100644 (file)
-.\" Copyright (c) 1985 Regents of the University of California.
-.\" All rights reserved.  The Berkeley software License Agreement
-.\" specifies the terms and conditions for redistribution.
+.\" Copyright (c) 1985, 1991 Regents of the University of California.
+.\" All rights reserved.
 .\"
 .\"
-.\"    @(#)hypot.3     6.5 (Berkeley) %G%
+.\" 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.
 .\"
 .\"
-.TH HYPOT 3M  ""
-.UC 4
-.ds up \fIulp\fR
-.ds nn \fINaN\fR
-.SH NAME
-hypot, cabs \- Euclidean distance, complex absolute value
-.SH SYNOPSIS
-.nf
-.B #include <math.h>
-.PP
-.B double hypot(x,y)
-.B double x,y;
-.PP
-.B double cabs(z)
-.B struct {double x,y;} z;
-.fi
-.SH DESCRIPTION
-Hypot(x,y) and cabs(x,y) return sqrt(x\(**x+y\(**y)
-computed in such a way that underflow will not happen, and overflow
+.\" 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.
+.\"
+.\"     @(#)hypot.3    6.7 (Berkeley) 5/6/91
+.\"
+.Dd May 6, 1991
+.Dt HYPOT 3
+.Os BSD 4
+.Sh NAME
+.Nm hypot ,
+.Nm cabs
+.Nd euclidean distance and complex absolute value functions
+.Sh SYNOPSIS
+.Fd #include <math.h>
+.Ft double
+.Fn hypot "double x" "double y"
+.Fd struct {double x, y;} z;
+.Ft double
+.Fn cabs z
+.Sh DESCRIPTION
+The
+.Fn hypot
+and
+.Fn cabs
+functions
+computes 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.
 occurs only if the final result deserves it.
-.PP
-.if n \
-hypot(infinity,v) = hypot(v,infinity) = +infinity for all v, 
-.if t \
-hypot(\(if,v) = hypot(v,\(if) = +\(if for all v, 
-including \*(nn.
-.SH ERROR (due to Roundoff, etc.)
-Below 0.97 \*(ups.  Consequently hypot(5.0,12.0)\0=\013.0 exactly;
+.Pp
+.Fn hypot "\*(If" "v"
+=
+.Fn hypot "v" "\*(If"
+= +\*(If for all
+.Ar 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.
 in general, hypot and cabs return an integer whenever an
 integer might be expected.
-.PP
+.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
 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 \*(ups.
-.SH NOTES
-As might be expected, hypot(v,\*(nn) and hypot(\*(nn,v) are \*(nn for all
-\fIfinite\fR v; with "reserved operand" in place of "\*(nn", the
-same is true on a VAX.  But programmers on machines other than a VAX
-(it has no
-.if n \
-infinity)
-.if t \
-\(if)
+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
+.Ar v ;
+with "reserved operand" in place of "\*(Na", the
+same is true on a
+.Tn VAX .
+But programmers on machines other than a
+.Tn VAX
+(if has no \*(If)
 might be surprised at first to discover that
 might be surprised at first to discover that
-.if n \
-hypot(\(+-infinity,\*(nn) = +infinity.
-.if t \
-hypot(\(+-\(if,\*(nn) = +\(if.
+.Fn hypot "\(+-\*(If" "\*(Na"
+= +\*(If.
 This is intentional; it happens because
 This is intentional; it happens because
-.if n \
-hypot(infinity,v) = +infinity
-.if t \
-hypot(\(if,v) = +\(if
-for \fIall\fR v, finite or infinite.
+.Fn hypot "\*(If" "v"
+= +\*(If
+for
+.Em all
+.Ar v ,
+finite or infinite.
 Hence
 Hence
-.if n \
-hypot(infinity,v)
-.if t \
-hypot(\(if,v)
-is independent of v.
-Unlike the reserved operand on a VAX, the IEEE \*(nn is designed to
+.Fn hypot "\*(If" "v"
+is independent of
+.Ar 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
 disappear when it turns out to be irrelevant, as it does in
-.if n \
-hypot(infinity,\*(nn).
-.if t \
-hypot(\(if,\*(nn).
-.SH SEE ALSO
-math(3M), sqrt(3M)
-.SH AUTHOR
-W. Kahan
+.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 .