]> gitweb.factorcode.org Git - factor.git/blob - basis/checksums/adler-32/adler-32.factor
Create basis vocab root
[factor.git] / basis / checksums / adler-32 / adler-32.factor
1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: checksums classes.singleton kernel math math.ranges
4 math.vectors sequences ;
5 IN: checksums.adler-32
6
7 SINGLETON: adler-32
8
9 : adler-32-modulus 65521 ; inline
10
11 M: adler-32 checksum-bytes ( bytes checksum -- value )
12     drop
13     [ sum 1+ ]
14     [ [ dup length [1,b] <reversed> v. ] [ length ] bi + ] bi
15     [ adler-32-modulus mod ] bi@ 16 shift bitor ;