.\" 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 . |