]> gitweb.factorcode.org Git - factor.git/commitdiff
math.bitwise: some cleanup of zero handling.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 31 Aug 2012 22:58:54 +0000 (15:58 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 31 Aug 2012 22:58:54 +0000 (15:58 -0700)
basis/math/bitwise/bitwise.factor

index 785f77c711a0b0ca5553389de998d8233376de50..316b34d8d386b1ffdab11df85fffd2d3566a3eab 100644 (file)
@@ -10,18 +10,19 @@ IN: math.bitwise
 ! utilities
 : clear-bit ( x n -- y ) 2^ bitnot bitand ; inline
 : set-bit ( x n -- y ) 2^ bitor ; inline
-: bit-clear? ( x n -- ? ) 2^ bitand 0 = ; inline
+: bit-clear? ( x n -- ? ) 2^ bitand zero? ; inline
 : unmask ( x n -- ? ) bitnot bitand ; inline
-: unmask? ( x n -- ? ) unmask 0 > ; inline
+: unmask? ( x n -- ? ) unmask zero? not ; inline
 : mask ( x n -- ? ) bitand ; inline
-: mask? ( x n -- ? ) mask 0 > ; inline
+: mask? ( x n -- ? ) mask zero? not ; inline
 : wrap ( m n -- m' ) 1 - bitand ; inline
 : on-bits ( m -- n ) 2^ 1 - ; inline
 : bits ( m n -- m' ) on-bits mask ; inline
 : mask-bit ( m n -- m' ) 2^ mask ; inline
 : toggle-bit ( m n -- m' ) 2^ bitxor ; inline
 : >signed ( x n -- y )
-    [ bits ] keep 2dup neg 1 + shift 1 = [ 2^ - ] [ drop ] if ;
+    [ bits ] keep 2dup neg 1 + shift
+    1 number= [ 2^ - ] [ drop ] if ;
 : >odd ( m -- n ) 0 set-bit ; foldable
 : >even ( m -- n ) 0 clear-bit ; foldable
 : next-even ( m -- n ) >even 2 + ; foldable
@@ -109,9 +110,9 @@ M: fixnum (bit-count)
     fixnum-bit-count { fixnum } declare ; inline
 
 M: bignum (bit-count)
-    dup 0 = [ drop 0 ] [
+    [ 0 ] [
         [ byte-bit-count ] [ -8 shift (bit-count) ] bi +
-    ] if ;
+    ] if-zero ;
 
 : byte-array-bit-count ( byte-array -- n )
     0 [ byte-bit-count + ] reduce ; inline