on master help sign in
mug is murmur3 now
02bb889syzygyzer
reference/library/2e.md+20−28
@@ -43,9 +43,9 @@ An atom.
43---
43---
44### `++mug`
44### `++mug`
45
45
46−FNV-1a scrambler
46+murmur3 scrambler
47
47
48−Hashes `a` with the 31-bit nonzero FNV-1a non-cryptographic hash algorithm,
48+Hashes `a` with the 31-bit murmur3 non-cryptographic hash algorithm,
49producing an atom.
49producing an atom.
50
50
51#### Accepts
51#### Accepts
@@ -59,45 +59,37 @@ An atom.
59#### Source
59#### Source
60
60
61```hoon
61```hoon
62− ++ mug
62+++ mug :: mug with murmur3
63− ~/ %mug
63+ ~/ %mug
64− |= a=*
64+ |= a/*
65− ?^ a
65+ |^ (trim ?@(a a (mix $(a -.a) (mix 0x7fff.ffff $(a +.a)))))
66− =+ b=[p=$(a -.a) q=$(a +.a)]
66+ ++ trim :: 31-bit nonzero
67− |- ^- @
67+ |= key/@
68− =+ c=(fnv (mix p.b (fnv q.b)))
68+ =+ syd=0xcafe.babe
69− =+ d=(mix (rsh 0 31 c) (end 0 31 c))
70− ?. =(0 d) d
71− $(q.b +(q.b))
72− =+ b=2.166.136.261
73− |- ^- @
69+ |- ^- @
74− =+ c=b
70+ =+ haz=(muk syd (met 3 key) key)
75− =+ [d=0 e=(met 3 a)]
76− |- ^- @
77− ?: =(d e)
78− =+ f=(mix (rsh 0 31 c) (end 0 31 c))
71+ =+ ham=(mix (rsh 0 31 haz) (end 0 31 haz))
79− ?. =(0 f) f
72+ ?.(=(0 ham) ham $(syd +(syd)))
80− ^$(b +(b))
73+ --
81− $(c (fnv (mix c (cut 3 [d 1] a))), d +(d))
82```
74```
83
75
84#### Examples
76#### Examples
85
77
86```
78```
87 > (mug 10.000)
79 > (mug 10.000)
88− 178.152.889
80+ 795.713.195
89
81
90 > (mug 10.001)
82 > (mug 10.001)
91− 714.838.017
83+ 420.521.697
92
84
93 > (mug 1)
85 > (mug 1)
94− 67.918.732
86+ 1.901.865.568
95
87
96 > (mug (some 10))
88 > (mug (some 10))
97− 1.872.403.737
89+ 2.099.076.946
98
90
99 > (mug [1 2 3 4 5 ~])
91 > (mug [1 2 3 4 5 ~])
100− 1.067.931.605
92+ 1.719.833.228
101```
93```
102
94
103
95
@@ -273,4 +265,4 @@ An atom.
273```
265```
274
266
275
267
276−---
268+---