hash: Improve hash function for integers.
authorBen Pfaff <blp@nicira.com>
Thu, 22 Oct 2009 19:58:41 +0000 (12:58 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 4 Nov 2009 23:01:02 +0000 (15:01 -0800)
commit44528c546359a95c57e8a0e4b3703c5086b15f24
tree167abff3aee532c724fce4fa11e53c9a3a4e64c9
parent8e5421180d1acd5856f41e6dd33ff69ccb7af92b
hash: Improve hash function for integers.

As previously defined, the following both returned the same value for
given values of 'basis':
hash_int(0, hash_int(1, basis))
hash_int(1, hash_int(0, basis))
because hash_int(0, basis) evaluated to basis and hash_int(1, basis)
evaluated to c + basis for some constant c.

This commit fixes the problem, by eliminating any simple linear
relationship between basis and the hash value.

We should write some tests for hash function quality.
lib/hash.h