From: protonspring Date: Tue, 5 Mar 2019 19:48:29 +0000 (-0700) Subject: Remove FutilityMoveCounts array. (#2024) X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=1aab5b4b055dffae5e2a2cf9958d3d0d79f66cb4 Remove FutilityMoveCounts array. (#2024) This is a functional simplification that removes the FutilityMoveCounts array with a simple equation using only ints. LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 14175 W: 3123 L: 2987 D: 8065 LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 9900 W: 1735 L: 1597 D: 6568 Bench: 3380343 --- diff --git a/src/search.cpp b/src/search.cpp index 39875cb4..31ae5377 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -71,8 +71,7 @@ namespace { return Value((175 - 50 * improving) * d / ONE_PLY); } - // Futility and reductions lookup tables, initialized at startup - int FutilityMoveCounts[2][16]; // [improving][depth] + // Reductions lookup table, initialized at startup int Reductions[64]; // [depth or moveNumber] template Depth reduction(bool i, Depth d, int mn) { @@ -80,6 +79,10 @@ namespace { return ((r + 512) / 1024 + (!i && r > 1024) - PvNode) * ONE_PLY; } + constexpr int futility_move_count(bool improving, int depth) { + return (5 + depth * depth) * (1 + improving) / 2; + } + // History and stats update bonus, based on depth int stat_bonus(Depth depth) { int d = depth / ONE_PLY; @@ -159,12 +162,6 @@ void Search::init() { for (int i = 1; i < 64; ++i) Reductions[i] = int(1024 * std::log(i) / std::sqrt(1.95)); - - for (int d = 0; d < 16; ++d) - { - FutilityMoveCounts[0][d] = int(2.4 + 0.74 * pow(d, 1.78)); - FutilityMoveCounts[1][d] = int(5.0 + 1.00 * pow(d, 2.00)); - } } @@ -957,8 +954,7 @@ moves_loop: // When in check, search starts from here && bestValue > VALUE_MATED_IN_MAX_PLY) { // Skip quiet moves if movecount exceeds our FutilityMoveCount threshold - moveCountPruning = depth < 16 * ONE_PLY - && moveCount >= FutilityMoveCounts[improving][depth / ONE_PLY]; + moveCountPruning = moveCount >= futility_move_count(improving,depth / ONE_PLY); if ( !captureOrPromotion && !givesCheck