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