Simplify the backward pawns code
authorprotonspring <mike@whiteley.org>
Sun, 6 May 2018 07:42:49 +0000 (09:42 +0200)
committerStéphane Nicolet <cassio@free.fr>
Sun, 6 May 2018 07:44:14 +0000 (09:44 +0200)
commitcb4bda0f4974c75733c41b15bff7624a65e6cee1
treeb42be19f2978e84a2f591106dc7ecd035a295837
parentd4cb80b2106efb58db87495090a3898d902075d6
Simplify the backward pawns code

The two lines of code in the patch seem to be just as good as master.

1. We now only look at the current square to see if it is currently backward,
whereas master looks there AND further ahead in the current file (master would
declare a pawn "backward" even though it could still safely advance a little).
This simplification allows us to avoid the use of the difficult logic with
`backmost_sq(Us, neighbours | stoppers)`.

2. The condition `relative_rank(Us,s) < RANK_5` is simplified away.

Passed STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 68132 W: 14025 L: 13992 D: 40115
http://tests.stockfishchess.org/tests/view/5aedc97a0ebc5902a4099fd6

Passed LTC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 23789 W: 3643 L: 3527 D: 16619
http://tests.stockfishchess.org/tests/view/5aee4f970ebc5902a409a03a

Ideas for further work:

• The new code flags some pawns on the 5th rank as backward, which was not the
case in the old master. So maybe we should test a version with that included?

• Further tweaks of the backward condition with [0..5] bounds?

Closes https://github.com/official-stockfish/Stockfish/pull/1583

Bench: 5122789
src/pawns.cpp