1
// $G $D/$F.go && $L $F.$A && ./$A.out
3
// Copyright 2010 The Go Authors. All rights reserved.
4
// Use of this source code is governed by a BSD-style
5
// license that can be found in the LICENSE file.
7
// near-exhaustive test of converting numbers between types.
44
/* value good in all types (10) */
45
{ ti8, ti8, 10 }, { ti8, tu8, 10 }, { ti8, ti16, 10 }, { ti8, tu16, 10 },
46
{ ti8, ti32, 10 }, { ti8, tu32, 10 }, { ti8, ti64, 10 }, { ti8, tu64, 10 },
47
{ ti8, tf32, 10 }, { ti8, tf64, 10 },
49
{ tu8, ti8, 10 }, { tu8, tu8, 10 }, { tu8, ti16, 10 }, { tu8, tu16, 10 },
50
{ tu8, ti32, 10 }, { tu8, tu32, 10 }, { tu8, ti64, 10 }, { tu8, tu64, 10 },
51
{ tu8, tf32, 10 }, { tu8, tf64, 10 },
53
{ ti16, ti8, 10 }, { ti16, tu8, 10 }, { ti16, ti16, 10 }, { ti16, tu16, 10 },
54
{ ti16, ti32, 10 }, { ti16, tu32, 10 }, { ti16, ti64, 10 }, { ti16, tu64, 10 },
55
{ ti16, tf32, 10 }, { ti16, tf64, 10 },
57
{ tu16, ti8, 10 }, { tu16, tu8, 10 }, { tu16, ti16, 10 }, { tu16, tu16, 10 },
58
{ tu16, ti32, 10 }, { tu16, tu32, 10 }, { tu16, ti64, 10 }, { tu16, tu64, 10 },
59
{ tu16, tf32, 10 }, { tu16, tf64, 10 },
61
{ ti32, ti8, 10 }, { ti32, tu8, 10 }, { ti32, ti16, 10 }, { ti32, tu16, 10 },
62
{ ti32, ti32, 10 }, { ti32, tu32, 10 }, { ti32, ti64, 10 }, { ti32, tu64, 10 },
63
{ ti32, tf32, 10 }, { ti32, tf64, 10 },
65
{ tu32, ti8, 10 }, { tu32, tu8, 10 }, { tu32, ti16, 10 }, { tu32, tu16, 10 },
66
{ tu32, ti32, 10 }, { tu32, tu32, 10 }, { tu32, ti64, 10 }, { tu32, tu64, 10 },
67
{ tu32, tf32, 10 }, { tu32, tf64, 10 },
69
{ ti64, ti8, 10 }, { ti64, tu8, 10 }, { ti64, ti16, 10 }, { ti64, tu16, 10 },
70
{ ti64, ti32, 10 }, { ti64, tu32, 10 }, { ti64, ti64, 10 }, { ti64, tu64, 10 },
71
{ ti64, tf32, 10 }, { ti64, tf64, 10 },
73
{ tu64, ti8, 10 }, { tu64, tu8, 10 }, { tu64, ti16, 10 }, { tu64, tu16, 10 },
74
{ tu64, ti32, 10 }, { tu64, tu32, 10 }, { tu64, ti64, 10 }, { tu64, tu64, 10 },
75
{ tu64, tf32, 10 }, { tu64, tf64, 10 },
77
{ tf32, ti8, 10 }, { tf32, tu8, 10 }, { tf32, ti16, 10 }, { tf32, tu16, 10 },
78
{ tf32, ti32, 10 }, { tf32, tu32, 10 }, { tf32, ti64, 10 }, { tf32, tu64, 10 },
79
{ tf32, tf32, 10 }, { tf32, tf64, 10 },
81
{ tf64, ti8, 10 }, { tf64, tu8, 10 }, { tf64, ti16, 10 }, { tf64, tu16, 10 },
82
{ tf64, ti32, 10 }, { tf64, tu32, 10 }, { tf64, ti64, 10 }, { tf64, tu64, 10 },
83
{ tf64, tf32, 10 }, { tf64, tf64, 10 },
85
/* value good in all signed types (-4) */
86
{ ti8, ti8, -4 }, { ti8, ti16, -4 },
87
{ ti8, ti32, -4 }, { ti8, ti64, -4 },
88
{ ti8, tf32, -4 }, { ti8, tf64, -4 },
90
{ ti16, ti8, -4 }, { ti16, ti16, -4 },
91
{ ti16, ti32, -4 }, { ti16, ti64, -4 },
94
{ ti32, ti8, -4 }, { ti32, ti16, -4 },
95
{ ti32, ti32, -4 }, { ti32, ti64, -4 },
96
{ ti32, tf32, -4 }, { ti32, tf64, -4 },
98
{ ti64, ti8, -4 }, { ti64, ti16, -4 },
99
{ ti64, ti32, -4 }, { ti64, ti64, -4 },
102
{ tf32, ti8, -4 }, { tf32, ti16, -4 },
103
{ tf32, ti32, -4 }, { tf32, ti64, -4 },
106
{ tf64, ti8, -4 }, { tf64, ti16, -4 },
107
{ tf64, ti32, -4 }, { tf64, ti64, -4 },
108
{ tf64, tf32, -4 }, { tf64, tf64, -4 },
110
/* value good in u8 and up (175) */
111
{ tu8, tu8, 175 }, { tu8, ti16, 175 }, { tu8, tu16, 175 },
112
{ tu8, ti32, 175 }, { tu8, tu32, 175 }, { tu8, ti64, 175 }, { tu8, tu64, 175 },
113
{ tu8, tf32, 175 }, { tu8, tf64, 175 },
115
{ ti16, tu8, 175 }, { ti16, ti16, 175 }, { ti16, tu16, 175 },
116
{ ti16, ti32, 175 }, { ti16, tu32, 175 }, { ti16, ti64, 175 }, { ti16, tu64, 175 },
117
{ ti16, tf32, 175 }, { ti16, tf64, 175 },
119
{ tu16, tu8, 175 }, { tu16, ti16, 175 }, { tu16, tu16, 175 },
120
{ tu16, ti32, 175 }, { tu16, tu32, 175 }, { tu16, ti64, 175 }, { tu16, tu64, 175 },
121
{ tu16, tf32, 175 }, { tu16, tf64, 175 },
123
{ ti32, tu8, 175 }, { ti32, ti16, 175 }, { ti32, tu16, 175 },
124
{ ti32, ti32, 175 }, { ti32, tu32, 175 }, { ti32, ti64, 175 }, { ti32, tu64, 175 },
125
{ ti32, tf32, 175 }, { ti32, tf64, 175 },
127
{ tu32, tu8, 175 }, { tu32, ti16, 175 }, { tu32, tu16, 175 },
128
{ tu32, ti32, 175 }, { tu32, tu32, 175 }, { tu32, ti64, 175 }, { tu32, tu64, 175 },
129
{ tu32, tf32, 175 }, { tu32, tf64, 175 },
131
{ ti64, tu8, 175 }, { ti64, ti16, 175 }, { ti64, tu16, 175 },
132
{ ti64, ti32, 175 }, { ti64, tu32, 175 }, { ti64, ti64, 175 }, { ti64, tu64, 175 },
133
{ ti64, tf32, 175 }, { ti64, tf64, 175 },
135
{ tu64, tu8, 175 }, { tu64, ti16, 175 }, { tu64, tu16, 175 },
136
{ tu64, ti32, 175 }, { tu64, tu32, 175 }, { tu64, ti64, 175 }, { tu64, tu64, 175 },
137
{ tu64, tf32, 175 }, { tu64, tf64, 175 },
139
{ tf32, tu8, 175 }, { tf32, ti16, 175 }, { tf32, tu16, 175 },
140
{ tf32, ti32, 175 }, { tf32, tu32, 175 }, { tf32, ti64, 175 }, { tf32, tu64, 175 },
141
{ tf32, tf32, 175 }, { tf32, tf64, 175 },
143
{ tf64, tu8, 175 }, { tf64, ti16, 175 }, { tf64, tu16, 175 },
144
{ tf64, ti32, 175 }, { tf64, tu32, 175 }, { tf64, ti64, 175 }, { tf64, tu64, 175 },
145
{ tf64, tf32, 175 }, { tf64, tf64, 175 },
147
/* value good in u16 and up (41259) */
148
{ tu16, tu16, 41259 },
149
{ tu16, ti32, 41259 }, { tu16, ti64, 41259 }, { tu16, tu64, 41259 },
150
{ tu16, tf32, 41259 }, { tu16, tf64, 41259 },
152
{ ti32, tu16, 41259 },
153
{ ti32, ti32, 41259 }, { ti32, tu32, 41259 }, { ti32, ti64, 41259 }, { ti32, tu64, 41259 },
154
{ ti32, tf32, 41259 }, { ti32, tf64, 41259 },
156
{ tu32, tu16, 41259 },
157
{ tu32, ti32, 41259 }, { tu32, tu32, 41259 }, { tu32, ti64, 41259 }, { tu32, tu64, 41259 },
158
{ tu32, tf32, 41259 }, { tu32, tf64, 41259 },
160
{ ti64, tu16, 41259 },
161
{ ti64, ti32, 41259 }, { ti64, tu32, 41259 }, { ti64, ti64, 41259 }, { ti64, tu64, 41259 },
162
{ ti64, tf32, 41259 }, { ti64, tf64, 41259 },
164
{ tu64, tu16, 41259 },
165
{ tu64, ti32, 41259 }, { tu64, tu32, 41259 }, { tu64, ti64, 41259 }, { tu64, tu64, 41259 },
166
{ tu64, tf32, 41259 }, { tu64, tf64, 41259 },
168
{ tf32, tu16, 41259 },
169
{ tf32, ti32, 41259 }, { tf32, tu32, 41259 }, { tf32, ti64, 41259 }, { tf32, tu64, 41259 },
170
{ tf32, tf32, 41259 }, { tf32, tf64, 41259 },
172
{ tf64, tu16, 41259 },
173
{ tf64, ti32, 41259 }, { tf64, tu32, 41259 }, { tf64, ti64, 41259 }, { tf64, tu64, 41259 },
174
{ tf64, tf32, 41259 }, { tf64, tf64, 41259 },
176
/* value good in u32 and up (3758096384) */
177
{ tu32, tu32, 3758096384 }, { tu32, ti64, 3758096384 }, { tu32, tu64, 3758096384 },
178
{ tu32, tf32, 3758096384 }, { tu32, tf64, 3758096384 },
180
{ ti64, tu32, 3758096384 }, { ti64, ti64, 3758096384 }, { ti64, tu64, 3758096384 },
181
{ ti64, tf32, 3758096384 }, { ti64, tf64, 3758096384 },
183
{ tu64, tu32, 3758096384 }, { tu64, ti64, 3758096384 }, { tu64, tu64, 3758096384 },
184
{ tu64, tf32, 3758096384 }, { tu64, tf64, 3758096384 },
186
{ tf32, tu32, 3758096384 }, { tf32, ti64, 3758096384 }, { tf32, tu64, 3758096384 },
187
{ tf32, tf32, 3758096384 }, { tf32, tf64, 3758096384 },
189
{ tf64, tu32, 3758096384 }, { tf64, ti64, 3758096384 }, { tf64, tu64, 3758096384 },
190
{ tf64, tf32, 3758096384 }, { tf64, tf64, 3758096384 },
192
/* value good in u64 and up (16717361816799281152) */
193
{ tu64, tu64, 16717361816799281152 },
194
{ tu64, tf32, 16717361816799281152 }, { tu64, tf64, 16717361816799281152 },
196
{ tf32, tu64, 16717361816799281152 },
197
{ tf32, tf32, 16717361816799281152 }, { tf32, tf64, 16717361816799281152 },
199
{ tf64, tu64, 16717361816799281152 },
200
{ tf64, tf32, 16717361816799281152 }, { tf64, tf64, 16717361816799281152 },
204
for i:=0; i<len(x); i++ {
205
v := x[i].val // input value
206
w := big(0) // output value
207
f := x[i].from // input type
208
t := x[i].to // output type
210
i8 = 0; u8 = 0; i16 = 0; u16 = 0
211
i32 = 0; u32 = 0; i64 = 0; u64 = 0
216
println("missing case", i, v, f, t)
220
i8 = int8(v); i8 = int8(i8); w = big(i8)
222
i8 = int8(v); u8 = uint8(i8); w = big(u8)
224
i8 = int8(v); i16 = int16(i8); w = big(i16)
226
i8 = int8(v); u16 = uint16(i8); w = big(u16)
228
i8 = int8(v); i32 = int32(i8); w = big(i32)
230
i8 = int8(v); u32 = uint32(i8); w = big(u32)
232
i8 = int8(v); i64 = int64(i8); w = big(i64)
234
i8 = int8(v); u64 = uint64(i8); w = big(u64)
236
i8 = int8(v); f32 = float32(i8); w = big(f32)
238
i8 = int8(v); f64 = float64(i8); w = big(f64)
241
u8 = uint8(v); i8 = int8(u8); w = big(i8)
243
u8 = uint8(v); u8 = uint8(u8); w = big(u8)
245
u8 = uint8(v); i16 = int16(u8); w = big(i16)
247
u8 = uint8(v); u16 = uint16(u8); w = big(u16)
249
u8 = uint8(v); i32 = int32(u8); w = big(i32)
251
u8 = uint8(v); u32 = uint32(u8); w = big(u32)
253
u8 = uint8(v); i64 = int64(u8); w = big(i64)
255
u8 = uint8(v); u64 = uint64(u8); w = big(u64)
257
u8 = uint8(v); f32 = float32(u8); w = big(f32)
259
u8 = uint8(v); f64 = float64(u8); w = big(f64)
262
i16 = int16(v); i8 = int8(i16); w = big(i8)
264
i16 = int16(v); u8 = uint8(i16); w = big(u8)
265
case ti16*100 + ti16:
266
i16 = int16(v); i16 = int16(i16); w = big(i16)
267
case ti16*100 + tu16:
268
i16 = int16(v); u16 = uint16(i16); w = big(u16)
269
case ti16*100 + ti32:
270
i16 = int16(v); i32 = int32(i16); w = big(i32)
271
case ti16*100 + tu32:
272
i16 = int16(v); u32 = uint32(i16); w = big(u32)
273
case ti16*100 + ti64:
274
i16 = int16(v); i64 = int64(i16); w = big(i64)
275
case ti16*100 + tu64:
276
i16 = int16(v); u64 = uint64(i16); w = big(u64)
277
case ti16*100 + tf32:
278
i16 = int16(v); f32 = float32(i16); w = big(f32)
279
case ti16*100 + tf64:
280
i16 = int16(v); f64 = float64(i16); w = big(f64)
283
u16 = uint16(v); i8 = int8(u16); w = big(i8)
285
u16 = uint16(v); u8 = uint8(u16); w = big(u8)
286
case tu16*100 + ti16:
287
u16 = uint16(v); i16 = int16(u16); w = big(i16)
288
case tu16*100 + tu16:
289
u16 = uint16(v); u16 = uint16(u16); w = big(u16)
290
case tu16*100 + ti32:
291
u16 = uint16(v); i32 = int32(u16); w = big(i32)
292
case tu16*100 + tu32:
293
u16 = uint16(v); u32 = uint32(u16); w = big(u32)
294
case tu16*100 + ti64:
295
u16 = uint16(v); i64 = int64(u16); w = big(i64)
296
case tu16*100 + tu64:
297
u16 = uint16(v); u64 = uint64(u16); w = big(u64)
298
case tu16*100 + tf32:
299
u16 = uint16(v); f32 = float32(u16); w = big(f32)
300
case tu16*100 + tf64:
301
u16 = uint16(v); f64 = float64(u16); w = big(f64)
304
i32 = int32(v); i8 = int8(i32); w = big(i8)
306
i32 = int32(v); u8 = uint8(i32); w = big(u8)
307
case ti32*100 + ti16:
308
i32 = int32(v); i16 = int16(i32); w = big(i16)
309
case ti32*100 + tu16:
310
i32 = int32(v); u16 = uint16(i32); w = big(u16)
311
case ti32*100 + ti32:
312
i32 = int32(v); i32 = int32(i32); w = big(i32)
313
case ti32*100 + tu32:
314
i32 = int32(v); u32 = uint32(i32); w = big(u32)
315
case ti32*100 + ti64:
316
i32 = int32(v); i64 = int64(i32); w = big(i64)
317
case ti32*100 + tu64:
318
i32 = int32(v); u64 = uint64(i32); w = big(u64)
319
case ti32*100 + tf32:
320
i32 = int32(v); f32 = float32(i32); w = big(f32)
321
case ti32*100 + tf64:
322
i32 = int32(v); f64 = float64(i32); w = big(f64)
325
u32 = uint32(v); i8 = int8(u32); w = big(i8)
327
u32 = uint32(v); u8 = uint8(u32); w = big(u8)
328
case tu32*100 + ti16:
329
u32 = uint32(v); i16 = int16(u32); w = big(i16)
330
case tu32*100 + tu16:
331
u32 = uint32(v); u16 = uint16(u32); w = big(u16)
332
case tu32*100 + ti32:
333
u32 = uint32(v); i32 = int32(u32); w = big(i32)
334
case tu32*100 + tu32:
335
u32 = uint32(v); u32 = uint32(u32); w = big(u32)
336
case tu32*100 + ti64:
337
u32 = uint32(v); i64 = int64(u32); w = big(i64)
338
case tu32*100 + tu64:
339
u32 = uint32(v); u64 = uint64(u32); w = big(u64)
340
case tu32*100 + tf32:
341
u32 = uint32(v); f32 = float32(u32); w = big(f32)
342
case tu32*100 + tf64:
343
u32 = uint32(v); f64 = float64(u32); w = big(f64)
346
i64 = int64(v); i8 = int8(i64); w = big(i8)
348
i64 = int64(v); u8 = uint8(i64); w = big(u8)
349
case ti64*100 + ti16:
350
i64 = int64(v); i16 = int16(i64); w = big(i16)
351
case ti64*100 + tu16:
352
i64 = int64(v); u16 = uint16(i64); w = big(u16)
353
case ti64*100 + ti32:
354
i64 = int64(v); i32 = int32(i64); w = big(i32)
355
case ti64*100 + tu32:
356
i64 = int64(v); u32 = uint32(i64); w = big(u32)
357
case ti64*100 + ti64:
358
i64 = int64(v); i64 = int64(i64); w = big(i64)
359
case ti64*100 + tu64:
360
i64 = int64(v); u64 = uint64(i64); w = big(u64)
361
case ti64*100 + tf32:
362
i64 = int64(v); f32 = float32(i64); w = big(f32)
363
case ti64*100 + tf64:
364
i64 = int64(v); f64 = float64(i64); w = big(f64)
367
u64 = uint64(v); i8 = int8(u64); w = big(i8)
369
u64 = uint64(v); u8 = uint8(u64); w = big(u8)
370
case tu64*100 + ti16:
371
u64 = uint64(v); i16 = int16(u64); w = big(i16)
372
case tu64*100 + tu16:
373
u64 = uint64(v); u16 = uint16(u64); w = big(u16)
374
case tu64*100 + ti32:
375
u64 = uint64(v); i32 = int32(u64); w = big(i32)
376
case tu64*100 + tu32:
377
u64 = uint64(v); u32 = uint32(u64); w = big(u32)
378
case tu64*100 + ti64:
379
u64 = uint64(v); i64 = int64(u64); w = big(i64)
380
case tu64*100 + tu64:
381
u64 = uint64(v); u64 = uint64(u64); w = big(u64)
382
case tu64*100 + tf32:
383
u64 = uint64(v); f32 = float32(u64); w = big(f32)
384
case tu64*100 + tf64:
385
u64 = uint64(v); f64 = float64(u64); w = big(f64)
388
f32 = float32(v); i8 = int8(f32); w = big(i8)
390
f32 = float32(v); u8 = uint8(f32); w = big(u8)
391
case tf32*100 + ti16:
392
f32 = float32(v); i16 = int16(f32); w = big(i16)
393
case tf32*100 + tu16:
394
f32 = float32(v); u16 = uint16(f32); w = big(u16)
395
case tf32*100 + ti32:
396
f32 = float32(v); i32 = int32(f32); w = big(i32)
397
case tf32*100 + tu32:
398
f32 = float32(v); u32 = uint32(f32); w = big(u32)
399
case tf32*100 + ti64:
400
f32 = float32(v); i64 = int64(f32); w = big(i64)
401
case tf32*100 + tu64:
402
f32 = float32(v); u64 = uint64(f32); w = big(u64)
403
case tf32*100 + tf32:
404
f32 = float32(v); f32 = float32(f32); w = big(f32)
405
case tf32*100 + tf64:
406
f32 = float32(v); f64 = float64(f32); w = big(f64)
409
f64 = float64(v); i8 = int8(f64); w = big(i8)
411
f64 = float64(v); u8 = uint8(f64); w = big(u8)
412
case tf64*100 + ti16:
413
f64 = float64(v); i16 = int16(f64); w = big(i16)
414
case tf64*100 + tu16:
415
f64 = float64(v); u16 = uint16(f64); w = big(u16)
416
case tf64*100 + ti32:
417
f64 = float64(v); i32 = int32(f64); w = big(i32)
418
case tf64*100 + tu32:
419
f64 = float64(v); u32 = uint32(f64); w = big(u32)
420
case tf64*100 + ti64:
421
f64 = float64(v); i64 = int64(f64); w = big(i64)
422
case tf64*100 + tu64:
423
f64 = float64(v); u64 = uint64(f64); w = big(u64)
424
case tf64*100 + tf32:
425
f64 = float64(v); f32 = float32(f64); w = big(f32)
426
case tf64*100 + tf64:
427
f64 = float64(v); f64 = float64(f64); w = big(f64)
429
if v != w { println(i, v, w, f, t) }