From a5f59da7e1749e6d07a7bd29980ee10ff20acef9 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 13 Oct 2013 20:20:05 -0700 Subject: [PATCH] math.bitwise: fix mask? to do what the docs say. --- basis/math/bitwise/bitwise-tests.factor | 2 ++ basis/math/bitwise/bitwise.factor | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/basis/math/bitwise/bitwise-tests.factor b/basis/math/bitwise/bitwise-tests.factor index e17ddbeec6..9073391e02 100644 --- a/basis/math/bitwise/bitwise-tests.factor +++ b/basis/math/bitwise/bitwise-tests.factor @@ -64,6 +64,8 @@ SPECIALIZED-ARRAY: uint-4 [ 3 ] [ 3 >odd ] unit-test [ 5 ] [ 4 >odd ] unit-test +[ t ] [ 0b111 0b110 mask? ] unit-test +[ f ] [ 0b101 0b110 mask? ] unit-test [ t ] [ 0xff 1 mask? ] unit-test [ f ] [ 0x0 1 mask? ] unit-test diff --git a/basis/math/bitwise/bitwise.factor b/basis/math/bitwise/bitwise.factor index 2d78dd856d..d73b8e8c2f 100644 --- a/basis/math/bitwise/bitwise.factor +++ b/basis/math/bitwise/bitwise.factor @@ -14,7 +14,7 @@ IN: math.bitwise : unmask ( x n -- ? ) bitnot bitand ; inline : unmask? ( x n -- ? ) unmask zero? not ; inline : mask ( x n -- ? ) bitand ; inline -: mask? ( x n -- ? ) mask zero? not ; inline +: mask? ( x n -- ? ) [ mask ] [ = ] bi ; inline : wrap ( m n -- m' ) 1 - bitand ; inline : on-bits ( m -- n ) dup 0 <= [ drop 0 ] [ 2^ 1 - ] if ; inline : bits ( m n -- m' ) on-bits mask ; inline