1
0
Fork 0

make DistanceRing more consistent

This is a non-functional change. By pre-incrementing minKingPawnDistance
instead of post-incrementing, we can remove this -1.

This also makes DistanceRing more consistent with the rest of stockfish
since it now holds an actual "distance" instead of a less natural distance-1.

In current master, PseudoAttacks[KING][ksq] == DistanceRingBB[ksq][0]
With this patch, it will be PseudoAttacks[KING][ksq] == DistanceRingBB[ksq][1]
ie squares at distance 1 from the king. This is more natural use of distance.

The current array size DistanceRingBB[SQUARE_NB][8] is still OK with the new
definition, because maximum distance between two squares on a chess board is
seven (for example Kh1 and a8).

No functional change.
pull/1741/merge
protonspring 2018-08-20 10:29:46 -06:00 committed by Stéphane Nicolet
parent 6307fd08e6
commit 8a4821923a
2 changed files with 2 additions and 2 deletions

View File

@ -116,7 +116,7 @@ void Bitboards::init() {
if (s1 != s2)
{
SquareDistance[s1][s2] = std::max(distance<File>(s1, s2), distance<Rank>(s1, s2));
DistanceRingBB[s1][SquareDistance[s1][s2] - 1] |= s2;
DistanceRingBB[s1][SquareDistance[s1][s2]] |= s2;
}
int steps[][5] = { {}, { 7, 9 }, { 6, 10, 15, 17 }, {}, {}, {}, { 1, 7, 8, 9 } };

View File

@ -245,7 +245,7 @@ Score Entry::do_king_safety(const Position& pos, Square ksq) {
Bitboard pawns = pos.pieces(Us, PAWN);
if (pawns)
while (!(DistanceRingBB[ksq][minKingPawnDistance++] & pawns)) {}
while (!(DistanceRingBB[ksq][++minKingPawnDistance] & pawns)) {}
Value bonus = evaluate_shelter<Us>(pos, ksq);