summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a2b8f91)
credit goes to @mstembera for suggesting this approach.
SEE now deals with castling, promotion and en passant in a similar way.
passed STC
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 32902 W: 6079 L: 5979 D: 20844
passed LTC
LLR: 3.92 (-2.94,2.94) [-3.00,1.00]
Total: 110698 W: 14198 L: 14145 D: 82355
Bench:
5713905
- // Castling moves are implemented as king capturing the rook so cannot be
- // handled correctly. Simply assume the SEE value is VALUE_ZERO that is always
- // correct unless in the rare case the rook ends up under attack.
- if (type_of(m) == CASTLING)
+ // Only deal with normal moves, assume others pass a simple see
+ if (type_of(m) != NORMAL)
return VALUE_ZERO >= threshold;
Square from = from_sq(m), to = to_sq(m);
return VALUE_ZERO >= threshold;
Square from = from_sq(m), to = to_sq(m);
Value balance; // Values of the pieces taken by us minus opponent's ones
Bitboard occupied, stmAttackers;
Value balance; // Values of the pieces taken by us minus opponent's ones
Bitboard occupied, stmAttackers;
- if (type_of(m) == ENPASSANT)
- {
- occupied = SquareBB[to - pawn_push(~stm)]; // Remove the captured pawn
- balance = PieceValue[MG][PAWN];
- }
- else
- {
- balance = PieceValue[MG][piece_on(to)];
- occupied = 0;
- }
+ balance = PieceValue[MG][piece_on(to)];
+ occupied = 0;
if (balance < threshold)
return false;
if (balance < threshold)
return false;