I made a couple of changes to Symbolic: its castling code is now more table driven (like Oscar's), and the perft() transposition mechanism has been improved for a speed-up of several percent.
To convince myself that I hadn't messed up anything, I ran a couple of hundred perft() tests on the new code. Everything works; here are the logs for perft(10) (44 minutes) and perft(11) (11 hours):
Code: Select all
[] pctran 10
TT: ItemSize: 24 B ItemCount: 1,073,741,824 (2^30) TableSize: 24 GiB
Count: 69,352,859,712,417 Pt: 2:55:03.641 Wt: 43:58.949 U: 0.995059 26.411 GHz 37.863 ps
Total: sixty-nine trillion three hundred fifty-two billion eight hundred fifty-nine million seven hundred twelve thousand four hundred seventeen
TT: Table utilization: 0.737608
[] pctran 11
TT: ItemSize: 24 B ItemCount: 1,073,741,824 (2^30) TableSize: 24 GiB
Count: 2,097,651,003,696,806 Pt: 1:19:36:08.814 Wt: 10:56:46.985 U: 0.995818 53.454 GHz 18.7077 ps
Total: two quadrillion ninety-seven trillion six hundred fifty-one billion three million six hundred ninety-six thousand eight hundred six
TT: Table utilization: 1