mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 11:39:15 +00:00
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.
This commit is contained in:
parent
bdeb01dec0
commit
a858b5a84e
3 changed files with 8 additions and 9 deletions
|
@ -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<File>(s1, s2), distance<Rank>(s1, s2));
|
||||
DistanceRingBB[s1][SquareDistance[s1][s2]] |= s2;
|
||||
}
|
||||
|
||||
int steps[][5] = { {}, { 7, 9 }, { 6, 10, 15, 17 }, {}, {}, {}, { 1, 7, 8, 9 } };
|
||||
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -212,11 +212,15 @@ Score Entry::do_king_safety(const Position& pos) {
|
|||
Square ksq = pos.square<KING>(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<Us>(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<Us>(pos, relative_square(Us, SQ_C1)));
|
||||
|
||||
return make_score(bonus, -16 * minKingPawnDistance);
|
||||
return make_score(bonus, -16 * minPawnDist);
|
||||
}
|
||||
|
||||
// Explicit template instantiation
|
||||
|
|
Loading…
Add table
Reference in a new issue