Skip to content

Commit

Permalink
Evaluate mobility of pinned pieces exactly
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ceebo authored and mcostalba committed Nov 10, 2013
1 parent 3ed86ed commit 091aff0
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/bitboard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Bitboard AdjacentFilesBB[FILE_NB];
Bitboard InFrontBB[COLOR_NB][RANK_NB];
Bitboard StepAttacksBB[PIECE_NB][SQUARE_NB];
Bitboard BetweenBB[SQUARE_NB][SQUARE_NB];
Bitboard LineBB[SQUARE_NB][SQUARE_NB];
Bitboard DistanceRingsBB[SQUARE_NB][8];
Bitboard ForwardBB[COLOR_NB][SQUARE_NB];
Bitboard PassedPawnMask[COLOR_NB][SQUARE_NB];
Expand Down Expand Up @@ -225,6 +226,9 @@ void Bitboards::init() {

for (Square s = s1 + delta; s != s2; s += delta)
BetweenBB[s1][s2] |= s;

PieceType pc = (PseudoAttacks[BISHOP][s1] & s2) ? BISHOP : ROOK;
LineBB[s1][s2] = (PseudoAttacks[pc][s1] & PseudoAttacks[pc][s2]) | s1 | s2;
}
}

Expand Down
1 change: 1 addition & 0 deletions src/bitboard.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ extern Bitboard AdjacentFilesBB[FILE_NB];
extern Bitboard InFrontBB[COLOR_NB][RANK_NB];
extern Bitboard StepAttacksBB[PIECE_NB][SQUARE_NB];
extern Bitboard BetweenBB[SQUARE_NB][SQUARE_NB];
extern Bitboard LineBB[SQUARE_NB][SQUARE_NB];
extern Bitboard DistanceRingsBB[SQUARE_NB][8];
extern Bitboard ForwardBB[COLOR_NB][SQUARE_NB];
extern Bitboard PassedPawnMask[COLOR_NB][SQUARE_NB];
Expand Down
2 changes: 1 addition & 1 deletion src/evaluate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down

0 comments on commit 091aff0

Please sign in to comment.