X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=e7e33edef8f7acd4b1b41e9861e7a78e36158c03;hp=9f005587aa4c5845a0a1fcf0b9031be23f59bbc2;hb=b37054c310876850f6ff65b19f6cdb5f941c57dc;hpb=4231d99ab408674115623f42f7ff89f3f189ca23 diff --git a/src/search.cpp b/src/search.cpp index 9f005587..e7e33ede 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -588,7 +588,7 @@ namespace { Value bestValue, value, ttValue, eval, maxValue, probCutBeta; bool givesCheck, improving, didLMR, priorCapture; bool captureOrPromotion, doFullDepthSearch, moveCountPruning, - ttCapture, singularQuietLMR, noLMRExtension; + ttCapture, singularQuietLMR; Piece movedPiece; int moveCount, captureCount, quietCount, bestMoveCount, improvement; @@ -787,11 +787,7 @@ namespace { } else { - // In case of null move search use previous static eval with a different sign - if ((ss-1)->currentMove != MOVE_NULL) - ss->staticEval = eval = evaluate(pos); - else - ss->staticEval = eval = -(ss-1)->staticEval; + ss->staticEval = eval = evaluate(pos); // Save static evaluation into transposition table if(!excludedMove) @@ -893,19 +889,16 @@ namespace { assert(probCutBeta < VALUE_INFINITE); MovePicker mp(pos, ttMove, probCutBeta - ss->staticEval, &captureHistory); - int probCutCount = 0; bool ttPv = ss->ttPv; ss->ttPv = false; - while ( (move = mp.next_move()) != MOVE_NONE - && probCutCount < 2 + 2 * cutNode) + while ((move = mp.next_move()) != MOVE_NONE) if (move != excludedMove && pos.legal(move)) { assert(pos.capture_or_promotion(move)); assert(depth >= 5); captureOrPromotion = true; - probCutCount++; ss->currentMove = move; ss->continuationHistory = &thisThread->continuationHistory[ss->inCheck] @@ -984,7 +977,7 @@ moves_loop: // When in check, search starts here ss->ply); value = bestValue; - singularQuietLMR = moveCountPruning = noLMRExtension = false; + singularQuietLMR = moveCountPruning = false; // Indicate PvNodes that will probably fail low if the node was searched // at a depth equal or greater than the current depth, and the result of this search was a fail low. @@ -1108,10 +1101,7 @@ moves_loop: // When in check, search starts here if ( !PvNode && value < singularBeta - 75 && ss->doubleExtensions <= 6) - { extension = 2; - noLMRExtension = true; - } } // Multi-cut pruning @@ -1219,13 +1209,12 @@ moves_loop: // When in check, search starts here // In general we want to cap the LMR depth search at newDepth. But if reductions // are really negative and movecount is low, we allow this move to be searched - // deeper than the first move (this may lead to hidden double extensions if - // newDepth got its own extension before). - int deeper = r >= -1 ? 0 - : noLMRExtension ? 0 - : moveCount <= 5 ? 1 - : (depth > 6 && PvNode) ? 1 - : 0; + // deeper than the first move (this may lead to hidden double extensions). + int deeper = r >= -1 ? 0 + : moveCount <= 3 && r <= -3 ? 2 + : moveCount <= 5 ? 1 + : PvNode && depth > 6 ? 1 + : 0; Depth d = std::clamp(newDepth - r, 1, newDepth + deeper);