1
/* Test of trunc() function.
2
$Id: trunc-01.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. */
17
union lofl_u x; /* argument */
18
union lofl_u z; /* trunc(x) */
22
{ { .fl= +0.0 }, { .fl= +0.0 } },
23
{ { .fl= -0.0 }, { .fl= -0.0 } },
26
{ { .fl= 0.1 }, { .fl= 0.0 } },
27
{ { .fl= 1.9 }, { .fl= 1.0 } },
28
{ { .fl= 1000000.5 }, { .fl= 1000000.0 } },
29
{ { .fl= -0.1 }, { .fl= -0.0 } },
30
{ { .fl= -1.9 }, { .fl= -1.0 } },
31
{ { .fl= -1000000.5 }, { .fl= -1000000.0 } },
34
{ { 0x7f800000 }, { 0x7f800000 } },
35
{ { 0xff800000 }, { 0xff800000 } },
38
{ { 0x00000001 }, { 0x00000000 } },
39
{ { 0x00000100 }, { 0x00000000 } },
40
{ { 0x00010000 }, { 0x00000000 } },
41
{ { 0x007fffff }, { 0x00000000 } },
42
{ { 0x80000001 }, { .fl= -0.0 } },
43
{ { 0x80000100 }, { .fl= -0.0 } },
44
{ { 0x80010000 }, { .fl= -0.0 } },
45
{ { 0x807fffff }, { .fl= -0.0 } },
48
{ { 0x3f7fffff }, { .fl= 0.0 } },
49
{ { 0x3f800000 }, { .fl= 1.0 } },
50
{ { 0x3f800001 }, { .fl= 1.0 } },
51
{ { 0x3fffffff }, { .fl= 1.0 } },
52
{ { 0x40000000 }, { .fl= 2.0 } },
53
{ { 0x40000001 }, { .fl= 2.0 } },
54
{ { 0x403fffff }, { .fl= 2.0 } },
55
{ { .fl= 0x0.ffffffp+23 }, { .fl= 0x0.fffffep+23 } },
56
{ { .fl= 0x1.000000p+23 }, { .fl= 0x1.000000p+23 } },
57
{ { 0x7f7fffff }, { 0x7f7fffff } },
59
{ { 0xbf7fffff }, { .fl= -0.0 } },
60
{ { 0xbf800000 }, { .fl= -1.0 } },
61
{ { 0xbf800001 }, { .fl= -1.0 } },
62
{ { 0xbfffffff }, { .fl= -1.0 } },
63
{ { 0xc0000000 }, { .fl= -2.0 } },
64
{ { 0xc0000001 }, { .fl= -2.0 } },
65
{ { 0xc03fffff }, { .fl= -2.0 } },
66
{ { .fl= -0x0.ffffffp+23 }, { .fl= -0x0.fffffep+23 } },
67
{ { .fl= -0x1.000000p+23 }, { .fl= -0x1.000000p+23 } },
68
{ { 0xff7fffff }, { 0xff7fffff } },
70
/* All possible shifts */
71
{ { .fl= 0x0.ffffffp+00 }, { .fl= 0x0p+00 } },
72
{ { .fl= 0x0.ffffffp+01 }, { .fl= 0x1p+00 } },
73
{ { .fl= 0x0.ffffffp+02 }, { .fl= 0x3p+00 } },
74
{ { .fl= 0x0.ffffffp+03 }, { .fl= 0x7p+00 } },
75
{ { .fl= 0x0.ffffffp+04 }, { .fl= 0xfp+00 } },
76
{ { .fl= 0x0.ffffffp+05 }, { .fl= 0x1fp+00 } },
77
{ { .fl= 0x0.ffffffp+06 }, { .fl= 0x3fp+00 } },
78
{ { .fl= 0x0.ffffffp+07 }, { .fl= 0x7fp+00 } },
79
{ { .fl= 0x0.ffffffp+08 }, { .fl= 0xffp+00 } },
80
{ { .fl= 0x0.ffffffp+09 }, { .fl= 0x1ffp+00 } },
81
{ { .fl= 0x0.ffffffp+10 }, { .fl= 0x3ffp+00 } },
82
{ { .fl= 0x0.ffffffp+11 }, { .fl= 0x7ffp+00 } },
83
{ { .fl= 0x0.ffffffp+12 }, { .fl= 0xfffp+00 } },
84
{ { .fl= 0x0.ffffffp+13 }, { .fl= 0x1fffp+00 } },
85
{ { .fl= 0x0.ffffffp+14 }, { .fl= 0x3fffp+00 } },
86
{ { .fl= 0x0.ffffffp+15 }, { .fl= 0x7fffp+00 } },
87
{ { .fl= 0x0.ffffffp+16 }, { .fl= 0xffffp+00 } },
88
{ { .fl= 0x0.ffffffp+17 }, { .fl= 0x1ffffp+00 } },
89
{ { .fl= 0x0.ffffffp+18 }, { .fl= 0x3ffffp+00 } },
90
{ { .fl= 0x0.ffffffp+19 }, { .fl= 0x7ffffp+00 } },
91
{ { .fl= 0x0.ffffffp+20 }, { .fl= 0xfffffp+00 } },
92
{ { .fl= 0x0.ffffffp+21 }, { .fl= 0x1fffffp+00 } },
93
{ { .fl= 0x0.ffffffp+22 }, { .fl= 0x3fffffp+00 } },
94
{ { .fl= 0x0.ffffffp+23 }, { .fl= 0x7fffffp+00 } },
95
{ { .fl= 0x0.ffffffp+24 }, { .fl= 0xffffffp+00 } },
96
{ { .fl= 0x0.ffffffp+25 }, { .fl= 0xffffffp+01 } },
97
{ { .fl= 0x0.ffffffp+26 }, { .fl= 0xffffffp+02 } },
98
{ { .fl= 0x0.ffffffp+27 }, { .fl= 0xffffffp+03 } },
99
{ { .fl= 0x0.ffffffp+28 }, { .fl= 0xffffffp+04 } },
100
{ { .fl= 0x0.ffffffp+29 }, { .fl= 0xffffffp+05 } },
102
/* All possible shifts, negative value */
103
{ { .fl= -0x0.ffffffp+00 }, { .fl= -0x0p+00 } },
104
{ { .fl= -0x0.ffffffp+01 }, { .fl= -0x1p+00 } },
105
{ { .fl= -0x0.ffffffp+02 }, { .fl= -0x3p+00 } },
106
{ { .fl= -0x0.ffffffp+03 }, { .fl= -0x7p+00 } },
107
{ { .fl= -0x0.ffffffp+04 }, { .fl= -0xfp+00 } },
108
{ { .fl= -0x0.ffffffp+05 }, { .fl= -0x1fp+00 } },
109
{ { .fl= -0x0.ffffffp+06 }, { .fl= -0x3fp+00 } },
110
{ { .fl= -0x0.ffffffp+07 }, { .fl= -0x7fp+00 } },
111
{ { .fl= -0x0.ffffffp+08 }, { .fl= -0xffp+00 } },
112
{ { .fl= -0x0.ffffffp+09 }, { .fl= -0x1ffp+00 } },
113
{ { .fl= -0x0.ffffffp+10 }, { .fl= -0x3ffp+00 } },
114
{ { .fl= -0x0.ffffffp+11 }, { .fl= -0x7ffp+00 } },
115
{ { .fl= -0x0.ffffffp+12 }, { .fl= -0xfffp+00 } },
116
{ { .fl= -0x0.ffffffp+13 }, { .fl= -0x1fffp+00 } },
117
{ { .fl= -0x0.ffffffp+14 }, { .fl= -0x3fffp+00 } },
118
{ { .fl= -0x0.ffffffp+15 }, { .fl= -0x7fffp+00 } },
119
{ { .fl= -0x0.ffffffp+16 }, { .fl= -0xffffp+00 } },
120
{ { .fl= -0x0.ffffffp+17 }, { .fl= -0x1ffffp+00 } },
121
{ { .fl= -0x0.ffffffp+18 }, { .fl= -0x3ffffp+00 } },
122
{ { .fl= -0x0.ffffffp+19 }, { .fl= -0x7ffffp+00 } },
123
{ { .fl= -0x0.ffffffp+20 }, { .fl= -0xfffffp+00 } },
124
{ { .fl= -0x0.ffffffp+21 }, { .fl= -0x1fffffp+00 } },
125
{ { .fl= -0x0.ffffffp+22 }, { .fl= -0x3fffffp+00 } },
126
{ { .fl= -0x0.ffffffp+23 }, { .fl= -0x7fffffp+00 } },
127
{ { .fl= -0x0.ffffffp+24 }, { .fl= -0xffffffp+00 } },
128
{ { .fl= -0x0.ffffffp+25 }, { .fl= -0xffffffp+01 } },
129
{ { .fl= -0x0.ffffffp+26 }, { .fl= -0xffffffp+02 } },
130
{ { .fl= -0x0.ffffffp+27 }, { .fl= -0xffffffp+03 } },
131
{ { .fl= -0x0.ffffffp+28 }, { .fl= -0xffffffp+04 } },
132
{ { .fl= -0x0.ffffffp+29 }, { .fl= -0xffffffp+05 } },
135
void x_exit (int index)
138
fprintf (stderr, "t[%d]: %#lx\n", index - 1, v.lo);
140
exit (index ? index : -1);
148
for (i = 0; i < (int) (sizeof(t) / sizeof(t[0])); i++) {
149
x.lo = pgm_read_dword (& t[i].x);
150
z.lo = pgm_read_dword (& t[i].z);
152
/* Comparison is integer to verify the zero sign. */