123456789101112131415161718192021222324252627282930313233343536(**************************************************************************)(* This file is part of the Codex semantics library. *)(* *)(* Copyright (C) 2013-2025 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file LICENSE). *)(* *)(**************************************************************************)(* http://burtleburtle.net/bob/hash/doobs.html *)(* http://www.cse.yorku.ca/~oz/hash.html *)(* let sdbm x y = x * 65599 + y *)let[@inlinealways]sdbmxy=y+(xlsl16)+(xlsl6)-xlet[@inlinealways]hash2xy=sdbmxylet[@inlinealways]hash3xyz=sdbmx(sdbmyz)let[@inlinealways]hash4xyzt=sdbmx(hash3yzt)let[@inlinealways]hash5xyztu=sdbmx(hash4yztu)let[@inlinealways]hash_listfm=List.fold_left(funaccelt->sdbm(felt)acc)0mlet[@inlinealways]hash_fastx=Obj.tag(Obj.reprx)let[@inlinealways]hash_sum~nb~total:_hash=hash2nbhash