1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 00:33:09 +00:00

Remove temporary shelter array

Remove temporary array of shelters and avoid iterating over it each time to find
if the shelter values after castling are better than the current value.
Work done on top of https://github.com/official-stockfish/Stockfish/pull/2277

Speed benchmark did not measure any difference.

No functional change
This commit is contained in:
mstembera 2019-08-24 15:04:41 -07:00 committed by Stéphane Nicolet
parent e6f4b5f463
commit 5d1568632c

View file

@ -231,21 +231,17 @@ Score Entry::do_king_safety(const Position& pos) {
Square ksq = pos.square<KING>(Us);
kingSquares[Us] = ksq;
castlingRights[Us] = pos.castling_rights(Us);
auto compare = [](Score a, Score b) { return mg_value(a) <= mg_value(b); };
Score shelters[3] = { evaluate_shelter<Us>(pos, ksq),
make_score(-VALUE_INFINITE, 0),
make_score(-VALUE_INFINITE, 0) };
Score shelter = evaluate_shelter<Us>(pos, ksq);
// If we can castle use the bonus after castling if it is bigger
if (pos.can_castle(Us & KING_SIDE))
shelters[1] = evaluate_shelter<Us>(pos, relative_square(Us, SQ_G1));
shelter = std::max(shelter, evaluate_shelter<Us>(pos, relative_square(Us, SQ_G1)), compare);
if (pos.can_castle(Us & QUEEN_SIDE))
shelters[2] = evaluate_shelter<Us>(pos, relative_square(Us, SQ_C1));
for (int i : {1, 2})
if (mg_value(shelters[i]) > mg_value(shelters[0]))
shelters[0] = shelters[i];
shelter = std::max(shelter, evaluate_shelter<Us>(pos, relative_square(Us, SQ_C1)), compare);
// In endgame we like to bring our king near our closest pawn
Bitboard pawns = pos.pieces(Us, PAWN);
@ -256,7 +252,7 @@ Score Entry::do_king_safety(const Position& pos) {
else while (pawns)
minPawnDist = std::min(minPawnDist, distance(ksq, pop_lsb(&pawns)));
return shelters[0] - make_score(0, 16 * minPawnDist);
return shelter - make_score(0, 16 * minPawnDist);
}
// Explicit template instantiation