From a858b5a84e8702390adee4388034c57570e65fee Mon Sep 17 00:00:00 2001 From: protonspring Date: Wed, 17 Apr 2019 12:38:38 -0600 Subject: [PATCH] Remove DistanceRing #2107 Remove the DistanceRing array. This reduces the memory footprint by about 4kb. http://tests.stockfishchess.org/tests/view/5cba35350ebc5925cf020d7f LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 101421 W: 22491 L: 22528 D: 56402 No functional change. --- src/bitboard.cpp | 4 ---- src/bitboard.h | 1 - src/pawns.cpp | 12 ++++++++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/bitboard.cpp b/src/bitboard.cpp index 94dfa70f..0ab244c7 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -28,7 +28,6 @@ uint8_t PopCnt16[1 << 16]; uint8_t SquareDistance[SQUARE_NB][SQUARE_NB]; Bitboard LineBB[SQUARE_NB][SQUARE_NB]; -Bitboard DistanceRingBB[SQUARE_NB][8]; Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB]; Bitboard PawnAttacks[COLOR_NB][SQUARE_NB]; Bitboard SquareBB[SQUARE_NB]; @@ -83,10 +82,7 @@ void Bitboards::init() { for (Square s1 = SQ_A1; s1 <= SQ_H8; ++s1) for (Square s2 = SQ_A1; s2 <= SQ_H8; ++s2) - { SquareDistance[s1][s2] = std::max(distance(s1, s2), distance(s1, s2)); - DistanceRingBB[s1][SquareDistance[s1][s2]] |= s2; - } int steps[][5] = { {}, { 7, 9 }, { 6, 10, 15, 17 }, {}, {}, {}, { 1, 7, 8, 9 } }; diff --git a/src/bitboard.h b/src/bitboard.h index 6f99ef19..53e96f44 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -69,7 +69,6 @@ extern uint8_t PopCnt16[1 << 16]; extern uint8_t SquareDistance[SQUARE_NB][SQUARE_NB]; extern Bitboard LineBB[SQUARE_NB][SQUARE_NB]; -extern Bitboard DistanceRingBB[SQUARE_NB][8]; extern Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB]; extern Bitboard PawnAttacks[COLOR_NB][SQUARE_NB]; extern Bitboard KingFlank[FILE_NB]; diff --git a/src/pawns.cpp b/src/pawns.cpp index e2b26344..095126d4 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -212,11 +212,15 @@ Score Entry::do_king_safety(const Position& pos) { Square ksq = pos.square(Us); kingSquares[Us] = ksq; castlingRights[Us] = pos.castling_rights(Us); - int minKingPawnDistance = 0; Bitboard pawns = pos.pieces(Us, PAWN); - if (pawns) - while (!(DistanceRingBB[ksq][++minKingPawnDistance] & pawns)) {} + int minPawnDist = pawns ? 8 : 0; + + if (pawns & PseudoAttacks[KING][ksq]) + minPawnDist = 1; + + else while (pawns) + minPawnDist = std::min(minPawnDist, distance(ksq, pop_lsb(&pawns))); Value bonus = evaluate_shelter(pos, ksq); @@ -227,7 +231,7 @@ Score Entry::do_king_safety(const Position& pos) { if (pos.can_castle(Us | QUEEN_SIDE)) bonus = std::max(bonus, evaluate_shelter(pos, relative_square(Us, SQ_C1))); - return make_score(bonus, -16 * minKingPawnDistance); + return make_score(bonus, -16 * minPawnDist); } // Explicit template instantiation -- 2.39.2