blob: 975ec02760ffed4f8e776d3ed6a5389f5ce46a34 [file] [log] [blame]
// 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)
}
}