| // RUN: llgo -o %t %s |
| // RUN: %t 2>&1 | FileCheck %s |
| |
| // CHECK: 9223372036854775808 -63 false |
| // CHECK-NEXT: 11529215046068469760 -60 false |
| // CHECK-NEXT: 14411518807585587200 -57 false |
| // CHECK-NEXT: 18014398509481984000 -54 false |
| // CHECK-NEXT: 11258999068426240000 -50 false |
| // CHECK-NEXT: 14073748835532800000 -47 false |
| // CHECK-NEXT: 17592186044416000000 -44 false |
| // CHECK-NEXT: 10995116277760000000 -40 false |
| // CHECK-NEXT: 0 0 |
| // CHECK-NEXT: 1 0 |
| // CHECK-NEXT: 2 1 |
| // CHECK-NEXT: 3 0 |
| // CHECK-NEXT: 4 2 |
| // CHECK-NEXT: 5 0 |
| // CHECK-NEXT: 6 3 |
| // CHECK-NEXT: 7 0 |
| // CHECK-NEXT: 8 4 |
| // CHECK-NEXT: 9 0 |
| // CHECK-NEXT: 0 1 |
| // CHECK-NEXT: 1 2 |
| |
| package main |
| |
| // An extFloat represents an extended floating-point number, with more |
| // precision than a float64. It does not try to save bits: the |
| // number represented by the structure is mant*(2^exp), with a negative |
| // sign if neg is true. |
| type extFloat struct { |
| mant uint64 |
| exp int |
| neg bool |
| } |
| |
| var smallPowersOfTen = [...]extFloat{ |
| {1 << 63, -63, false}, // 1 |
| {0xa << 60, -60, false}, // 1e1 |
| {0x64 << 57, -57, false}, // 1e2 |
| {0x3e8 << 54, -54, false}, // 1e3 |
| {0x2710 << 50, -50, false}, // 1e4 |
| {0x186a0 << 47, -47, false}, // 1e5 |
| {0xf4240 << 44, -44, false}, // 1e6 |
| {0x989680 << 40, -40, false}, // 1e7 |
| } |
| |
| var arrayWithHoles = [10]int{ |
| 2: 1, |
| 4: 2, |
| 6: 3, |
| 8: 4, |
| } |
| |
| type namedInt int32 |
| |
| const N0 namedInt = 0 |
| const N1 namedInt = 1 |
| |
| var arrayWithNamedIndices = [...]int{ |
| N0: 1, |
| N1: 2, |
| } |
| |
| func main() { |
| for i := range smallPowersOfTen { |
| s := smallPowersOfTen[i] |
| println(s.mant, s.exp, s.neg) |
| } |
| |
| for i, value := range arrayWithHoles { |
| println(i, value) |
| } |
| |
| for i, value := range arrayWithNamedIndices { |
| println(i, value) |
| } |
| } |