1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53:09 +00:00

Simplify evaluation for blocked passers.

This is a functional simplification of the evaluation code for blocked passers.
I've also changed a few variable names for clarity.

STC
LLR: 2.94 (-2.94,2.94) {-1.50,0.50}
Total: 141984 W: 27450 L: 27466 D: 87068
Ptnml(0-2): 2414, 16511, 33175, 16461, 2431
https://tests.stockfishchess.org/tests/view/5ec4001b05aa4bc72d9759e7

LTC
LLR: 2.93 (-2.94,2.94) {-1.50,0.50}
Total: 30536 W: 3966 L: 3885 D: 22685
Ptnml(0-2): 216, 2841, 9073, 2922, 216
https://tests.stockfishchess.org/tests/view/5ec4bd0d377121ac09e101b7

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

Bench: 4704681
This commit is contained in:
protonspring 2020-05-20 08:33:59 -06:00 committed by Stéphane Nicolet
parent b36a1fa1b4
commit 20ceeac8b3

View file

@ -591,25 +591,22 @@ namespace {
return std::min(distance(pos.square<KING>(c), s), 5); return std::min(distance(pos.square<KING>(c), s), 5);
}; };
Bitboard b, bb, squaresToQueen, unsafeSquares, candidatePassers, leverable; Bitboard b, bb, squaresToQueen, unsafeSquares, blockedPassers, helpers;
Score score = SCORE_ZERO; Score score = SCORE_ZERO;
b = pe->passed_pawns(Us); b = pe->passed_pawns(Us);
candidatePassers = b & shift<Down>(pos.pieces(Them, PAWN)); blockedPassers = b & shift<Down>(pos.pieces(Them, PAWN));
if (candidatePassers) if (blockedPassers)
{ {
// Can we lever the blocker of a candidate passer? helpers = shift<Up>(pos.pieces(Us, PAWN))
leverable = shift<Up>(pos.pieces(Us, PAWN))
& ~pos.pieces(Them) & ~pos.pieces(Them)
& (~attackedBy2[Them] | attackedBy[Us][ALL_PIECES]) & (~attackedBy2[Them] | attackedBy[Us][ALL_PIECES]);
& (~(attackedBy[Them][KNIGHT] | attackedBy[Them][BISHOP])
| (attackedBy[Us ][KNIGHT] | attackedBy[Us ][BISHOP]));
// Remove candidate otherwise // Remove blocked candidate passers that don't have help to pass
b &= ~candidatePassers b &= ~blockedPassers
| shift<WEST>(leverable) | shift<WEST>(helpers)
| shift<EAST>(leverable); | shift<EAST>(helpers);
} }
while (b) while (b)