1.1b: asinh breaks at -O1
Jeffrey A Law
law@cygnus.com
Sun Oct 25 19:39:00 GMT 1998
In message < 19981001222047.A19471@zensunni >you write:
> [This problem has been reported as a bug through the Debian bugtracking
> system ( http://www.debian.org/Bugs/ ); please Cc: 27146@bugs.debian.org on
> on-topic replies]
>
> OS: Linux 2.0.35
> Architecture: i686
> egcs: 1.1b
> libc: GNU libc 2.0.7 (aka libc6)
>
> Code test.c:
> #include <stdlib.h>
> #include <math.h>
>
> int main()
> {
> double z = 3;
>
> printf("glib result asinh(%f)=%f\n", -z, asinh(-z));
> printf("glib result asinh(%f)=%f\n", z, asinh(z));
> exit(0);
> }
>
> Behaviour:
>
> egcc -O0 test.c -lm ; ./a.out # As expected
> glib result asinh(-3.000000)=-1.818446
> glib result asinh(3.000000)=1.818446
>
> egcc -O1 test.c -lm ; ./a.out # bug: asinh misbehaves with negative argumen
> t
> glib result asinh(-3.000000)=NaN
> glib result asinh(3.000000)=1.818446
Can someone who either a. Knows the x86 or b. has a debugger which will
print the FP variables under linux take a look at this?
I'd do it, but I don't know the x86 well enough to just look at the assembly
code and figure out what's going on. And for reasons I don't want to know, gdb
won't access the floating point regs on a linux box, so I can't run it under
the debugger to find out why we're losing.
jeff
More information about the Gcc-bugs
mailing list