diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-12-22 20:10:10 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-12-22 20:10:10 +0000 |
commit | a334319f6530564d22e775935d9c91663623a1b4 (patch) | |
tree | b5877475619e4c938e98757d518bb1e9cbead751 /sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c | |
parent | 0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (diff) | |
download | glibc-a334319f6530564d22e775935d9c91663623a1b4.zip glibc-a334319f6530564d22e775935d9c91663623a1b4.tar.gz glibc-a334319f6530564d22e775935d9c91663623a1b4.tar.bz2 |
(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c')
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c b/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c deleted file mode 100644 index 50bd8cb..0000000 --- a/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c +++ /dev/null @@ -1,109 +0,0 @@ -/* s_scalbnl.c -- long double version of s_scalbn.c. - * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz. - */ - -/* @(#)s_scalbn.c 5.1 93/09/24 */ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: $"; -#endif - -/* - * scalbnl (long double x, int n) - * scalbnl(x,n) returns x* 2**n computed by exponent - * manipulation rather than by actually performing an - * exponentiation or a multiplication. - */ - -#include "math.h" -#include "math_private.h" -#include <math_ldbl_opt.h> - -#ifdef __STDC__ -static const long double -#else -static long double -#endif -twolm54 = 5.55111512312578270212e-17, /* 0x3C90000000000000, 0 */ -huge = 1.0E+300L, -tiny = 1.0E-300L; -#ifdef __STDC__ -static const double -#else -static double -#endif -two54 = 1.80143985094819840000e+16, /* 0x4350000000000000 */ -twom54 = 5.55111512312578270212e-17; /* 0x3C90000000000000 */ - -#ifdef __STDC__ - long double __scalbnl (long double x, int n) -#else - long double __scalbnl (x,n) - long double x; int n; -#endif -{ - int64_t k,l,hx,lx; - union { int64_t i; double d; } u; - GET_LDOUBLE_WORDS64(hx,lx,x); - k = (hx>>52)&0x7ff; /* extract exponent */ - l = (lx>>52)&0x7ff; - if (k==0) { /* 0 or subnormal x */ - if (((hx|lx)&0x7fffffffffffffffULL)==0) return x; /* +-0 */ - u.i = hx; - u.d *= two54; - hx = u.i; - k = ((hx>>52)&0x7ff) - 54; - } - else if (k==0x7ff) return x+x; /* NaN or Inf */ - k = k+n; - if (n> 50000 || k > 0x7fe) - return huge*__copysignl(huge,x); /* overflow */ - if (n< -50000) return tiny*__copysignl(tiny,x); /*underflow */ - if (k > 0) { /* normal result */ - hx = (hx&0x800fffffffffffffULL)|(k<<52); - if ((lx & 0x7fffffffffffffffULL) == 0) { /* low part +-0 */ - SET_LDOUBLE_WORDS64(x,hx,lx); - return x; - } - if (l == 0) { /* low part subnormal */ - u.i = lx; - u.d *= two54; - lx = u.i; - l = ((lx>>52)&0x7ff) - 54; - } - l = l + n; - if (l > 0) - lx = (lx&0x800fffffffffffffULL)|(l<<52); - else if (l <= -54) - lx = (lx&0x8000000000000000ULL); - else { - l += 54; - u.i = (lx&0x800fffffffffffffULL)|(l<<52); - u.d *= twom54; - lx = u.i; - } - SET_LDOUBLE_WORDS64(x,hx,lx); - return x; - } - if (k <= -54) - return tiny*__copysignl(tiny,x); /*underflow*/ - k += 54; /* subnormal result */ - lx &= 0x8000000000000000ULL; - SET_LDOUBLE_WORDS64(x,(hx&0x800fffffffffffffULL)|(k<<52),lx); - return x*twolm54; -} -#ifdef IS_IN_libm -long_double_symbol (libm, __scalbnl, scalbnl); -#else -long_double_symbol (libc, __scalbnl, scalbnl); -#endif |