X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=21aa4f92069dbcbbf7997b73364b641444fc9ed2;hp=d769619d0f2abba82d5b25d113b52b2bd806ee42;hb=e30720b0bf10a91c04fcd5d881a728a3d97e850f;hpb=7af1b40b4e560da33a35825d61eedf1775cc7110 diff --git a/src/search.cpp b/src/search.cpp index d769619d..21aa4f92 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -60,11 +60,10 @@ namespace { struct IterationInfoType { - IterationInfoType(Value v = Value(0), Value sv = Value(0), bool fh = false, bool fl = false) - : value(v), speculatedValue(sv), failHigh(fh), failLow(fl) {} + IterationInfoType(Value v = Value(0), Value sv = Value(0)) + : value(v), speculatedValue(sv) {} Value value, speculatedValue; - bool failHigh, failLow; }; @@ -736,6 +735,7 @@ namespace { } else if (value <= alpha) { + assert(value == alpha); assert(delta < 0); fLow = true; @@ -745,7 +745,7 @@ namespace { speculatedValue = value; speculatedValue = Min(Max(speculatedValue, -VALUE_INFINITE), VALUE_INFINITE); - IterationInfo[Iteration] = IterationInfoType(value, speculatedValue, fHigh, fLow); + IterationInfo[Iteration] = IterationInfoType(value, speculatedValue); // Erase the easy move if it differs from the new best move if (ss[0].pv[0] != EasyMove) @@ -867,8 +867,11 @@ namespace { { if (alpha >= beta) { + // We failed high, invalidate and skip next moves, leave node-counters + // and beta-counters as they are and quickly return, we will try to do + // a research at the next iteration with a bigger aspiration window. rml.set_move_score(i, -VALUE_INFINITE); - continue; // Leave node-counters and beta-counters as they are + continue; } int64_t nodes; Move move; @@ -951,7 +954,7 @@ namespace { rml.set_move_score(i, -VALUE_INFINITE); else { - // New best move! + // PV move or new best move! // Update PV rml.set_move_score(i, value);