spot
0.9.2
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
misc
hashfunc.hh
Go to the documentation of this file.
1
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
2
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
3
// et Marie Curie.
4
//
5
// This file is part of Spot, a model checking library.
6
//
7
// Spot is free software; you can redistribute it and/or modify it
8
// under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
11
//
12
// Spot is distributed in the hope that it will be useful, but WITHOUT
13
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15
// License for more details.
16
//
17
// You should have received a copy of the GNU General Public License
18
// along with Spot; see the file COPYING. If not, write to the Free
19
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20
// 02111-1307, USA.
21
22
#ifndef SPOT_MISC_HASHFUNC_HH
23
# define SPOT_MISC_HASHFUNC_HH
24
# include <cstddef>
25
26
namespace
spot
27
{
31
36
inline
size_t
37
wang32_hash
(
size_t
key)
38
{
39
// We assume that size_t has at least 32bits.
40
key += ~(key << 15);
41
key ^= (key >> 10);
42
key += (key << 3);
43
key ^= (key >> 6);
44
key += ~(key << 11);
45
key ^= (key >> 16);
46
return
key;
47
}
48
55
inline
size_t
56
knuth32_hash
(
size_t
key)
57
{
58
// 2654435761 is the golden ratio of 2^32. The right shift of 3
59
// bits assumes that all objects are aligned on a 8 byte boundary.
60
return
(key >> 3) * 2654435761U;
61
}
63
}
64
65
#endif // SPOT_MISC_HASHFUNC_HH
Please
comment
this page and
report errors
about it on
the RefDocComments page
.
Generated on Mon Jul 2 2012 17:35:47 for spot by
1.8.1.1