Stockfish 17010110 - new version

Stockfish, UCI chess engine

Leader of the ranking list JCER = 3368

🔬 Author: Sergei Antonov   

Timestamp: 1483264606 

Threefold repetition detection 

Implement a threefold repetition detection. Below are the examples of problems fixed by this change. 

Loosing move in a drawn position. 
position fen 8/k7/3p4/p2P1p2/P2P1P2/8/8/K7 w - - 0 1 moves a1a2 a7a8 a2a1 
The old code suggested a loosing move "bestmove a8a7", the new code suggests "bestmove a8b7" leading to a draw. 

Incorrect evaluation (happened in a real game in TCEC Season 9). 
position fen 4rbkr/1q3pp1/b3pn2/7p/1pN5/1P1BBP1P/P1R2QP1/3R2K1 w - - 5 31 moves e3d4 h8h6 d4e3 
The old code evaluated it as "cp 0", the new code evaluation is around "cp -50" which is adequate. 

Brings 0.5-1 ELO gain. Passes [-3.00,1.00]. 

LLR: 2.96 (-2.94,2.94) [-3.00,1.00] 
Total: 47744 W: 8537 L: 8461 D: 30746 

LLR: 2.96 (-2.94,2.94) [-3.00,1.00] 
Total: 36775 W: 4739 L: 4639 D: 27397 

Patch has been rewritten into current form for simplification and logic slightly changed so that return a draw score if the position repeats once earlier but after or at the root, or repeats twice strictly before the root. In its original form, repetition at root was not returned as an immediate draw. 

After retestimng testing both version with SPRT[-3, 1], both passed succesfully, but this version was chosen becuase more natural. There is an argument about MultiPV in which an extended draw at root may be sensible. 

For documentation, current version passed both at STC and LTC: 

LLR: 2.96 (-2.94,2.94) [-3.00,1.00] 
Total: 51562 W: 9314 L: 9245 D: 33003 

LLR: 2.96 (-2.94,2.94) [-3.00,1.00] 
Total: 115663 W: 14904 L: 14906 D: 85853 

bench: 5468995 

⭐⭐⭐   Stockfish 16123114 - download