Messages in this thread | | | From | Kumar Gala <> | Subject | Re: math-emu issue with fp divide | Date | Fri, 13 Jun 2008 10:49:04 -0500 |
| |
On Jun 12, 2008, at 11:24 PM, David Miller wrote:
> From: Kumar Gala <galak@kernel.crashing.org> > Date: Thu, 5 Jun 2008 08:38:44 -0500 (CDT) > >> Now that I'm digging into this a bit I'm thinking my issue has to >> do with >> the fix you put in place from back in Aug 2007 (commit >> 405849610fd96b4f34cd1875c4c033228fea6c0f): >> >> [MATH-EMU]: Fix underflow exception reporting. >> >> 2) we ended up rounding back up to normal (this is the case where >> we set the exponent to 1 and set the fraction to zero), this >> should set inexact too >> ... >> >> Another example, "0x0.0000000000001p-1022 / 16.0", should signal >> both >> inexact and underflow. The cpu implementations and ieee1754 >> literature is very clear about this. This is case #2 above. >> >> I'm not clear from your commit comment on what actual number >> 0x0.0....01p-1022 is? > > I haven't been able to look closely at this yet but I think I > happened to stumble over the test case that lead me to that > changeset you are referencing here. > > The "actual number" is exactly as listed "0x0.0000000000001p-1022", > I don't know what's so confusing about it :-)))
I don't think I've ever seen the notation before :)
> I think this was distilled by Jakub Jelinek from some glibc test case. > > #include <float.h> > #include <fenv.h> > #include <stdio.h> > > volatile double d = DBL_MIN; > volatile double e = 0x0.0000000000001p-1022; > volatile double f = 16.0; > int > main (void) > { > printf ("%x\n", fetestexcept (FE_UNDERFLOW)); > d /= f; > printf ("%x\n", fetestexcept (FE_UNDERFLOW)); > e /= f; > printf ("%x\n", fetestexcept (FE_UNDERFLOW)); > return 0; > }
Cool, I'll try this out and see what it does on PPC HW and w/my current EMU. I'll also see if I can work up a test case to show the issue I've set a patch for.
- k
| |