```
Source File
fastlog2.go
Belonging Package
runtime
```

`// Copyright 2015 The Go Authors. All rights reserved.`

`// Use of this source code is governed by a BSD-style`

`// license that can be found in the LICENSE file.`

`package runtime`

`// fastlog2 implements a fast approximation to the base 2 log of a`

`// float64. This is used to compute a geometric distribution for heap`

`// sampling, without introducing dependencies into package math. This`

`// uses a very rough approximation using the float64 exponent and the`

`// first 25 bits of the mantissa. The top 5 bits of the mantissa are`

`// used to load limits from a table of constants and the rest are used`

`// to scale linearly between them.`

`func fastlog2( float64) float64 {`

`const = 20`

`const = 1.0 / (1 << )`

`:= float64bits()`

`// Extract the exponent from the IEEE float64, and index a constant`

`// table with the first 10 bits from the mantissa.`

`:= int64((>>52)&0x7FF) - 1023`

`:= ( >> (52 - fastlogNumBits)) % (1 << fastlogNumBits)`

`:= ( >> (52 - fastlogNumBits - )) % (1 << )`

`, := fastlog2Table[], fastlog2Table[+1]`

`return float64() + + (-)*float64()*`

`}`

The pages are generated with Golds v0.6.4. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |