]> gitweb.factorcode.org Git - factor.git/blob - basis/checksums/fnv1/fnv1.factor
f221cefef2193ebd1079f9199908d1cc27666e26
[factor.git] / basis / checksums / fnv1 / fnv1.factor
1 ! Copyright (C) 2009 Alaric Snell-Pym
2 ! See http://factorcode.org/license.txt for BSD license.
3
4 USING: checksums classes.singleton kernel math math.ranges
5 math.vectors sequences ;
6
7 IN: checksums.fnv1
8
9 SINGLETON: fnv1-32
10 SINGLETON: fnv1a-32
11 SINGLETON: fnv1-64
12 SINGLETON: fnv1a-64
13 SINGLETON: fnv1-128
14 SINGLETON: fnv1a-128
15 SINGLETON: fnv1-256
16 SINGLETON: fnv1a-256
17 SINGLETON: fnv1-512
18 SINGLETON: fnv1a-512
19 SINGLETON: fnv1-1024
20 SINGLETON: fnv1a-1024
21
22 CONSTANT: fnv1-32-prime 16777619
23 CONSTANT: fnv1-64-prime 1099511628211
24 CONSTANT: fnv1-128-prime 309485009821345068724781371
25 CONSTANT: fnv1-256-prime 374144419156711147060143317175368453031918731002211
26 CONSTANT: fnv1-512-prime 35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759
27 CONSTANT: fnv1-1024-prime 5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573
28
29 CONSTANT: fnv1-32-mod HEX: ffffffff
30 CONSTANT: fnv1-64-mod HEX: ffffffffffffffff
31 CONSTANT: fnv1-128-mod HEX: ffffffffffffffffffffffffffffffff
32 CONSTANT: fnv1-256-mod HEX: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
33 CONSTANT: fnv1-512-mod HEX: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
34 CONSTANT: fnv1-1024-mod HEX: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
35
36 CONSTANT: fnv1-32-basis HEX: 811c9dc5
37 CONSTANT: fnv1-64-basis HEX: cbf29ce484222325
38 CONSTANT: fnv1-128-basis HEX: 6c62272e07bb014262b821756295c58d
39 CONSTANT: fnv1-256-basis HEX: dd268dbcaac550362d98c384c4e576ccc8b1536847b6bbb31023b4c8caee0535
40 CONSTANT: fnv1-512-basis HEX: b86db0b1171f4416dca1e50f309990acac87d059c90000000000000000000d21e948f68a34c192f62ea79bc942dbe7ce182036415f56e34bac982aac4afe9fd9
41 CONSTANT: fnv1-1024-basis HEX: 5f7a76758ecc4d32e56d5a591028b74b29fc4223fdada16c3bf34eda3674da9a21d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c6d7eb6e73802734510a555f256cc005ae556bde8cc9c6a93b21aff4b16c71ee90b3
42
43 M: fnv1-32 checksum-bytes ( bytes checksum -- value )
44     drop
45     fnv1-32-basis swap
46     [ swap fnv1-32-prime * bitxor fnv1-32-mod bitand ] each ;
47
48 M: fnv1a-32 checksum-bytes ( bytes checksum -- value )
49     drop
50     fnv1-32-basis swap
51     [ bitxor fnv1-32-prime * fnv1-32-mod bitand ] each ;
52
53
54 M: fnv1-64 checksum-bytes ( bytes checksum -- value )
55     drop
56     fnv1-64-basis swap
57     [ swap fnv1-64-prime * bitxor fnv1-64-mod bitand ] each ;
58
59 M: fnv1a-64 checksum-bytes ( bytes checksum -- value )
60     drop
61     fnv1-64-basis swap
62     [ bitxor fnv1-64-prime * fnv1-64-mod bitand ] each ;
63
64
65 M: fnv1-128 checksum-bytes ( bytes checksum -- value )
66     drop
67     fnv1-128-basis swap
68     [ swap fnv1-128-prime * bitxor fnv1-128-mod bitand ] each ;
69
70 M: fnv1a-128 checksum-bytes ( bytes checksum -- value )
71     drop
72     fnv1-128-basis swap
73     [ bitxor fnv1-128-prime * fnv1-128-mod bitand ] each ;
74
75
76 M: fnv1-256 checksum-bytes ( bytes checksum -- value )
77     drop
78     fnv1-256-basis swap
79     [ swap fnv1-256-prime * bitxor fnv1-256-mod bitand ] each ;
80
81 M: fnv1a-256 checksum-bytes ( bytes checksum -- value )
82     drop
83     fnv1-256-basis swap
84     [ bitxor fnv1-256-prime * fnv1-256-mod bitand ] each ;
85
86
87 M: fnv1-512 checksum-bytes ( bytes checksum -- value )
88     drop
89     fnv1-512-basis swap
90     [ swap fnv1-512-prime * bitxor fnv1-512-mod bitand ] each ;
91
92 M: fnv1a-512 checksum-bytes ( bytes checksum -- value )
93     drop
94     fnv1-512-basis swap
95     [ bitxor fnv1-512-prime * fnv1-512-mod bitand ] each ;
96
97
98 M: fnv1-1024 checksum-bytes ( bytes checksum -- value )
99     drop
100     fnv1-1024-basis swap
101     [ swap fnv1-1024-prime * bitxor fnv1-1024-mod bitand ] each ;
102
103 M: fnv1a-1024 checksum-bytes ( bytes checksum -- value )
104     drop
105     fnv1-1024-basis swap
106     [ bitxor fnv1-1024-prime * fnv1-1024-mod bitand ] each ;