1
/* Test of multiplication. Overflow.
2
$Id: mul-03.c,v 1.1 2007/02/05 21:35:58 dmix Exp $
13
volatile union lofl_u v = { .lo = 1 };
15
PROGMEM const struct { /* Table of test cases: x * y = z */
19
{ { .fl = 0x0.ffffffp64 }, { .fl = 0x0.ffffffp64 }, { 0x7f7ffffe } },
20
{ { .fl = 0x0.800000p65 }, { .fl = 0x0.ffffffp64 }, { 0x7f7fffff } },
21
{ { .fl = 0x0.800000p65 }, { .fl = 0x0.800000p65 }, { 0x7f800000 } },
22
{ { .fl = 0x0.800001p65 }, { .fl = 0x0.800000p65 }, { 0x7f800000 } },
23
{ { .fl = 0x0.800000p65 }, { .fl = 0x0.800001p65 }, { 0x7f800000 } },
24
{ { .fl = 0x0.800001p65 }, { .fl = 0x0.800001p65 }, { 0x7f800000 } },
26
{ { 0x7f7fffff }, { 0x7f7fffff }, { 0x7f800000 } },
27
{ { 0x7f7fffff }, { 0xff7fffff }, { 0xff800000 } },
28
{ { 0xff7fffff }, { 0x7f7fffff }, { 0xff800000 } },
29
{ { 0xff7fffff }, { 0xff7fffff }, { 0x7f800000 } },
32
void x_exit (int index)
35
fprintf (stderr, "t[%d]: %#lx\n", index - 1, v.lo);
37
exit (index ? index : -1);
45
for (i = 0; i < (int) (sizeof(t) / sizeof(t[0])); i++) {
46
x.lo = pgm_read_dword (& t[i].x);
47
y.lo = pgm_read_dword (& t[i].y);
48
z.lo = pgm_read_dword (& t[i].z);
50
/* Comparison is integer to verify the zero sign. */