forked from OSchip/llvm-project
79 lines
1.7 KiB
Go
79 lines
1.7 KiB
Go
// 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)
|
|
}
|
|
}
|