| * Test m68k extended double denormals. |
| #define TEST(X, Y) { X, Y, X * Y } |
| static volatile long double test[][3] = { |
| TEST(0x1p+16383l, 0x1p-16446l), |
| TEST(0x1.1p-8223l, 0x1.1p-8224l), |
| static void dump_ld(const char *label, long double ld) |
| printf("%12s: % -27La 0x%04x 0x%08x 0x%08x\n", label, u.d, u.exp, u.h, u.l); |
| int i, n = sizeof(test) / sizeof(test[0]), err = 0; |
| for (i = 0; i < n; ++i) { |
| long double x = test[i][0]; |
| long double y = test[i][1]; |
| long double build_mul = test[i][2]; |
| long double runtime_mul = x * y; |
| if (runtime_mul != build_mul) { |
| dump_ld("build_mul", build_mul); |
| dump_ld("runtime_mul", runtime_mul); |