1
/* Test of multiplication. NaNs.
2
$Id: mul-nan.c,v 1.1 2007/02/05 21:35:58 dmix Exp $
14
volatile union lofl_u v = { .lo = 1 };
16
PROGMEM const struct { /* Table of test cases: x * y = NaN */
21
{ { 0x00000000 }, { 0x7f800000 } },
22
{ { 0x00000000 }, { 0xff800000 } },
23
{ { 0x80000000 }, { 0x7f800000 } },
24
{ { 0x80000000 }, { 0xff800000 } },
27
{ { 0x7f800000 }, { 0x00000000 } },
28
{ { 0xff800000 }, { 0x00000000 } },
29
{ { 0x7f800000 }, { 0x80000000 } },
30
{ { 0xff800000 }, { 0x80000000 } },
33
{ { 0x7f800001 }, { 0x7f800001 } },
34
{ { 0x7f800100 }, { 0x7f800100 } },
35
{ { 0x7f810000 }, { 0x7f810000 } },
36
{ { 0x7fffffff }, { 0x7fffffff } },
37
{ { 0xff800001 }, { 0xff800001 } },
38
{ { 0xff800100 }, { 0xff800100 } },
39
{ { 0xff810000 }, { 0xff810000 } },
40
{ { 0xffffffff }, { 0xffffffff } },
43
{ { 0x7f800001 }, { .fl = 1 } },
44
{ { 0x7f800100 }, { .fl = 1 } },
45
{ { 0x7f810000 }, { .fl = 1 } },
46
{ { 0x7fffffff }, { .fl = 1 } },
47
{ { 0xff800001 }, { .fl = 1 } },
48
{ { 0xff800100 }, { .fl = 1 } },
49
{ { 0xff810000 }, { .fl = 1 } },
50
{ { 0xffffffff }, { .fl = 1 } },
53
{ { .fl = 1 }, { 0x7f800001 } },
54
{ { .fl = 1 }, { 0x7f800100 } },
55
{ { .fl = 1 }, { 0x7f810000 } },
56
{ { .fl = 1 }, { 0x7fffffff } },
57
{ { .fl = 1 }, { 0xff800001 } },
58
{ { .fl = 1 }, { 0xff800100 } },
59
{ { .fl = 1 }, { 0xff810000 } },
60
{ { .fl = 1 }, { 0xffffffff } },
63
{ { 0x7f800001 }, { 0 } },
64
{ { 0x7f800100 }, { 0 } },
65
{ { 0x7f810000 }, { 0 } },
66
{ { 0x7fffffff }, { 0 } },
67
{ { 0xff800001 }, { 0 } },
68
{ { 0xff800100 }, { 0 } },
69
{ { 0xff810000 }, { 0 } },
70
{ { 0xffffffff }, { 0 } },
73
{ { 0 }, { 0x7f800001 } },
74
{ { 0 }, { 0x7f800100 } },
75
{ { 0 }, { 0x7f810000 } },
76
{ { 0 }, { 0x7fffffff } },
77
{ { 0 }, { 0xff800001 } },
78
{ { 0 }, { 0xff800100 } },
79
{ { 0 }, { 0xff810000 } },
80
{ { 0 }, { 0xffffffff } },
83
{ { 0x7f800001 }, { 0x7f800000 } },
84
{ { 0x7fffffff }, { 0x7f800000 } },
85
{ { 0xff800001 }, { 0xff800000 } },
86
{ { 0xffffffff }, { 0xff800000 } },
89
{ { 0x7f800000 }, { 0x7f800001 } },
90
{ { 0x7f800000 }, { 0x7fffffff } },
91
{ { 0xff800000 }, { 0xff800001 } },
92
{ { 0xff800000 }, { 0xffffffff } },
95
void x_exit (int index)
98
fprintf (stderr, "t[%d]: %#lx\n", index - 1, v.lo);
100
exit (index ? index : -1);
108
for (i = 0; i < (int) (sizeof(t) / sizeof(t[0])); i++) {
109
x.lo = pgm_read_dword (& t[i].x);
110
y.lo = pgm_read_dword (& t[i].y);