3BR6NSGOYSWGFSMQZGMWCCEKGJVLICBXCKCZ454PQ3E46OUVTQ7QC
floorLog :: (Num a, Bits a, Num b) => a -> b
floorLog 0 = -1
floorLog n = 1 + floorLog (n .>>. 1)
floorLog :: (Bits a, Num b) => a -> b
floorLog n
| n == zeroBits = -1
| otherwise = 1 + floorLog (n .>>. 1)