Source file
test/prove_popcount.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package main
16
17 import "math/bits"
18
19 func onesCountsBounds(x uint64, ensureAllBranchesCouldHappen func() bool) int {
20 z := bits.OnesCount64(x)
21 if ensureAllBranchesCouldHappen() && z > 64 {
22 return 42
23 }
24 if ensureAllBranchesCouldHappen() && z <= 64 {
25 return 4242
26 }
27 if ensureAllBranchesCouldHappen() && z < 0 {
28 return 424242
29 }
30 if ensureAllBranchesCouldHappen() && z >= 0 {
31 return 42424242
32 }
33 return z
34 }
35
36 func onesCountsTight(x uint64, ensureAllBranchesCouldHappen func() bool) int {
37 const maxv = 0xff0f
38 const minv = 0xff00
39 x = max(x, minv)
40 x = min(x, maxv)
41
42 z := bits.OnesCount64(x)
43
44 if ensureAllBranchesCouldHappen() && z > bits.OnesCount64(maxv) {
45 return 42
46 }
47 if ensureAllBranchesCouldHappen() && z <= bits.OnesCount64(maxv) {
48 return 4242
49 }
50 if ensureAllBranchesCouldHappen() && z < bits.OnesCount64(minv) {
51 return 424242
52 }
53 if ensureAllBranchesCouldHappen() && z >= bits.OnesCount64(minv) {
54 return 42424242
55 }
56 return z
57 }
58
59 func main() {
60 }
61
View as plain text