on ecfde25 help sign in
62 lines 1.5 kB history raw
1### `++mum`
3XX document
5Accepts
6-------
8Produces
9--------
11Source
12------
14 ++ mum :: mug with murmur3
15 ~/ %mum
16 |= a/*
17 |^ (trim ?@(a a (mix $(a -.a) (mix 0x7fff.ffff $(a +.a)))))
18 ++ spec :: standard murmur3
19 |= {syd/@ key/@}
20 ?> (lte (met 5 syd) 1)
21 =+ ^= row
22 |= {a/@ b/@}
23 (con (end 5 1 (lsh 0 a b)) (rsh 0 (sub 32 a) b))
24 =+ mow=|=({a/@ b/@} (end 5 1 (mul a b)))
25 =+ len=(met 5 key)
26 =- =. goc (mix goc len)
27 =. goc (mix goc (rsh 4 1 goc))
28 =. goc (mow goc 0x85eb.ca6b)
29 =. goc (mix goc (rsh 0 13 goc))
30 =. goc (mow goc 0xc2b2.ae35)
31 (mix goc (rsh 4 1 goc))
32 ^= goc
33 =+ [inx=0 goc=syd]
34 |- ^- @
35 ?: =(inx len) goc
36 =+ kop=(cut 5 [inx 1] key)
37 =. kop (mow kop 0xcc9e.2d51)
38 =. kop (row 15 kop)
39 =. kop (mow kop 0x1b87.3593)
40 =. goc (mix kop goc)
41 =. goc (row 13 goc)
42 =. goc (end 5 1 (add 0xe654.6b64 (mul 5 goc)))
43 $(inx +(inx))
46Examples
47--------
49 ~zod/try=> (mum 10.000)
50 1.232.632.901
51 ~zod/try=> (mum 10.001)
52 658.093.079
53 ~zod/try=> (mum 1)
54 818.387.364
55 ~zod/try=> (mum (some 10))
56 1.177.215.703
57 ~zod/try=> (mum ~[1 2 3 4 5])
58 1.517.902.092
62***