hash = hash ^ _rotl64(zob[piecetype], from) ^ _rotl64(zob[piecetype], to)
instead of
hash = hash ^ zob[piecetype][from] ^ zob[piecetype][to]
This means my zobrist table has 16 qwords rather than over 1000 qwords.
I let it run for several days and got these statistics with 256M hash entries and a 64 bit key:
- nodes 416,679,145,493
tt_probes 62,783,706,360
tt_hits 12,824,168,127
tt_falsehits 1
BTW, I would appreciate it if someone who remembers their statistics better than I do could calculate confidence intervals for false hits per hash probe.