/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2013 Marco Costalba, Joona Kiiski, Tord Romstad
+ Copyright (C) 2008-2014 Marco Costalba, Joona Kiiski, Tord Romstad
Stockfish is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
namespace {
- // The possible pawns squares are 24, the first 4 files and ranks from 2 to 7
+ // There are 24 possible pawn squares: the first 4 files and ranks from 2 to 7
const unsigned IndexMax = 2*24*64*64; // stm * psq * wksq * bksq = 196608
// Each uint32_t stores results of 32 positions, one per bit
// A KPK bitbase index is an integer in [0, IndexMax] range
//
- // Information is mapped in a way that minimizes number of iterations:
+ // Information is mapped in a way that minimizes the number of iterations:
//
// bit 0- 5: white king square (from SQ_A1 to SQ_H8)
// bit 6-11: black king square (from SQ_A1 to SQ_H8)
for (idx = 0; idx < IndexMax; ++idx)
db.push_back(KPKPosition(idx));
- // Iterate through the positions until no more of the unknown positions can be
+ // Iterate through the positions until none of the unknown positions can be
// changed to either wins or draws (15 cycles needed).
while (repeat)
for (repeat = idx = 0; idx < IndexMax; ++idx)
else if (us == WHITE)
{
- // Immediate win if pawn can be promoted without getting captured
+ // Immediate win if a pawn can be promoted without getting captured
if ( rank_of(psq) == RANK_7
&& wksq != psq + DELTA_N
&& ( square_distance(bksq, psq + DELTA_N) > 1
||(StepAttacksBB[KING][wksq] & (psq + DELTA_N))))
result = WIN;
}
- // Immediate draw if is stalemate or king captures undefended pawn
+ // Immediate draw if it is a stalemate or a king captures undefended pawn
else if ( !(StepAttacksBB[KING][bksq] & ~(StepAttacksBB[KING][wksq] | StepAttacksBB[PAWN][psq]))
|| (StepAttacksBB[KING][bksq] & psq & ~StepAttacksBB[KING][wksq]))
result = DRAW;
// White to Move: If one move leads to a position classified as WIN, the result
// of the current position is WIN. If all moves lead to positions classified
- // as DRAW, the current position is classified DRAW otherwise the current
+ // as DRAW, the current position is classified as DRAW, otherwise the current
// position is classified as UNKNOWN.
//
// Black to Move: If one move leads to a position classified as DRAW, the result
// of the current position is DRAW. If all moves lead to positions classified
- // as WIN, the position is classified WIN otherwise the current position is
- // classified UNKNOWN.
+ // as WIN, the position is classified as WIN, otherwise the current position is
+ // classified as UNKNOWN.
const Color Them = (Us == WHITE ? BLACK : WHITE);