HYPOT(3) BSD Programmer's Manual HYPOT(3)

hypot,hypotf,cabs,cabsf- Euclidean distance and complex absolute value functions

libm

#include <math.h>doublehypot(double x,double y);floathypotf(float x,float y);doublecabs(struct complex{double x; double y; }z);floatcabsf(struct complex{float x; float y; }z);

Thehypot() andcabs() 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.hypot(Infinity,v) =hypot(v,Infinity) = +Infinity for allv, includingNaN.

Below 0.97ulps. Consequentlyhypot(5.0,12.0) = 13.0 exactly; in gen- eral, hypot and cabs return an integer whenever an integer might be ex- pected. 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.2ulps.

As might be expected,hypot(v,NaN) andhypot(NaN,v) areNaNfor allfinite v; with "reserved operand" in place of "NaN", the same is true on a VAX. But programmers on machines other than a VAX (it has no Infinity) might be surprised at first to discover thathypot(_Infinity,NaN) = +In- finity. This is intentional; it happens becausehypot(Infinity,v) = +In- finity forall v, finite or infinite. Hencehypot(Infinity,v) is in- dependent ofv. Unlike the reserved operand fault on a VAX, the IEEENaNis designed to disappear when it turns out to be irrelevant, as it does inhypot(Infinity,NaN).

math(3), sqrt(3)

Both ahypot() function and acabs() function appeared in Version 7 AT&T UNIX.

Thecabs() andcabsf() functions use structures that are not defined in any header and need to be defined by the user. As such they cannot be prototyped properly. MirOS BSD #10-current May 6, 1991 1

Generated on 2011-09-14 21:16:01 by
`$MirOS: src/scripts/roff2htm,v 1.67 2011/09/14 21:08:34 tg Exp $`

These manual pages and other documentation are copyrighted by their respective writers;
their source is available at our CVSweb,
AnonCVS, and other mirrors. The rest is Copyright © 2002‒2011 The MirOS Project, Germany.

This product includes material
provided by Thorsten Glaser.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report – diffs preferred.