1 ! Copyright (C) 2013 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: checksums endian grouping kernel math sequences ;
10 SINGLETON: fletcher-64
12 INSTANCE: fletcher-16 checksum
13 INSTANCE: fletcher-32 checksum
14 INSTANCE: fletcher-64 checksum
16 :: fletcher ( seq k -- n )
20 0 0 seq chars <groups> [
21 be> + modulo mod [ + modulo mod ] keep
22 ] each [ base * ] [ + ] bi* ; inline
24 M: fletcher-16 checksum-bytes drop 16 fletcher ;
25 M: fletcher-32 checksum-bytes drop 32 fletcher ;
26 M: fletcher-64 checksum-bytes drop 64 fletcher ;