const Color Them = (Us == WHITE ? BLACK : WHITE);
return pos.non_pawn_material(Them) == Value(0)
&& pos.piece_count(Them, PAWN) == 0
- && pos.non_pawn_material(Us) >= RookValueMidgame;
+ && pos.non_pawn_material(Us) >= RookValueMidgame;
}
template<Color Us> bool is_KBPsK(const Position& pos) {
if (npm >= MidgameLimit)
return PHASE_MIDGAME;
- else if (npm <= EndgameLimit)
+
+ if (npm <= EndgameLimit)
return PHASE_ENDGAME;
return Phase(((npm - EndgameLimit) * 128) / (MidgameLimit - EndgameLimit));
MaterialInfo* MaterialInfoTable::get_material_info(const Position& pos) {
Key key = pos.get_material_key();
- int index = key & (size - 1);
+ unsigned index = unsigned(key & (size - 1));
MaterialInfo* mi = entries + index;
// If mi->key matches the position's material hash key, it means that we
if ((mi->evaluationFunction = funcs->get<EF>(key)) != NULL)
return mi;
- else if (is_KXK<WHITE>(pos) || is_KXK<BLACK>(pos))
+ if (is_KXK<WHITE>(pos) || is_KXK<BLACK>(pos))
{
mi->evaluationFunction = is_KXK<WHITE>(pos) ? &EvaluateKXK[WHITE] : &EvaluateKXK[BLACK];
return mi;
}
- else if ( pos.pieces(PAWN) == EmptyBoardBB
- && pos.pieces(ROOK) == EmptyBoardBB
- && pos.pieces(QUEEN) == EmptyBoardBB)
+
+ if ( pos.pieces(PAWN) == EmptyBoardBB
+ && pos.pieces(ROOK) == EmptyBoardBB
+ && pos.pieces(QUEEN) == EmptyBoardBB)
{
// Minor piece endgame with at least one minor piece per side and
// no pawns. Note that the case KmmK is already handled by KXK.
// OK, we didn't find any special evaluation function for the current
// material configuration. Is there a suitable scaling function?
//
- // The code below is rather messy, and it could easily get worse later,
- // if we decide to add more special cases. We face problems when there
- // are several conflicting applicable scaling functions and we need to
- // decide which one to use.
+ // We face problems when there are several conflicting applicable
+ // scaling functions and we need to decide which one to use.
SF* sf;
if ((sf = funcs->get<SF>(key)) != NULL)
if (keyCode[i] == 'K')
upcase = !upcase;
- s << char(upcase? toupper(keyCode[i]) : tolower(keyCode[i]));
+ s << char(upcase ? toupper(keyCode[i]) : tolower(keyCode[i]));
}
s << 8 - keyCode.length() << "/8/8/8/8/8/8/8 w -";
- return Position(s.str()).get_material_key();
+ return Position(s.str(), 0).get_material_key();
}
const string EndgameFunctions::swapColors(const string& keyCode) {