diff --git a/src/search.cpp b/src/search.cpp index 4fca84f95..857a8d47e 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -825,19 +825,17 @@ Value Search::Worker::search( // The depth condition is important for mate finding. { auto futility_margin = [&](Depth d) { - Value futilityMult = 105 - 23 * (cutNode && !ss->ttHit); - Value improvingDeduction = improving * futilityMult * 2; - Value worseningDeduction = opponentWorsening * futilityMult / 3; + Value futilityMult = 93 - 20 * (cutNode && !ss->ttHit); - return futilityMult * d // - - improvingDeduction // - - worseningDeduction // - + (ss - 1)->statScore / 335 // - + std::abs(correctionValue) / 149902; + return futilityMult * d // + - improving * futilityMult * 2 // + - opponentWorsening * futilityMult / 3 // + + (ss - 1)->statScore / 376 // + + std::abs(correctionValue) / 168639; }; - if (!ss->ttPv && depth < 14 && eval + (eval - beta) / 8 - futility_margin(depth) >= beta - && eval >= beta && (!ttData.move || ttCapture) && !is_loss(beta) && !is_win(eval)) + if (!ss->ttPv && depth < 14 && eval - futility_margin(depth) >= beta && eval >= beta + && (!ttData.move || ttCapture) && !is_loss(beta) && !is_win(eval)) return beta + (eval - beta) / 3; }