bit-sets: efficient bitwise operations on bit-arrays
parent
1a6c555ead
commit
f042019337
|
@ -0,0 +1 @@
|
|||
Slava Pestov
|
|
@ -0,0 +1,17 @@
|
|||
IN: bit-sets.tests
|
||||
USING: bit-sets tools.test bit-arrays ;
|
||||
|
||||
[ ?{ t f t f t f } ] [
|
||||
?{ t f f f t f }
|
||||
?{ f f t f t f } bit-set-union
|
||||
] unit-test
|
||||
|
||||
[ ?{ f f f f t f } ] [
|
||||
?{ t f f f t f }
|
||||
?{ f f t f t f } bit-set-intersect
|
||||
] unit-test
|
||||
|
||||
[ ?{ t f t f f f } ] [
|
||||
?{ t t t f f f }
|
||||
?{ f t f f t t } bit-set-diff
|
||||
] unit-test
|
|
@ -0,0 +1,29 @@
|
|||
! Copyright (C) 2009 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel accessors sequences byte-arrays bit-arrays math hints ;
|
||||
IN: bit-sets
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: bit-set-map ( seq1 seq2 quot -- seq )
|
||||
[ 2drop length>> ]
|
||||
[
|
||||
[
|
||||
[ [ length ] bi@ assert= ]
|
||||
[ [ underlying>> ] bi@ ] 2bi
|
||||
] dip 2map
|
||||
] 3bi bit-array boa ; inline
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: bit-set-union ( seq1 seq2 -- seq ) [ bitor ] bit-set-map ;
|
||||
|
||||
HINTS: bit-set-union bit-array bit-array ;
|
||||
|
||||
: bit-set-intersect ( seq1 seq2 -- seq ) [ bitand ] bit-set-map ;
|
||||
|
||||
HINTS: bit-set-intersect bit-array bit-array ;
|
||||
|
||||
: bit-set-diff ( seq1 seq2 -- seq ) [ bitnot bitand ] bit-set-map ;
|
||||
|
||||
HINTS: bit-set-diff bit-array bit-array ;
|
|
@ -0,0 +1 @@
|
|||
Efficient bitwise operations on bit arrays
|
Loading…
Reference in New Issue