Use a faster implementation of Static Exchange Evaluation
authorAlain SAVARD <support@multicim.com>
Sat, 4 Jan 2020 18:54:35 +0000 (13:54 -0500)
committerStéphane Nicolet <cassio@free.fr>
Tue, 7 Jan 2020 10:00:54 +0000 (11:00 +0100)
commit83ecfa7c33ab3e89fcbc506f0f4d5312baa26aeb
tree9fc6f3f89f04a7e6fac3597dc5ea35006b8b1785
parent44f56e04e22bb449d44475eb054b67c1c22d27ef
Use a faster implementation of Static Exchange Evaluation

SEE (Static Exchange Evaluation) is a critical component, so we might
indulge some tricks to make it faster. Another pull request #2469 showed
some speedup by removing templates, this version uses Ronald de Man
(@syzygy1) SEE implementation which also unrolls the for loop by
suppressing the min_attacker() helper function and exits as soon as
the last swap is conclusive.

See Ronald de Man version there:
https://github.com/syzygy1/Cfish/blob/master/src/position.c

Patch testes against pull request #2469:
LLR: 2.95 (-2.94,2.94) {-1.00,3.00}
Total: 19365 W: 3771 L: 3634 D: 11960
Ptnml(0-2): 241, 1984, 5099, 2092, 255
http://tests.stockfishchess.org/tests/view/5e10eb135e5436dd91b27ba3

And since we are using new SPRT statistics, and that both pull requests
finished with less than 20000 games I also tested against master as
a speed-up:

LLR: 2.99 (-2.94,2.94) {-1.00,3.00}
Total: 18878 W: 3674 L: 3539 D: 11665
Ptnml(0-2): 193, 1999, 4966, 2019, 250
http://tests.stockfishchess.org/tests/view/5e10febf12ef906c8b388745

Non functional change
src/position.cpp