// Avoid search explosion by limiting the number of double extensions
if ( !PvNode
&& value < singularBeta - 25
- && ss->doubleExtensions <= 9)
+ && ss->doubleExtensions <= 10)
{
extension = 2;
depth += depth < 12;
// Adjust full depth search based on LMR results - if result
// was good enough search deeper, if it was bad enough search shallower
const bool doDeeperSearch = value > (alpha + 64 + 11 * (newDepth - d));
- const bool doEvenDeeperSearch = value > alpha + 582;
+ const bool doEvenDeeperSearch = value > alpha + 582 && ss->doubleExtensions <= 5;
const bool doShallowerSearch = value < bestValue + newDepth;
+ ss->doubleExtensions = ss->doubleExtensions + doEvenDeeperSearch;
+
newDepth += doDeeperSearch - doShallowerSearch + doEvenDeeperSearch;
if (newDepth > d)