diff --git a/math/integer.go b/math/integer.go index db00215a..9c80c23b 100644 --- a/math/integer.go +++ b/math/integer.go @@ -2,11 +2,15 @@ package math import "math/bits" -func NextPow2(n uint) (twoN uint, N uint) { +// NextPow2 finds the next power of two (N=2^k, k>=0) greater than n. +// If n is already a power of two, then this function returns n, and log2(n). +func NextPow2(n uint) (N uint, k uint) { if bits.OnesCount(n) == 1 { - return n, uint(bits.TrailingZeros(n)) + k = uint(bits.TrailingZeros(n)) + N = n } else { - N = uint(bits.Len(n)) - return uint(1) << N, N + k = uint(bits.Len(n)) + N = uint(1) << k } + return }