/// forward_bb() returns a bitboard representing all the squares along the line
/// in front of the given one, from the point of view of the given color:
-/// ForwardBB[c][s] = in_front_bb(c, s) & file_bb(s)
+/// ForwardBB[c][s] = in_front_bb(c, rank_of(s)) & file_bb(s)
inline Bitboard forward_bb(Color c, Square s) {
return ForwardBB[c][s];
/// pawn_attack_span() returns a bitboard representing all the squares that can be
/// attacked by a pawn of the given color when it moves along its file, starting
/// from the given square:
-/// PawnAttackSpan[c][s] = in_front_bb(c, s) & adjacent_files_bb(s);
+/// PawnAttackSpan[c][s] = in_front_bb(c, rank_of(s)) & adjacent_files_bb(s);
inline Bitboard pawn_attack_span(Color c, Square s) {
return PawnAttackSpan[c][s];
Score Connected[2][2][2][RANK_NB];
// Doubled pawn penalty
- const Score Doubled = S(18,38);
+ const Score Doubled = S(18, 38);
// Lever bonus by rank
const Score Lever[RANK_NB] = {
};
// Weakness of our pawn shelter in front of the king by [distance from edge][rank].
- // RANK_1 = 0 is used for files where we have no pawns, or where our pawn is behind our king.
+ // RANK_1 = 0 is used for files where we have no pawns or our pawn is behind our king.
const Value ShelterWeakness[][RANK_NB] = {
{ V(100), V(20), V(10), V(46), V(82), V( 86), V( 98) },
{ V(116), V( 4), V(28), V(87), V(94), V(108), V(104) },
// Danger of enemy pawns moving toward our king by [type][distance from edge][rank].
// For the unopposed and unblocked cases, RANK_1 = 0 is used when opponent has no pawn
- // on the given file, or his pawn his behind our king.
+ // on the given file, or their pawn is behind our king.
const Value StormDanger[][4][RANK_NB] = {
{ { V( 0), V(-290), V(-274), V(57), V(41) }, //BlockedByKing
{ V( 0), V( 60), V( 144), V(39), V(13) },
moveCountPruning = depth < 16 * ONE_PLY
&& moveCount >= FutilityMoveCounts[improving][depth / ONE_PLY];
- // Step 12. Extend checks
+ // Step 12. Extensions
+ // Extend checks
if ( givesCheck
&& !moveCountPruning
&& pos.see_ge(move, VALUE_ZERO))
extension = ONE_PLY;
}
- // Update the current move (this must be done after singular extension search)
+ // Calculate new depth for this move
newDepth = depth - ONE_PLY + extension;
// Step 13. Pruning at shallow depth
continue;
}
+ // Update the current move (this must be done after singular extension search)
ss->currentMove = move;
ss->counterMoves = &thisThread->counterMoveHistory[moved_piece][to_sq(move)];