FreeBSD Bugzilla – Attachment 54632 Details for
Bug 82654
C99 long double math functions are missing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
hypotl.c
hypotl.c (text/x-c++src), 2.03 KB, created by
Steven G. Kargl
on 2005-06-26 18:00:57 UTC
(
hide
)
Description:
hypotl.c
Filename:
MIME Type:
Creator:
Steven G. Kargl
Created:
2005-06-26 18:00:57 UTC
Size:
2.03 KB
patch
obsolete
>/*- > * Copyright (c) 2005, Steven G. Kargl > * 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 unmodified, 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. > * > * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. > */ > >/* > * Compute the hypot(x,y) = sqrt(x*x+y*y) for long double x and y. > */ > >#include <math.h> > >long double sqrtl(long double); > >static long double zero = 0.0L; > >long double hypotl(long double x, long double y) { > > long double ax, ay; > > /* If x or y is a +-Inf, return +Inf. */ > if (isinf(x) || isinf(y)) > return (-1.L / zero); > > /* If x or y is a NaN, return NaN. */ > if (isnan(x) || isnan(y)) > return (x*x+x) + (y*y+y); > > ax = fabsl(x); > ay = fabsl(y); > > /* Special case if x and/or y is zero. */ > if (ax == zero || ay == zero) > return (ay + ax); > > /* Avoid overflow in sqrtl(x*x + y*y) */ > if (ax >= ay) { > ay /= ax; > ax = ax * sqrtl(1.0L + ay * ay); > } else { > ax /= ay; > ax = ay * sqrtl(ax * ax + 1.0L); > } > > return ax; > >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 82654
:
54631
| 54632 |
54633
|
54634
|
54635
|
54636