1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 00:33: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);
};
Bitboard b, bb, squaresToQueen, unsafeSquares, candidatePassers, leverable;
Bitboard b, bb, squaresToQueen, unsafeSquares, blockedPassers, helpers;
Score score = SCORE_ZERO;
b = pe->passed_pawns(Us);
candidatePassers = b & shift<Down>(pos.pieces(Them, PAWN));
if (candidatePassers)
blockedPassers = b & shift<Down>(pos.pieces(Them, PAWN));
if (blockedPassers)
{
// Can we lever the blocker of a candidate passer?
leverable = shift<Up>(pos.pieces(Us, PAWN))
helpers = shift<Up>(pos.pieces(Us, PAWN))
& ~pos.pieces(Them)
& (~attackedBy2[Them] | attackedBy[Us][ALL_PIECES])
& (~(attackedBy[Them][KNIGHT] | attackedBy[Them][BISHOP])
| (attackedBy[Us ][KNIGHT] | attackedBy[Us ][BISHOP]));
& (~attackedBy2[Them] | attackedBy[Us][ALL_PIECES]);
// Remove candidate otherwise
b &= ~candidatePassers
| shift<WEST>(leverable)
| shift<EAST>(leverable);
// Remove blocked candidate passers that don't have help to pass
b &= ~blockedPassers
| shift<WEST>(helpers)
| shift<EAST>(helpers);
}
while (b)