]> gitweb.factorcode.org Git - factor.git/blob - basis/checksums/adler-32/adler-32.factor
factor: Move math.ranges => ranges.
[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 ranges
4 math.vectors sequences ;
5 IN: checksums.adler-32
6
7 SINGLETON: adler-32
8
9 CONSTANT: adler-32-modulus 65521
10
11 M: adler-32 checksum-bytes
12     drop
13     [ sum 1 + ]
14     [ [ dup length [1..b] <reversed> vdot ] [ length ] bi + ] bi
15     [ adler-32-modulus mod ] bi@ 16 shift bitor ;
16
17 INSTANCE: adler-32 checksum