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