On Wed, Jun 14, 2006 at 10:21:00AM -0400, Tyson Whitehead wrote:
> I was fooling around on my Alpha and just noticed that all the special IEEE
> numbers (infs, nans, and denormals) are now being replaced by zeros.
> For example,
> #include <stdio.h>
>
> int main() {
> double value1;
> double value2;
> printf("Please enter the num: ");
> scanf("%lf",&value1);
> printf("Please enter the den: ");
> scanf("%lf",&value2);
> printf("\n%g/%g = %g\n",value1,value2,value1/value2);
> return 0;
> }
> saved to "div.c" and compiled with "gcc -o div -lm -Wall div.c" gives
> 0/0 = 0 (should be nan)
> 1/0 = 0 (should be inf)
> 1e-320/2 = 0 (should be 5e-321: 1e-320 is a denormalized)
> Dumping the generated code with "objdump -d div | less" shows gcc is
> generating all the required trap instructions and su extentions on the
> floating point operations. This leaves me wondering if something has changed
> in the IEEE floating point fixup code in newer kernels.
> Unfortunately, I'm stuck at 2.6.15 or greater due to new udev requirements
> (and only 2.6.16 is available), but is there anyone else out there running an
> older kernel (maybe even 2.4) that could give this a try?
FWIW, I've tested on my ev56 with 2.6.15 and 2.6.16 and see the same
behavior as you. I have no idea about earlier kernels, I don't have enough
space on /boot to install random old kernels for testing; but perhaps you
could try booting from the sarge installer and mounting your partition for a
test?
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
vorlon@debian.org http://www.debian.org/
Attachment:
signature.asc
Description: Digital signature