parent
b1b8beece5
commit
f3cfac8981
|
@ -6,6 +6,13 @@
|
||||||
;; Count set bits for 30 bit number in 5 steps.
|
;; Count set bits for 30 bit number in 5 steps.
|
||||||
;; for 62 bit number in 6, for 8 bit numbers in 3
|
;; for 62 bit number in 6, for 8 bit numbers in 3
|
||||||
|
|
||||||
|
(define-for-syntax lut29
|
||||||
|
#(#x0AAAAAAA
|
||||||
|
#x0CCCCCCC
|
||||||
|
#x10F0F0F0
|
||||||
|
#x1F00FF00
|
||||||
|
#x1FFF0000))
|
||||||
|
|
||||||
(define-for-syntax lut30
|
(define-for-syntax lut30
|
||||||
#(#x2AAAAAAA
|
#(#x2AAAAAAA
|
||||||
#x0CCCCCCC
|
#x0CCCCCCC
|
||||||
|
@ -41,9 +48,10 @@
|
||||||
[bits (or bits
|
[bits (or bits
|
||||||
;; for portable bytecode, use a fixnum size tha
|
;; for portable bytecode, use a fixnum size tha
|
||||||
;; always works:
|
;; always works:
|
||||||
30)]
|
29)]
|
||||||
[lut
|
[lut
|
||||||
(cond [(<= bits 8) lut8]
|
(cond [(<= bits 8) lut8]
|
||||||
|
[(<= bits 29) lut29]
|
||||||
[(<= bits 30) lut30]
|
[(<= bits 30) lut30]
|
||||||
[(<= bits 62) lut62]
|
[(<= bits 62) lut62]
|
||||||
[else (raise-syntax-error "bit width too big" stx #'bits0)])])
|
[else (raise-syntax-error "bit width too big" stx #'bits0)])])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user