mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Simplify tropism computation
Simplification. Tests show that the "shift-and-superpose" trick is no longer necessary. The speed benefit of avoiding a popcount is no longer relevant on modern machines. Passed STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 41675 W: 9168 L: 9086 D: 23421 http://tests.stockfishchess.org/tests/view/5a840bcc0ebc590297cc80b5 Passed LTC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 117728 W: 19875 L: 19911 D: 77942 http://tests.stockfishchess.org/tests/view/5a8444800ebc590297cc80ca No functional change.
This commit is contained in:
parent
cccbecb6f8
commit
de642f16db
1 changed files with 10 additions and 12 deletions
|
@ -482,22 +482,20 @@ namespace {
|
|||
score -= make_score(kingDanger * kingDanger / 4096, kingDanger / 16);
|
||||
}
|
||||
}
|
||||
|
||||
Bitboard kf = KingFlank[file_of(ksq)];
|
||||
|
||||
// Penalty when our king is on a pawnless flank
|
||||
if (!(pos.pieces(PAWN) & KingFlank[file_of(ksq)]))
|
||||
if (!(pos.pieces(PAWN) & kf))
|
||||
score -= PawnlessFlank;
|
||||
|
||||
// King tropism: firstly, find attacked squares in our king flank
|
||||
b = attackedBy[Them][ALL_PIECES] & KingFlank[file_of(ksq)] & Camp;
|
||||
// Find the squares that opponent attacks in our king flank, and the squares
|
||||
// which are attacked twice in that flank but not defended by our pawns.
|
||||
b1 = attackedBy[Them][ALL_PIECES] & kf & Camp;
|
||||
b2 = b1 & attackedBy2[Them] & ~attackedBy[Us][PAWN];
|
||||
|
||||
assert(((Us == WHITE ? b << 4 : b >> 4) & b) == 0);
|
||||
assert(popcount(Us == WHITE ? b << 4 : b >> 4) == popcount(b));
|
||||
|
||||
// Secondly, add the squares which are attacked twice in that flank and
|
||||
// which are not defended by our pawns.
|
||||
b = (Us == WHITE ? b << 4 : b >> 4)
|
||||
| (b & attackedBy2[Them] & ~attackedBy[Us][PAWN]);
|
||||
|
||||
score -= CloseEnemies * popcount(b);
|
||||
// King tropism, to anticipate slow motion attacks on our king
|
||||
score -= CloseEnemies * (popcount(b1) + popcount(b2));
|
||||
|
||||
if (T)
|
||||
Trace::add(KING, Us, score);
|
||||
|
|
Loading…
Add table
Reference in a new issue