File: pow-01.c

package info (click to toggle)
avr-libc 1%3A1.6.2.cvs20080610-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 14,848 kB
  • ctags: 55,619
  • sloc: ansic: 92,267; asm: 6,692; sh: 4,131; makefile: 2,481; python: 976; pascal: 426; perl: 116
file content (292 lines) | stat: -rw-r--r-- 18,439 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
/* Test of pow() function.
   $Id: pow-01.c,v 1.1 2007/02/05 21:35:58 dmix Exp $
 */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "progmem.h"

union lofl_u {
    long lo;
    float fl;
};

volatile union lofl_u v = { .lo = 1 };

PROGMEM const struct {		/* Table of test cases	*/
    union lofl_u x, y;		/* args		*/
    union lofl_u z;		/* pow(x,y)	*/
} t[] = {

    { { 0x00000000 },{ 0x00000000 },{ 0x3f800000 } }, /*    0    0      1 */
    { { 0x00000000 },{ 0x3f000000 },{ 0x00000000 } }, /*    0  0.5      0 */
    { { 0x00000000 },{ 0x3f800000 },{ 0x00000000 } }, /*    0    1      0 */
    { { 0x00000000 },{ 0x3fc00000 },{ 0x00000000 } }, /*    0  1.5      0 */
    { { 0x00000000 },{ 0x40000000 },{ 0x00000000 } }, /*    0    2      0 */
    { { 0x00000000 },{ 0x40400000 },{ 0x00000000 } }, /*    0    3      0 */
    { { 0x00000000 },{ 0x7f800000 },{ 0x00000000 } }, /*    0  inf      0 */
    { { 0x00000000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*    0  nan    nan */
    { { 0x00000000 },{ 0x80000000 },{ 0x3f800000 } }, /*    0   -0      1 */
    { { 0x00000000 },{ 0xbf000000 },{ 0x7f800000 } }, /*    0 -0.5    inf */
    { { 0x00000000 },{ 0xbf800000 },{ 0x7f800000 } }, /*    0   -1    inf */
    { { 0x00000000 },{ 0xbfc00000 },{ 0x7f800000 } }, /*    0 -1.5    inf */
    { { 0x00000000 },{ 0xc0000000 },{ 0x7f800000 } }, /*    0   -2    inf */
    { { 0x00000000 },{ 0xc0400000 },{ 0x7f800000 } }, /*    0   -3    inf */
    { { 0x00000000 },{ 0xff800000 },{ 0x7f800000 } }, /*    0 -inf    inf */

    { { 0x80000000 },{ 0x00000000 },{ 0x3f800000 } }, /*   -0    0      1 */
    { { 0x80000000 },{ 0x3f000000 },{ 0x00000000 } }, /*   -0  0.5      0 */
    { { 0x80000000 },{ 0x3f800000 },{ 0x80000000 } }, /*   -0    1     -0 */
    { { 0x80000000 },{ 0x3fc00000 },{ 0x00000000 } }, /*   -0  1.5      0 */
    { { 0x80000000 },{ 0x40000000 },{ 0x00000000 } }, /*   -0    2      0 */
    { { 0x80000000 },{ 0x40400000 },{ 0x80000000 } }, /*   -0    3     -0 */
    { { 0x80000000 },{ 0x7f800000 },{ 0x00000000 } }, /*   -0  inf      0 */
    { { 0x80000000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*   -0  nan    nan */
    { { 0x80000000 },{ 0x80000000 },{ 0x3f800000 } }, /*   -0   -0      1 */
    { { 0x80000000 },{ 0xbf000000 },{ 0x7f800000 } }, /*   -0 -0.5    inf */
    { { 0x80000000 },{ 0xbf800000 },{ 0xff800000 } }, /*   -0   -1   -inf */
    { { 0x80000000 },{ 0xbfc00000 },{ 0x7f800000 } }, /*   -0 -1.5    inf */
    { { 0x80000000 },{ 0xc0000000 },{ 0x7f800000 } }, /*   -0   -2    inf */
    { { 0x80000000 },{ 0xc0400000 },{ 0xff800000 } }, /*   -0   -3   -inf */
    { { 0x80000000 },{ 0xff800000 },{ 0x7f800000 } }, /*   -0 -inf    inf */

    { { 0x3f000000 },{ 0x00000000 },{ 0x3f800000 } }, /*  0.5    0      1 */
    { { 0x3f000000 },{ 0x3f000000 },{ 0x3f3504f3 } }, /*  0.5  0.5  0.707 */
    { { 0x3f000000 },{ 0x3f800000 },{ 0x3f000000 } }, /*  0.5    1    0.5 */
    { { 0x3f000000 },{ 0x3fc00000 },{ 0x3eb504f3 } }, /*  0.5  1.5  0.354 */
    { { 0x3f000000 },{ 0x40000000 },{ 0x3e800000 } }, /*  0.5    2   0.25 */
    { { 0x3f000000 },{ 0x40400000 },{ 0x3e000000 } }, /*  0.5    3  0.125 */
    { { 0x3f000000 },{ 0x7f800000 },{ 0x00000000 } }, /*  0.5  inf      0 */
    { { 0x3f000000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*  0.5  nan    nan */
    { { 0x3f000000 },{ 0x80000000 },{ 0x3f800000 } }, /*  0.5   -0      1 */
    { { 0x3f000000 },{ 0xbf000000 },{ 0x3fb504f3 } }, /*  0.5 -0.5   1.41 */
    { { 0x3f000000 },{ 0xbf800000 },{ 0x40000000 } }, /*  0.5   -1      2 */
    { { 0x3f000000 },{ 0xbfc00000 },{ 0x403504f3 } }, /*  0.5 -1.5   2.83 */
    { { 0x3f000000 },{ 0xc0000000 },{ 0x40800000 } }, /*  0.5   -2      4 */
    { { 0x3f000000 },{ 0xc0400000 },{ 0x41000000 } }, /*  0.5   -3      8 */
    { { 0x3f000000 },{ 0xff800000 },{ 0x7f800000 } }, /*  0.5 -inf    inf */

    { { 0xbf000000 },{ 0x00000000 },{ 0x3f800000 } }, /* -0.5    0      1 */
    { { 0xbf000000 },{ 0x3f000000 },{ 0xffc00000 } }, /* -0.5  0.5    nan */
    { { 0xbf000000 },{ 0x3f800000 },{ 0xbf000000 } }, /* -0.5    1   -0.5 */
    { { 0xbf000000 },{ 0x3fc00000 },{ 0xffc00000 } }, /* -0.5  1.5    nan */
    { { 0xbf000000 },{ 0x40000000 },{ 0x3e800000 } }, /* -0.5    2   0.25 */
    { { 0xbf000000 },{ 0x40400000 },{ 0xbe000000 } }, /* -0.5    3 -0.125 */
    { { 0xbf000000 },{ 0x7f800000 },{ 0x00000000 } }, /* -0.5  inf      0 */
    { { 0xbf000000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /* -0.5  nan    nan */
    { { 0xbf000000 },{ 0x80000000 },{ 0x3f800000 } }, /* -0.5   -0      1 */
    { { 0xbf000000 },{ 0xbf000000 },{ 0xffc00000 } }, /* -0.5 -0.5    nan */
    { { 0xbf000000 },{ 0xbf800000 },{ 0xc0000000 } }, /* -0.5   -1     -2 */
    { { 0xbf000000 },{ 0xbfc00000 },{ 0xffc00000 } }, /* -0.5 -1.5    nan */
    { { 0xbf000000 },{ 0xc0000000 },{ 0x40800000 } }, /* -0.5   -2      4 */
    { { 0xbf000000 },{ 0xc0400000 },{ 0xc1000000 } }, /* -0.5   -3     -8 */
    { { 0xbf000000 },{ 0xff800000 },{ 0x7f800000 } }, /* -0.5 -inf    inf */

    { { 0x3f800000 },{ 0x00000000 },{ 0x3f800000 } }, /*    1    0      1 */
    { { 0x3f800000 },{ 0x3f000000 },{ 0x3f800000 } }, /*    1  0.5      1 */
    { { 0x3f800000 },{ 0x3f800000 },{ 0x3f800000 } }, /*    1    1      1 */
    { { 0x3f800000 },{ 0x3fc00000 },{ 0x3f800000 } }, /*    1  1.5      1 */
    { { 0x3f800000 },{ 0x40000000 },{ 0x3f800000 } }, /*    1    2      1 */
    { { 0x3f800000 },{ 0x40400000 },{ 0x3f800000 } }, /*    1    3      1 */
    { { 0x3f800000 },{ 0x7f800000 },{ 0x3f800000 } }, /*    1  inf      1 */
    { { 0x3f800000 },{ 0x7fc00000 },{ 0x3f800000 } }, /*    1  nan      1 */
    { { 0x3f800000 },{ 0x80000000 },{ 0x3f800000 } }, /*    1   -0      1 */
    { { 0x3f800000 },{ 0xbf000000 },{ 0x3f800000 } }, /*    1 -0.5      1 */
    { { 0x3f800000 },{ 0xbf800000 },{ 0x3f800000 } }, /*    1   -1      1 */
    { { 0x3f800000 },{ 0xbfc00000 },{ 0x3f800000 } }, /*    1 -1.5      1 */
    { { 0x3f800000 },{ 0xc0000000 },{ 0x3f800000 } }, /*    1   -2      1 */
    { { 0x3f800000 },{ 0xc0400000 },{ 0x3f800000 } }, /*    1   -3      1 */
    { { 0x3f800000 },{ 0xff800000 },{ 0x3f800000 } }, /*    1 -inf      1 */

    { { 0xbf800000 },{ 0x00000000 },{ 0x3f800000 } }, /*   -1    0      1 */
    { { 0xbf800000 },{ 0x3f000000 },{ 0xffc00000 } }, /*   -1  0.5    nan */
    { { 0xbf800000 },{ 0x3f800000 },{ 0xbf800000 } }, /*   -1    1     -1 */
    { { 0xbf800000 },{ 0x3fc00000 },{ 0xffc00000 } }, /*   -1  1.5    nan */
    { { 0xbf800000 },{ 0x40000000 },{ 0x3f800000 } }, /*   -1    2      1 */
    { { 0xbf800000 },{ 0x40400000 },{ 0xbf800000 } }, /*   -1    3     -1 */
    { { 0xbf800000 },{ 0x7f800000 },{ 0x3f800000 } }, /*   -1  inf      1 */
    { { 0xbf800000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*   -1  nan    nan */
    { { 0xbf800000 },{ 0x80000000 },{ 0x3f800000 } }, /*   -1   -0      1 */
    { { 0xbf800000 },{ 0xbf000000 },{ 0xffc00000 } }, /*   -1 -0.5    nan */
    { { 0xbf800000 },{ 0xbf800000 },{ 0xbf800000 } }, /*   -1   -1     -1 */
    { { 0xbf800000 },{ 0xbfc00000 },{ 0xffc00000 } }, /*   -1 -1.5    nan */
    { { 0xbf800000 },{ 0xc0000000 },{ 0x3f800000 } }, /*   -1   -2      1 */
    { { 0xbf800000 },{ 0xc0400000 },{ 0xbf800000 } }, /*   -1   -3     -1 */
    { { 0xbf800000 },{ 0xff800000 },{ 0x3f800000 } }, /*   -1 -inf      1 */

    { { 0x3fc00000 },{ 0x00000000 },{ 0x3f800000 } }, /*  1.5    0      1 */
    { { 0x3fc00000 },{ 0x3f000000 },{ 0x3f9cc471 } }, /*  1.5  0.5   1.22 */
    { { 0x3fc00000 },{ 0x3f800000 },{ 0x3fc00000 } }, /*  1.5    1    1.5 */
    { { 0x3fc00000 },{ 0x3fc00000 },{ 0x3feb26a9 } }, /*  1.5  1.5   1.84 */
    { { 0x3fc00000 },{ 0x40000000 },{ 0x40100000 } }, /*  1.5    2   2.25 */
    { { 0x3fc00000 },{ 0x40400000 },{ 0x40580000 } }, /*  1.5    3   3.38 */
    { { 0x3fc00000 },{ 0x7f800000 },{ 0x7f800000 } }, /*  1.5  inf    inf */
    { { 0x3fc00000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*  1.5  nan    nan */
    { { 0x3fc00000 },{ 0x80000000 },{ 0x3f800000 } }, /*  1.5   -0      1 */
    { { 0x3fc00000 },{ 0xbf000000 },{ 0x3f5105ec } }, /*  1.5 -0.5  0.816 */
    { { 0x3fc00000 },{ 0xbf800000 },{ 0x3f2aaaab } }, /*  1.5   -1  0.667 */
    { { 0x3fc00000 },{ 0xbfc00000 },{ 0x3f0b5948 } }, /*  1.5 -1.5  0.544 */
    { { 0x3fc00000 },{ 0xc0000000 },{ 0x3ee38e39 } }, /*  1.5   -2  0.444 */
    { { 0x3fc00000 },{ 0xc0400000 },{ 0x3e97b426 } }, /*  1.5   -3  0.296 */
    { { 0x3fc00000 },{ 0xff800000 },{ 0x00000000 } }, /*  1.5 -inf      0 */

    { { 0xbfc00000 },{ 0x00000000 },{ 0x3f800000 } }, /* -1.5    0      1 */
    { { 0xbfc00000 },{ 0x3f000000 },{ 0xffc00000 } }, /* -1.5  0.5    nan */
    { { 0xbfc00000 },{ 0x3f800000 },{ 0xbfc00000 } }, /* -1.5    1   -1.5 */
    { { 0xbfc00000 },{ 0x3fc00000 },{ 0xffc00000 } }, /* -1.5  1.5    nan */
    { { 0xbfc00000 },{ 0x40000000 },{ 0x40100000 } }, /* -1.5    2   2.25 */
    { { 0xbfc00000 },{ 0x40400000 },{ 0xc0580000 } }, /* -1.5    3  -3.38 */
    { { 0xbfc00000 },{ 0x7f800000 },{ 0x7f800000 } }, /* -1.5  inf    inf */
    { { 0xbfc00000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /* -1.5  nan    nan */
    { { 0xbfc00000 },{ 0x80000000 },{ 0x3f800000 } }, /* -1.5   -0      1 */
    { { 0xbfc00000 },{ 0xbf000000 },{ 0xffc00000 } }, /* -1.5 -0.5    nan */
    { { 0xbfc00000 },{ 0xbf800000 },{ 0xbf2aaaab } }, /* -1.5   -1 -0.667 */
    { { 0xbfc00000 },{ 0xbfc00000 },{ 0xffc00000 } }, /* -1.5 -1.5    nan */
    { { 0xbfc00000 },{ 0xc0000000 },{ 0x3ee38e39 } }, /* -1.5   -2  0.444 */
    { { 0xbfc00000 },{ 0xc0400000 },{ 0xbe97b426 } }, /* -1.5   -3 -0.296 */
    { { 0xbfc00000 },{ 0xff800000 },{ 0x00000000 } }, /* -1.5 -inf      0 */

    { { 0x40000000 },{ 0x00000000 },{ 0x3f800000 } }, /*    2    0      1 */
    { { 0x40000000 },{ 0x3f000000 },{ 0x3fb504f3 } }, /*    2  0.5   1.41 */
    { { 0x40000000 },{ 0x3f800000 },{ 0x40000000 } }, /*    2    1      2 */
    { { 0x40000000 },{ 0x3fc00000 },{ 0x403504f3 } }, /*    2  1.5   2.83 */
    { { 0x40000000 },{ 0x40000000 },{ 0x40800000 } }, /*    2    2      4 */
    { { 0x40000000 },{ 0x40400000 },{ 0x41000000 } }, /*    2    3      8 */
    { { 0x40000000 },{ 0x7f800000 },{ 0x7f800000 } }, /*    2  inf    inf */
    { { 0x40000000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*    2  nan    nan */
    { { 0x40000000 },{ 0x80000000 },{ 0x3f800000 } }, /*    2   -0      1 */
    { { 0x40000000 },{ 0xbf000000 },{ 0x3f3504f3 } }, /*    2 -0.5  0.707 */
    { { 0x40000000 },{ 0xbf800000 },{ 0x3f000000 } }, /*    2   -1    0.5 */
    { { 0x40000000 },{ 0xbfc00000 },{ 0x3eb504f3 } }, /*    2 -1.5  0.354 */
    { { 0x40000000 },{ 0xc0000000 },{ 0x3e800000 } }, /*    2   -2   0.25 */
    { { 0x40000000 },{ 0xc0400000 },{ 0x3e000000 } }, /*    2   -3  0.125 */
    { { 0x40000000 },{ 0xff800000 },{ 0x00000000 } }, /*    2 -inf      0 */

    { { 0xc0000000 },{ 0x00000000 },{ 0x3f800000 } }, /*   -2    0      1 */
    { { 0xc0000000 },{ 0x3f000000 },{ 0xffc00000 } }, /*   -2  0.5    nan */
    { { 0xc0000000 },{ 0x3f800000 },{ 0xc0000000 } }, /*   -2    1     -2 */
    { { 0xc0000000 },{ 0x3fc00000 },{ 0xffc00000 } }, /*   -2  1.5    nan */
    { { 0xc0000000 },{ 0x40000000 },{ 0x40800000 } }, /*   -2    2      4 */
    { { 0xc0000000 },{ 0x40400000 },{ 0xc1000000 } }, /*   -2    3     -8 */
    { { 0xc0000000 },{ 0x7f800000 },{ 0x7f800000 } }, /*   -2  inf    inf */
    { { 0xc0000000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*   -2  nan    nan */
    { { 0xc0000000 },{ 0x80000000 },{ 0x3f800000 } }, /*   -2   -0      1 */
    { { 0xc0000000 },{ 0xbf000000 },{ 0xffc00000 } }, /*   -2 -0.5    nan */
    { { 0xc0000000 },{ 0xbf800000 },{ 0xbf000000 } }, /*   -2   -1   -0.5 */
    { { 0xc0000000 },{ 0xbfc00000 },{ 0xffc00000 } }, /*   -2 -1.5    nan */
    { { 0xc0000000 },{ 0xc0000000 },{ 0x3e800000 } }, /*   -2   -2   0.25 */
    { { 0xc0000000 },{ 0xc0400000 },{ 0xbe000000 } }, /*   -2   -3 -0.125 */
    { { 0xc0000000 },{ 0xff800000 },{ 0x00000000 } }, /*   -2 -inf      0 */

    { { 0x40400000 },{ 0x00000000 },{ 0x3f800000 } }, /*    3    0      1 */
    { { 0x40400000 },{ 0x3f000000 },{ 0x3fddb3d7 } }, /*    3  0.5   1.73 */
    { { 0x40400000 },{ 0x3f800000 },{ 0x40400000 } }, /*    3    1      3 */
    { { 0x40400000 },{ 0x3fc00000 },{ 0x40a646e1 } }, /*    3  1.5    5.2 */
    { { 0x40400000 },{ 0x40000000 },{ 0x41100000 } }, /*    3    2      9 */
    { { 0x40400000 },{ 0x40400000 },{ 0x41d80000 } }, /*    3    3     27 */
    { { 0x40400000 },{ 0x7f800000 },{ 0x7f800000 } }, /*    3  inf    inf */
    { { 0x40400000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*    3  nan    nan */
    { { 0x40400000 },{ 0x80000000 },{ 0x3f800000 } }, /*    3   -0      1 */
    { { 0x40400000 },{ 0xbf000000 },{ 0x3f13cd3a } }, /*    3 -0.5  0.577 */
    { { 0x40400000 },{ 0xbf800000 },{ 0x3eaaaaab } }, /*    3   -1  0.333 */
    { { 0x40400000 },{ 0xbfc00000 },{ 0x3e4511a3 } }, /*    3 -1.5  0.192 */
    { { 0x40400000 },{ 0xc0000000 },{ 0x3de38e39 } }, /*    3   -2  0.111 */
    { { 0x40400000 },{ 0xc0400000 },{ 0x3d17b426 } }, /*    3   -3  0.037 */
    { { 0x40400000 },{ 0xff800000 },{ 0x00000000 } }, /*    3 -inf      0 */

    { { 0xc0400000 },{ 0x00000000 },{ 0x3f800000 } }, /*   -3    0      1 */
    { { 0xc0400000 },{ 0x3f000000 },{ 0xffc00000 } }, /*   -3  0.5    nan */
    { { 0xc0400000 },{ 0x3f800000 },{ 0xc0400000 } }, /*   -3    1     -3 */
    { { 0xc0400000 },{ 0x3fc00000 },{ 0xffc00000 } }, /*   -3  1.5    nan */
    { { 0xc0400000 },{ 0x40000000 },{ 0x41100000 } }, /*   -3    2      9 */
    { { 0xc0400000 },{ 0x40400000 },{ 0xc1d80000 } }, /*   -3    3    -27 */
    { { 0xc0400000 },{ 0x7f800000 },{ 0x7f800000 } }, /*   -3  inf    inf */
    { { 0xc0400000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*   -3  nan    nan */
    { { 0xc0400000 },{ 0x80000000 },{ 0x3f800000 } }, /*   -3   -0      1 */
    { { 0xc0400000 },{ 0xbf000000 },{ 0xffc00000 } }, /*   -3 -0.5    nan */
    { { 0xc0400000 },{ 0xbf800000 },{ 0xbeaaaaab } }, /*   -3   -1 -0.333 */
    { { 0xc0400000 },{ 0xbfc00000 },{ 0xffc00000 } }, /*   -3 -1.5    nan */
    { { 0xc0400000 },{ 0xc0000000 },{ 0x3de38e39 } }, /*   -3   -2  0.111 */
    { { 0xc0400000 },{ 0xc0400000 },{ 0xbd17b426 } }, /*   -3   -3 -0.037 */
    { { 0xc0400000 },{ 0xff800000 },{ 0x00000000 } }, /*   -3 -inf      0 */

    { { 0x7f800000 },{ 0x00000000 },{ 0x3f800000 } }, /*  inf    0      1 */
    { { 0x7f800000 },{ 0x3f000000 },{ 0x7f800000 } }, /*  inf  0.5    inf */
    { { 0x7f800000 },{ 0x3f800000 },{ 0x7f800000 } }, /*  inf    1    inf */
    { { 0x7f800000 },{ 0x3fc00000 },{ 0x7f800000 } }, /*  inf  1.5    inf */
    { { 0x7f800000 },{ 0x40000000 },{ 0x7f800000 } }, /*  inf    2    inf */
    { { 0x7f800000 },{ 0x40400000 },{ 0x7f800000 } }, /*  inf    3    inf */
    { { 0x7f800000 },{ 0x7f800000 },{ 0x7f800000 } }, /*  inf  inf    inf */
    { { 0x7f800000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*  inf  nan    nan */
    { { 0x7f800000 },{ 0x80000000 },{ 0x3f800000 } }, /*  inf   -0      1 */
    { { 0x7f800000 },{ 0xbf000000 },{ 0x00000000 } }, /*  inf -0.5      0 */
    { { 0x7f800000 },{ 0xbf800000 },{ 0x00000000 } }, /*  inf   -1      0 */
    { { 0x7f800000 },{ 0xbfc00000 },{ 0x00000000 } }, /*  inf -1.5      0 */
    { { 0x7f800000 },{ 0xc0000000 },{ 0x00000000 } }, /*  inf   -2      0 */
    { { 0x7f800000 },{ 0xc0400000 },{ 0x00000000 } }, /*  inf   -3      0 */
    { { 0x7f800000 },{ 0xff800000 },{ 0x00000000 } }, /*  inf -inf      0 */

    { { 0xff800000 },{ 0x00000000 },{ 0x3f800000 } }, /* -inf    0      1 */
    { { 0xff800000 },{ 0x3f000000 },{ 0x7f800000 } }, /* -inf  0.5    inf */
    { { 0xff800000 },{ 0x3f800000 },{ 0xff800000 } }, /* -inf    1   -inf */
    { { 0xff800000 },{ 0x3fc00000 },{ 0x7f800000 } }, /* -inf  1.5    inf */
    { { 0xff800000 },{ 0x40000000 },{ 0x7f800000 } }, /* -inf    2    inf */
    { { 0xff800000 },{ 0x40400000 },{ 0xff800000 } }, /* -inf    3   -inf */
    { { 0xff800000 },{ 0x7f800000 },{ 0x7f800000 } }, /* -inf  inf    inf */
    { { 0xff800000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /* -inf  nan    nan */
    { { 0xff800000 },{ 0x80000000 },{ 0x3f800000 } }, /* -inf   -0      1 */
    { { 0xff800000 },{ 0xbf000000 },{ 0x00000000 } }, /* -inf -0.5      0 */
    { { 0xff800000 },{ 0xbf800000 },{ 0x80000000 } }, /* -inf   -1     -0 */
    { { 0xff800000 },{ 0xbfc00000 },{ 0x00000000 } }, /* -inf -1.5      0 */
    { { 0xff800000 },{ 0xc0000000 },{ 0x00000000 } }, /* -inf   -2      0 */
    { { 0xff800000 },{ 0xc0400000 },{ 0x80000000 } }, /* -inf   -3     -0 */
    { { 0xff800000 },{ 0xff800000 },{ 0x00000000 } }, /* -inf -inf      0 */

    { { 0x7fc00000 },{ 0x00000000 },{ 0x3f800000 } }, /*  nan    0      1 */
    { { 0x7fc00000 },{ 0x3f000000 },{ 0x7fc00000 } }, /*  nan  0.5    nan */
    { { 0x7fc00000 },{ 0x3f800000 },{ 0x7fc00000 } }, /*  nan    1    nan */
    { { 0x7fc00000 },{ 0x3fc00000 },{ 0x7fc00000 } }, /*  nan  1.5    nan */
    { { 0x7fc00000 },{ 0x40000000 },{ 0x7fc00000 } }, /*  nan    2    nan */
    { { 0x7fc00000 },{ 0x40400000 },{ 0x7fc00000 } }, /*  nan    3    nan */
    { { 0x7fc00000 },{ 0x7f800000 },{ 0x7fc00000 } }, /*  nan  inf    nan */
    { { 0x7fc00000 },{ 0x7fc00000 },{ 0x7fc00000 } }, /*  nan  nan    nan */
    { { 0x7fc00000 },{ 0x80000000 },{ 0x3f800000 } }, /*  nan   -0      1 */
    { { 0x7fc00000 },{ 0xbf000000 },{ 0x7fc00000 } }, /*  nan -0.5    nan */
    { { 0x7fc00000 },{ 0xbf800000 },{ 0x7fc00000 } }, /*  nan   -1    nan */
    { { 0x7fc00000 },{ 0xbfc00000 },{ 0x7fc00000 } }, /*  nan -1.5    nan */
    { { 0x7fc00000 },{ 0xc0000000 },{ 0x7fc00000 } }, /*  nan   -2    nan */
    { { 0x7fc00000 },{ 0xc0400000 },{ 0x7fc00000 } }, /*  nan   -3    nan */
    { { 0x7fc00000 },{ 0xff800000 },{ 0x7fc00000 } }, /*  nan -inf    nan */
};

void x_exit (int index)
{
#ifndef	__AVR__
    fprintf (stderr, "t[%d]:  %#lx\n", index - 1, v.lo);
#endif
    exit (index ? index : -1);
}

int main ()
{
    union lofl_u x,y,z;
    int i;
    
    for (i = 0; i < (int) (sizeof(t) / sizeof(t[0])); i++) {
	y.lo = pgm_read_dword (& t[i].y);
	x.lo = pgm_read_dword (& t[i].x);
	z.lo = pgm_read_dword (& t[i].z);
	v.fl = pow (x.fl, y.fl);
	/* Comparison is integer to verify the zero sign.	*/
	if (   (v.lo == z.lo)
	    || (isnan(v.fl) && isnan(z.fl)) )
	  continue;
	if (   isfinite(v.fl)
	    && isfinite(z.fl)
	    && !((v.lo ^ z.lo) & 0x80000000)	/* signbit(v) == signbit(z) */
	    && labs(v.lo - z.lo) <= 4 )
	  continue;
	x_exit (i+1);
    }
    return 0;
}