Oh, but for performance sake you should always take that into account. I never set the e.p. square when no e.p. capture is actually possible (except in micro-Max, of course). Doing so would massively reduce your number of hash hits.lucasart wrote:Another possibility is simply to have an en-passant square set and the ep capture can't be played because no pawn attacks it. For example in the start position after 1. e4, the ep square is e3, but it can't be captures by a black pawn, so it doesn't count from the perspective of the 3-repetition rule.
Fixing proper setting of the e.p. square usually causes a very significant speedup (time-to-depth-wise), in engines with hash tables.That's why I chose the conservative approach: basic zobrist with only piece placement + turn of play (leave ep and castling out) for use in 3-rep detection.
For an engine, none of this matter at all, and fixing it is certainly not going to be measurable. In fact, the only measurable effect it will have is that is slows down the program significantly, hence makes it weaker.
I have seen engines lose in competition because of this bug. (In particular, Arasan in ChessWar, blundering away a dead draw by allowing itself to be mated on the 50th move.)There's also an annoying exception to the 50-repetition rule: when the half move counter hits 100 and it's mate, then the result is mate not draw. Again, I don't care in DiscoCheck and it certainly has no impact that can be measured.
I am pretty sure that not paying attention to castling through check also would have an insignificantly impact on rating. The point is more that it looks so silly when the engine does it. Doing it once in a thousand games does far more damage to the reputation of your engine than increasing its rating by 50 Elo would make up for, although the 0.05% score loss because of it corresponds only to 0.35 Elo.
The point is that to cause a significant loss in strength at the 95% confidence level in a test of a million games, something needs to happen once every 500 games, assuming it would be so disastrous that it instantly blunders away half a point. Most of us don't test to the 0.1% level, however, and for those that can afford only 10,000 games per trial, only catastrophes that happen more frequently than once every 50 games stick out above the noise.
Now the question is: would you want your engine to do something absolutely moronic every 50 games? If the answer is 'no', then 'significance' of the Elo change involved with it is not really a relevant measure...

