lib/core: Added `Int::is_pow2` to library
authorLucas Bajolet <r4pass@hotmail.com>
Sat, 28 May 2016 17:26:25 +0000 (13:26 -0400)
committerLucas Bajolet <r4pass@hotmail.com>
Sat, 28 May 2016 17:26:25 +0000 (13:26 -0400)
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

lib/core/math.nit

index 0f8325f..7b51e2a 100644 (file)
@@ -169,6 +169,16 @@ redef class Int
                end
                return res
        end
+
+       # Is `self` a power of two ?
+       #
+       # ~~~nit
+       # assert not 3.is_pow2
+       # assert 2.is_pow2
+       # assert 1.is_pow2
+       # assert not 0.is_pow2
+       # ~~~
+       fun is_pow2: Bool do return self != 0 and (self & self - 1) == 0
 end
 
 redef class Byte