Skip to content

Commit ac1ccbe

Browse files
committed
hash: change FNV-1 to FNV-1a
1 parent 193e97b commit ac1ccbe

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

hash/fnv.cpp

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ CORRADE_ALWAYS_INLINE size_t fnvhash_uint(uint64_t x)
1717
auto hash = a;
1818
const auto* str = (const uint8_t*)&x;
1919

20-
hash *= b; hash ^= *str++; // 0
21-
hash *= b; hash ^= *str++; // 1
22-
hash *= b; hash ^= *str++; // 2
23-
hash *= b; hash ^= *str++; // 3
24-
hash *= b; hash ^= *str++; // 4
25-
hash *= b; hash ^= *str++; // 5
26-
hash *= b; hash ^= *str++; // 6
27-
hash *= b; hash ^= *str++; // 7
20+
hash ^= *str++; hash *= b; // 0
21+
hash ^= *str++; hash *= b; // 1
22+
hash ^= *str++; hash *= b; // 2
23+
hash ^= *str++; hash *= b; // 3
24+
hash ^= *str++; hash *= b; // 4
25+
hash ^= *str++; hash *= b; // 5
26+
hash ^= *str++; hash *= b; // 6
27+
hash ^= *str++; hash *= b; // 7
2828

2929
return hash;
3030
}
@@ -37,10 +37,10 @@ CORRADE_ALWAYS_INLINE size_t fnvhash_uint(uint32_t x)
3737
auto hash = a;
3838
const auto* str = (const uint8_t*)&x;
3939

40-
hash *= b; hash ^= *str++; // 0
41-
hash *= b; hash ^= *str++; // 1
42-
hash *= b; hash ^= *str++; // 2
43-
hash *= b; hash ^= *str++; // 3
40+
hash ^= *str++; hash *= b; // 0
41+
hash ^= *str++; hash *= b; // 1
42+
hash ^= *str++; hash *= b; // 2
43+
hash ^= *str++; hash *= b; // 3
4444

4545
return hash;
4646
}
@@ -55,25 +55,25 @@ CORRADE_ALWAYS_INLINE size_t fnvhash_buf(const void* __restrict buf, size_t size
5555

5656
while (full_rounds--)
5757
{
58-
hash *= b; hash ^= *str++; // 0
59-
hash *= b; hash ^= *str++; // 1
60-
hash *= b; hash ^= *str++; // 2
61-
hash *= b; hash ^= *str++; // 3
62-
hash *= b; hash ^= *str++; // 4
63-
hash *= b; hash ^= *str++; // 5
64-
hash *= b; hash ^= *str++; // 6
65-
hash *= b; hash ^= *str++; // 7
58+
hash ^= *str++; hash *= b; // 0
59+
hash ^= *str++; hash *= b; // 1
60+
hash ^= *str++; hash *= b; // 2
61+
hash ^= *str++; hash *= b; // 3
62+
hash ^= *str++; hash *= b; // 4
63+
hash ^= *str++; hash *= b; // 5
64+
hash ^= *str++; hash *= b; // 6
65+
hash ^= *str++; hash *= b; // 7
6666
}
6767

6868
switch (rest)
6969
{
70-
case 7: hash *= b; hash ^= *str++; [[fallthrough]];
71-
case 6: hash *= b; hash ^= *str++; [[fallthrough]];
72-
case 5: hash *= b; hash ^= *str++; [[fallthrough]];
73-
case 4: hash *= b; hash ^= *str++; [[fallthrough]];
74-
case 3: hash *= b; hash ^= *str++; [[fallthrough]];
75-
case 2: hash *= b; hash ^= *str++; [[fallthrough]];
76-
case 1: hash *= b; hash ^= *str++; [[fallthrough]];
70+
case 7: hash ^= *str++; hash *= b; [[fallthrough]];
71+
case 6: hash ^= *str++; hash *= b; [[fallthrough]];
72+
case 5: hash ^= *str++; hash *= b; [[fallthrough]];
73+
case 4: hash ^= *str++; hash *= b; [[fallthrough]];
74+
case 3: hash ^= *str++; hash *= b; [[fallthrough]];
75+
case 2: hash ^= *str++; hash *= b; [[fallthrough]];
76+
case 1: hash ^= *str++; hash *= b; [[fallthrough]];
7777
case 0: break;
7878
}
7979

0 commit comments

Comments
 (0)