Evaluate mobility of pinned pieces exactly

Previously some squares could be "incorrectly" awarded
to a pinned piece.

e.g. in 3k4/1q6/3b4/3Q4/8/5K2/B7/8 b - - 0 1 the black
bishop get 4 squares too many and the white queen gets 6.

Passed both short TC.
LLR: 2.97 (-2.94,2.94) [-1.50,4.50]
Total: 4871 W: 934 L: 817 D: 3120

And long TC:
LLR: 2.96 (-2.94,2.94) [0.00,6.00]
Total: 38968 W: 6113 L: 5837 D: 27018

bench: 9282549
This commit is contained in:
Chris Caino
2013-11-09 02:06:47 +00:00
committed by Marco Costalba
parent 3ed86ed3f9
commit 091aff0445
3 changed files with 6 additions and 1 deletions

View File

@@ -492,7 +492,7 @@ Value do_evaluate(const Position& pos) {
: pos.attacks_from<Piece>(s);
if (ei.pinnedPieces[Us] & s)
b &= PseudoAttacks[QUEEN][pos.king_square(Us)];
b &= LineBB[pos.king_square(Us)][s];
ei.attackedBy[Us][Piece] |= b;