// If the bestMove is stable over several iterations, reduce time accordingly
timeReduction = lastBestMoveDepth + 10 < completedDepth ? 1.63 : 0.73;
double reduction = (1.56 + mainThread->previousTimeReduction) / (2.20 * timeReduction);
- double bestMoveInstability = 1.073 + std::max(1.0, 2.25 - 9.9 / rootDepth)
- * totBestMoveChanges / Threads.size();
+ double bestMoveInstability = 1 + 1.7 * totBestMoveChanges / Threads.size();
int complexity = mainThread->complexityAverage.value();
double complexPosition = std::clamp(1.0 + (complexity - 326) / 1618.1, 0.5, 1.5);
// If the eval of ttMove is greater than beta, we reduce it (negative extension)
else if (ttValue >= beta)
extension = -2;
+
+ // If the eval of ttMove is less than alpha and value, we reduce it (negative extension)
+ else if (ttValue <= alpha && ttValue <= value)
+ extension = -1;
}
// Check extensions (~1 Elo)