X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=eb2e358a07d307e4386fe9db5f4d01725d0e7550;hp=37c3bd71bb40e2aab91f4e45751684b0e86d7ebb;hb=b763b40101a819e66789aad88da97e1c51054a19;hpb=b4870595a5652f7a5ecf577e33d0302b725b7f51 diff --git a/src/search.cpp b/src/search.cpp index 37c3bd71..eb2e358a 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -179,8 +179,7 @@ namespace { // Step 9. Internal iterative deepening // Minimum depth for use of internal iterative deepening - const Depth IIDDepthAtPVNodes = 5 * OnePly; - const Depth IIDDepthAtNonPVNodes = 8 * OnePly; + const Depth IIDDepth[2] = { 8 * OnePly /* non-PV */, 5 * OnePly /* PV */}; // At Non-PV nodes we do an internal iterative deepening search // when the static evaluation is at most IIDMargin below beta. @@ -1197,23 +1196,12 @@ namespace { } // Step 9. Internal iterative deepening - // We have different rules for PV nodes and non-pv nodes - if ( PvNode - && depth >= IIDDepthAtPVNodes - && ttMove == MOVE_NONE) - { - search(pos, ss, alpha, beta, depth-2*OnePly, ply, false, threadID); - ttMove = ss[ply].pv[ply]; - tte = TT.retrieve(posKey); - } - - if ( !PvNode - && depth >= IIDDepthAtNonPVNodes + if ( depth >= IIDDepth[PvNode] && ttMove == MOVE_NONE - && !isCheck - && ss[ply].eval >= beta - IIDMargin) + && (PvNode || (!isCheck && ss[ply].eval >= beta - IIDMargin))) { - search(pos, ss, alpha, beta, depth/2, ply, false, threadID); + Depth d = (PvNode ? depth - 2 * OnePly : depth / 2); + search(pos, ss, alpha, beta, d, ply, false, threadID); ttMove = ss[ply].pv[ply]; tte = TT.retrieve(posKey); }