mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-24 19:16:49 +08:00
Candidate passed pawns
Detect safe candidate passers. STC: http://tests.stockfishchess.org/tests/view/5882395c0ebc5915193f78b3 LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 53569 W: 9925 L: 9570 D: 34074 LTC: http://tests.stockfishchess.org/tests/view/5882b4fb0ebc5915193f78e2 LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 77576 W: 10387 L: 10014 D: 57175 Bench: 5325829
This commit is contained in:
committed by
Marco Costalba
parent
58c181de9a
commit
471f7a1b5c
@@ -99,8 +99,9 @@ namespace {
|
||||
const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST);
|
||||
|
||||
Bitboard b, neighbours, stoppers, doubled, supported, phalanx;
|
||||
Bitboard lever, leverPush, connected;
|
||||
Square s;
|
||||
bool opposed, lever, connected, backward;
|
||||
bool opposed, backward;
|
||||
Score score = SCORE_ZERO;
|
||||
const Square* pl = pos.squares<PAWN>(Us);
|
||||
const Bitboard* pawnAttacksBB = StepAttacksBB[make_piece(Us, PAWN)];
|
||||
@@ -129,6 +130,7 @@ namespace {
|
||||
opposed = theirPawns & forward_bb(Us, s);
|
||||
stoppers = theirPawns & passed_pawn_mask(Us, s);
|
||||
lever = theirPawns & pawnAttacksBB[s];
|
||||
leverPush = theirPawns & pawnAttacksBB[s + Up];
|
||||
doubled = ourPawns & (s + Up);
|
||||
neighbours = ourPawns & adjacent_files_bb(f);
|
||||
phalanx = neighbours & rank_bb(s);
|
||||
@@ -153,8 +155,13 @@ namespace {
|
||||
}
|
||||
|
||||
// Passed pawns will be properly scored in evaluation because we need
|
||||
// full attack info to evaluate them.
|
||||
if (!stoppers && !(ourPawns & forward_bb(Us, s)))
|
||||
// full attack info to evaluate them. Include also not passed pawns
|
||||
// which could become passed after one or two pawn pushes when are
|
||||
// not attacked more times than defended.
|
||||
if ( !(stoppers ^ lever ^ leverPush)
|
||||
&& !(ourPawns & forward_bb(Us, s))
|
||||
&& popcount(supported) >= popcount(lever)
|
||||
&& popcount(phalanx) >= popcount(leverPush))
|
||||
e->passedPawns[Us] |= s;
|
||||
|
||||
// Score this pawn
|
||||
|
||||
Reference in New Issue
Block a user