Misc.hs
1 2 module Misc where 3 4 -------------------------------------------------------------------------------- 5 6 import Data.Bits 7 8 -------------------------------------------------------------------------------- 9 10 -- | Smallest integer @k@ such that @2^k@ is larger or equal to @n@ 11 ceilingLog2 :: Integer -> Int 12 ceilingLog2 0 = 0 13 ceilingLog2 n = 1 + go (n-1) where 14 go 0 = -1 15 go k = 1 + go (shiftR k 1) 16 17 --------------------------------------------------------------------------------