]> Cypherpunks.ru repositories - gostls13.git/blob - src/runtime/fastlog2_test.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / src / runtime / fastlog2_test.go
1 // Copyright 2015 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package runtime_test
6
7 import (
8         "math"
9         "runtime"
10         "testing"
11 )
12
13 func TestFastLog2(t *testing.T) {
14         // Compute the euclidean distance between math.Log2 and the FastLog2
15         // implementation over the range of interest for heap sampling.
16         const randomBitCount = 26
17         var e float64
18
19         inc := 1
20         if testing.Short() {
21                 // Check 1K total values, down from 64M.
22                 inc = 1 << 16
23         }
24         for i := 1; i < 1<<randomBitCount; i += inc {
25                 l, fl := math.Log2(float64(i)), runtime.Fastlog2(float64(i))
26                 d := l - fl
27                 e += d * d
28         }
29         e = math.Sqrt(e)
30
31         if e > 1.0 {
32                 t.Fatalf("imprecision on fastlog2 implementation, want <=1.0, got %f", e)
33         }
34 }