Message ID | lig7bv$9gj$1@ger.gmane.org |
---|---|
State | New |
Headers | show |
On 14-04-2014 05:47, Stefan Liebler wrote: > Thanks for the hint with SET_RESTORE_ROUND macro. > Here is the updated version. > Tested on s390/s390x. > > Ok for commit? > > Bye > LGTM.
On 04/14/2014 10:47 AM, Stefan Liebler wrote: >>> 2014-04-11 Stefan Liebler <stli@linux.vnet.ibm.com> >>> >>> [BZ #16824] >>> * sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_y1l): >>> Set round-to-nearest internally to reduce error accumulation. Applied. Thanks! -Andreas-
Stefan Liebler <stli@linux.vnet.ibm.com> writes: > diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c > index 70a1c86..1264c95 100644 > --- a/sysdeps/ieee754/ldbl-128/e_j1l.c > +++ b/sysdeps/ieee754/ldbl-128/e_j1l.c > @@ -856,6 +856,7 @@ __ieee754_y1l (long double x) > if (xx <= 2.0L) > { > /* 0 <= x <= 2 */ > + SET_RESTORE_ROUNDL (FE_TONEAREST); In file included from ../sysdeps/ieee754/flt-32/math_private.h:3:0, from ../sysdeps/powerpc/fpu/math_private.h:26, from ../sysdeps/ieee754/ldbl-128/e_j1l.c:99, from ../sysdeps/ieee754/ldbl-128ibm/e_j1l.c:2: ../sysdeps/ieee754/ldbl-128/e_j1l.c: In function '__ieee754_y1l': ../sysdeps/generic/math_private.h:579:10: error: cleanup argument not a function struct rm_ctx ctx __attribute__((cleanup(CLEANUPFUNC ## _ctx))); \ ^ ../sysdeps/generic/math_private.h:594:3: note: in expansion of macro 'SET_RESTORE_ROUND_GENERIC' SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundl, libc_feresetroundl) ^ ../sysdeps/ieee754/ldbl-128/e_j1l.c:859:7: note: in expansion of macro 'SET_RESTORE_ROUNDL' SET_RESTORE_ROUNDL (FE_TONEAREST); ^ ../sysdeps/generic/math_private.h:579:10: warning: implicit declaration of function 'libc_feholdsetroundl_ctx' [-Wimplicit-function-declaration] struct rm_ctx ctx __attribute__((cleanup(CLEANUPFUNC ## _ctx))); \ ^ ../sysdeps/generic/math_private.h:594:3: note: in expansion of macro 'SET_RESTORE_ROUND_GENERIC' SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundl, libc_feresetroundl) ^ ../sysdeps/ieee754/ldbl-128/e_j1l.c:859:7: note: in expansion of macro 'SET_RESTORE_ROUNDL' SET_RESTORE_ROUNDL (FE_TONEAREST); ^ /home/abuild/rpmbuild/BUILD/glibc-2.19.90/cc-base/sysd-rules:2775: recipe for target '/home/abuild/rpmbuild/BUILD/glibc-2.19.90/cc-base/math/e_j1l.o' failed Andreas.
diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c index 70a1c86..1264c95 100644 --- a/sysdeps/ieee754/ldbl-128/e_j1l.c +++ b/sysdeps/ieee754/ldbl-128/e_j1l.c @@ -856,6 +856,7 @@ __ieee754_y1l (long double x) if (xx <= 2.0L) { /* 0 <= x <= 2 */ + SET_RESTORE_ROUNDL (FE_TONEAREST); z = xx * xx; p = xx * neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D); p = -TWOOPI / xx + p;