Annotation of 43BSDReno/lib/libm/common_source/hypot.3, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1985 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)hypot.3     6.5 (Berkeley) 5/12/86
                      6: .\"
                      7: .TH HYPOT 3M  "May 12, 1986"
                      8: .UC 4
                      9: .ds up \fIulp\fR
                     10: .ds nn \fINaN\fR
                     11: .SH NAME
                     12: hypot, cabs \- Euclidean distance, complex absolute value
                     13: .SH SYNOPSIS
                     14: .nf
                     15: .B #include <math.h>
                     16: .PP
                     17: .B double hypot(x,y)
                     18: .B double x,y;
                     19: .PP
                     20: .B double cabs(z)
                     21: .B struct {double x,y;} z;
                     22: .fi
                     23: .SH DESCRIPTION
                     24: Hypot(x,y) and cabs(x,y) return sqrt(x\(**x+y\(**y)
                     25: computed in such a way that underflow will not happen, and overflow
                     26: occurs only if the final result deserves it.
                     27: .PP
                     28: .if n \
                     29: hypot(infinity,v) = hypot(v,infinity) = +infinity for all v, 
                     30: .if t \
                     31: hypot(\(if,v) = hypot(v,\(if) = +\(if for all v, 
                     32: including \*(nn.
                     33: .SH ERROR (due to Roundoff, etc.)
                     34: Below 0.97 \*(ups.  Consequently hypot(5.0,12.0)\0=\013.0 exactly;
                     35: in general, hypot and cabs return an integer whenever an
                     36: integer might be expected.
                     37: .PP
                     38: The same cannot be said for the shorter and faster version of hypot
                     39: and cabs that is provided in the comments in cabs.c; its error can
                     40: exceed 1.2 \*(ups.
                     41: .SH NOTES
                     42: As might be expected, hypot(v,\*(nn) and hypot(\*(nn,v) are \*(nn for all
                     43: \fIfinite\fR v; with "reserved operand" in place of "\*(nn", the
                     44: same is true on a VAX.  But programmers on machines other than a VAX
                     45: (it has no
                     46: .if n \
                     47: infinity)
                     48: .if t \
                     49: \(if)
                     50: might be surprised at first to discover that
                     51: .if n \
                     52: hypot(\(+-infinity,\*(nn) = +infinity.
                     53: .if t \
                     54: hypot(\(+-\(if,\*(nn) = +\(if.
                     55: This is intentional; it happens because
                     56: .if n \
                     57: hypot(infinity,v) = +infinity
                     58: .if t \
                     59: hypot(\(if,v) = +\(if
                     60: for \fIall\fR v, finite or infinite.
                     61: Hence
                     62: .if n \
                     63: hypot(infinity,v)
                     64: .if t \
                     65: hypot(\(if,v)
                     66: is independent of v.
                     67: Unlike the reserved operand on a VAX, the IEEE \*(nn is designed to
                     68: disappear when it turns out to be irrelevant, as it does in
                     69: .if n \
                     70: hypot(infinity,\*(nn).
                     71: .if t \
                     72: hypot(\(if,\*(nn).
                     73: .SH SEE ALSO
                     74: math(3M), sqrt(3M)
                     75: .SH AUTHOR
                     76: W. Kahan

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.