spot
2.2.2
Main Page
Related Pages
Modules
Classes
Files
File List
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Modules
Pages
spot
misc
hashfunc.hh
1
// -*- coding: utf-8 -*-
2
// Copyright (C) 2015 Laboratoire de Recherche et Développement
3
// de l'Epita (LRDE)
4
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
5
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
6
// et Marie Curie.
7
//
8
// This file is part of Spot, a model checking library.
9
//
10
// Spot is free software; you can redistribute it and/or modify it
11
// under the terms of the GNU General Public License as published by
12
// the Free Software Foundation; either version 3 of the License, or
13
// (at your option) any later version.
14
//
15
// Spot is distributed in the hope that it will be useful, but WITHOUT
16
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
18
// License for more details.
19
//
20
// You should have received a copy of the GNU General Public License
21
// along with this program. If not, see <http://www.gnu.org/licenses/>.
22
23
#pragma once
24
25
#include <cstddef>
26
27
namespace
spot
28
{
31
34
39
inline
size_t
40
wang32_hash
(
size_t
key)
41
{
42
// We assume that size_t has at least 32bits.
43
key += ~(key << 15);
44
key ^= (key >> 10);
45
key += (key << 3);
46
key ^= (key >> 6);
47
key += ~(key << 11);
48
key ^= (key >> 16);
49
return
key;
50
}
51
58
inline
size_t
59
knuth32_hash
(
size_t
key)
60
{
61
// 2654435761 is the golden ratio of 2^32. The right shift of 3
62
// bits assumes that all objects are aligned on a 8 byte boundary.
63
return
(key >> 3) * 2654435761
U
;
64
}
66
}
spot
Definition:
graph.hh:32
spot::wang32_hash
size_t wang32_hash(size_t key)
Thomas Wang's 32 bit hash function.
Definition:
hashfunc.hh:40
spot::op::U
until
spot::knuth32_hash
size_t knuth32_hash(size_t key)
Knuth's Multiplicative hash function.
Definition:
hashfunc.hh:59
Please direct any
question
,
comment
, or
bug report
to the Spot mailing list at
spot@lrde.epita.fr
.
Generated on Fri Dec 16 2016 06:04:07 for spot by
1.8.8