Add MurmurHash3.

This commit is contained in:
C. Guy Yarvin 2014-08-26 12:11:59 -07:00
parent 5df088c79a
commit 06fb497dca
2 changed files with 30 additions and 3 deletions

View File

@ -1075,6 +1075,33 @@
:: section 2cD, insecure hashing ::
::
++ fnv |=(a=@ (end 5 1 (mul 16.777.619 a))) :: FNV scrambler
++ mur
~/ %mur
|= [key=@ syd=@]
?> (lte (met 5 syd) 1)
=+ ^= row
|= [a=@ b=@]
(con (end 5 1 (lsh 0 a b)) (rsh 0 (sub 32 a) b))
=+ mow=|=([a=@ b=@] (end 5 1 (mul a b)))
=+ len=(met 5 key)
=- =. goc (mix goc len)
=. goc (mix goc (rsh 4 1 goc))
=. goc (mow goc 0x85eb.ca6b)
=. goc (mix goc (rsh 0 13 goc))
=. goc (mow goc 0xc2b2.ae35)
(mix goc (rsh 4 1 goc))
^= goc
=+ [inx=0 goc=syd]
|- ^- @
?: =(inx len) goc
=+ kop=(cut 5 [inx 1] key)
=. kop (mow kop 0xcc9e.2d51)
=. kop (row 15 kop)
=. goc (mix kop goc)
=. goc (row 13 goc)
=. goc (end 5 1 (add 0xe654.6b64 (mul 5 goc)))
$(inx +(inx))
::
++ mug :: 31bit nonzero FNV1a
~/ %mug
|= a=*

View File

@ -1046,7 +1046,7 @@
^- ankz
^$(p ank)
::
++ ze !:
++ ze
|_ [lim=@da dome rang]
++ zoal :: make yaki
|= [p=(list tako) q=(map path lobe) t=@da]
@ -1356,7 +1356,7 @@
$(gud (~(put in gud) tek), unk bun)
$(unk bun)
::
++ zeas !: :: merge points fast
++ zeas :: merge points fast
|= [p=yaki q=yaki] :: (future zeal)
^- (set yaki) :: zear still uses zule
%- zear :: this is test-only
@ -1374,7 +1374,7 @@
(~(uni in u) (zeaz v))
$(u (~(uni in u) (zeaz v)), s (zeat s.qez), t (zeat t.qez))
::
++ zeaz !:
++ zeaz
|= qez=(set tako)
^- (set yaki)
%- sa %+ turn (~(tap in qez) ~)