diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-10-24 22:04:52 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-10-24 22:04:52 +0000 |
commit | 15daa63995211cbe576b28f88ad70f57abe69a37 (patch) | |
tree | 72d2fe95e84d28e7d583894391d45e3b89e2c5f9 /sysdeps/i386/fpu/bits | |
parent | eb3bf57345cb1451a5d2578dc3f7fbe5aff3b8b5 (diff) | |
download | glibc-15daa63995211cbe576b28f88ad70f57abe69a37.tar.gz glibc-15daa63995211cbe576b28f88ad70f57abe69a37.tar.xz glibc-15daa63995211cbe576b28f88ad70f57abe69a37.zip |
Update.
1999-10-24 Ulrich Drepper <drepper@cygnus.com> * math/libm-test.inc: Disable some boundary case tests for inline function testing. * math/math.h: Pretty printing. * sysdeps/i386/fpu/e_atanh.S: Correct handling of NaN. * sysdeps/i386/fpu/e_atanhf.S: Likewise. * sysdeps/i386/fpu/e_atanhl.S: Likewise. * sysdeps/i386/fpu/e_log10.S: Likewise. * sysdeps/i386/fpu/e_log10f.S: Likewise. * sysdeps/i386/fpu/e_log10l.S: Likewise. * sysdeps/i386/fpu/s_log1p.S: Likewise. * sysdeps/i386/fpu/s_log1pf.S: Likewise. * sysdeps/i386/fpu/s_log1pl.S: Likewise. * sysdeps/i386/fpu/s_log2.S: Likewise. * sysdeps/i386/fpu/s_log2f.S: Likewise. * sysdeps/i386/fpu/s_log2l.S: Likewise. * sysdeps/i386/fpu/libm-test-ulps: New file. * sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Correct return value for x == 0. (pow): Correct case x == 0. (__sgn1l): Correct handling of -0.0. 1999-10-22 Andreas Jaeger <aj@suse.de> * math/libm-test.inc (asinh_test): Add test for NaN as input parameter. (atan_test): Likewise. (atanh_test): Likewise. (atan2_test): Likewise. (carg_test): Likewise. (ceil_test): Likewise. (cos_test): Likewise. (cosh_test): Likewise. (cpow_test): Likewise. (erf_test): Likewise. (erfc_test): Likewise. (exp_test): Likewise. (exp10_test): Likewise. (exp2_test): Likewise. (expm1_test): Likewise. (fabs_test): Likewise. (floor_test): Likewise. (fmod_test): Likewise. (gamma_test): Likewise. (lgamma_test): Likewise. (log10_test): Likewise. (log1p_test): Likewise. (log2_test): Likewise. (logb_test): Likewise. (nearbyint_test): Likewise. (remainder_test): Likewise. (remquo_test): Likewise. (sin_test): Likewise. (sincos_test): Likewise. (sinh_test): Likewise. (sqrt_test): Likewise. (tan_test): Likewise. (tanh_test): Likewise. (tgamma_test): Likewise.
Diffstat (limited to 'sysdeps/i386/fpu/bits')
-rw-r--r-- | sysdeps/i386/fpu/bits/mathinline.h | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h index bf077ba527..8545f6536c 100644 --- a/sysdeps/i386/fpu/bits/mathinline.h +++ b/sysdeps/i386/fpu/bits/mathinline.h @@ -324,7 +324,7 @@ __sincosl (long double __x, long double *__sinx, long double *__cosx) ("fscale # 2^int(x * log2(e))\n\t" \ : "=t" (__temp) : "0" (1.0), "u" (__exponent)); \ __temp -= 1.0; \ - return __temp + __value + return __temp + __value ?: __x __inline_mathcode_ (long double, __expm1l, __x, __expm1_code) @@ -383,8 +383,14 @@ __inline_mathcode2 (pow, __x, __y, \ register long double __value; \ register long double __exponent; \ __extension__ long long int __p = (long long int) __y; \ - if (__x == 0.0 && __y > 0.0) \ - return 0.0; \ + if (__x == 0.0) \ + { \ + if (__y > 0.0) \ + return __y == (double) __p && (__p & 1) != 0 ? __x : 0.0; \ + else if (__y < 0.0) \ + return (__y == (double) __p && (-__p & 1) != 0 \ + ? 1.0 / __x : 1.0 / fabs (__x)); \ + } \ if (__y == (double) __p) \ { \ long double __r = 1.0; \ @@ -448,7 +454,12 @@ __inline_mathop_decl (log10, "fldlg2; fxch; fyl2x", "0" (__x) : "st(1)") __inline_mathcode (asin, __x, return __atan2l (__x, __sqrtl (1.0 - __x * __x))) __inline_mathcode (acos, __x, return __atan2l (__sqrtl (1.0 - __x * __x), __x)) -__inline_mathcode_ (long double, __sgn1l, __x, return __x >= 0.0 ? 1.0 : -1.0) +__inline_mathcode_ (long double, __sgn1l, __x, \ + union { long double __xld; unsigned int __xi[3]; } __n = { .__xld = __x }; \ + __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; \ + __n.__xi[1] = 0x80000000; \ + __n.__xi[0] = 0; \ + return __n.__xld) /* The argument range of the inline version of sinhl is slightly reduced. */ |