Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2020
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1.  
  2. (defun hash-list (list &optional (seed #x5555555555555555))
  3. (declare (optimize (speed 3) (safety 1) (debug 0) (space 0))
  4. (type list list)
  5. (type (unsigned-byte 64) seed))
  6. (iterate
  7. (declare (type (unsigned-byte 64) elt seed))
  8. (for elt in list)
  9. (setf seed (ldb (byte 64 0) (+ elt seed))
  10. seed (ldb (byte 64 0) (logxor seed (ash seed -16)))
  11. seed (ldb (byte 64 0) (+ seed (ash seed 32))))
  12. (finally
  13. ;; This is the exact murmurhash mixing
  14. (setf seed (logxor seed (ash seed -33))
  15. seed (ldb (byte 64 0) (* seed #XFF51AFD7ED558CCD))
  16. seed (logxor seed (ash seed -33))
  17. seed (ldb (byte 64 0) (* seed #XC4CEB9FE1A85EC53))
  18. seed (logxor seed (ash seed -33)))
  19. (return seed))))
  20.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement