"Raymond" == Raymond Toy toy@rtp.ericsson.se writes:
Raymond> Apologies for the long post.
Raymond> I decided it would be useful to see how the C version of the Raymond> ieeefp-tests works. I've appended the double-float output file Raymond> generated via GCC on a sparc/solaris8 box.
[snip]
Raymond> Total 68 tests: pass 68, flags err 0, value err 0, coshd
So all coshd tests pass. But the Lisp version says not. In particular double-cosh-value.10 fails. The expected result is most-positive-double-float, but we return infinity. Calling kernel:%cosh returns infinity too.
A simple C test program for sparc confirms that cosh does indeed return infinity. So either the C test is messed up or my simple test is.
Aargh.
Ray
#include <stdio.h> #include <math.h> #include <ieeefp.h>
union dnum { long words[2]; double fl; };
int main() { union dnum x; union dnum y;
x.words[0] = 0xC08633CE; x.words[1] = 0x8FB9F87E;
printf("x = %lg\n", x.fl);
fpsetround(FP_RM);
y.fl = cosh(x.fl);
printf("y = 0x%08lx%08lx = %lg\n", y.words[0], y.words[1], y.fl);
return 0; }
Output:
x = -710.476 y = 0x7ff0000000000000 = Inf