...

Source file src/runtime/fastlog2_test.go

Documentation: runtime

		 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  }
		35  

View as plain text