This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] PPC fixes for long double
- From: Steve Munroe <sjmunroe at us dot ibm dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: libc-alpha at sources dot redhat dot com
- Date: Tue, 31 Jan 2006 14:34:03 -0600
- Subject: Re: [PATCH] PPC fixes for long double
Steven J. Munroe
Linux on Power Toolchain Architect
IBM Corporation, Linux Technology Center
Jakub Jelinek <jakub@redhat.com> wrote on 01/31/2006 10:23:10 AM:
> On Tue, Jan 31, 2006 at 10:12:35AM -0600, Steven Munroe wrote:
> > This patch resolves the ulps failures in cprojl, ctanhl, ctanl, ceill,
> > floorl, and the Bessel functions (j0, j1, jn, y0, y1, yn).
> >
> > The double double runtime does not propigate -0.0 correctly in some
> > case. So I have to add fixup code to some complex functions. Similarly
> > ceill, floorl needed explicite handling for the correct sign of 0.0;
> >
> > Also found that the k_cosl, k_sinl, k_sincosl did not compute the
index
> > into the __sincosl_table correcly for double double. The result is bad
> > values for larger radian inputs and cause the Bessel function
failures.
> > Hacked around it by converting the high 32-bit (integer form) of the
> > high double to ieee extended and used the index calc from the ldbl-128
> > (ieee extended) version.
>
> Great to see Bessel fns resolved. But could you avoid decreasing ulps
> in the ulps file? While on ppc32 we require GCC 4.1+ (if Mark accepts
> the changes) now, on ppc64 we do not and some older GCCs might result
> in bigger ulps. So *double/*float numbers really shouldn't change
> when touching only long double routines.
>
I did not intend to change the *double/*float values just reorder them for
legibility. I was trying to eliminate the high ulps you had put in for
broken the bessel functions.
I am trying to verify ppc64 -mlong-double-128 with gcc-3.4, but we are
currently seeing a ICE in while compiling vfprintf.