X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=2fdd2840ea2b38915c453baf46783cc097909b35;hb=3ef4fdeaa01f4d41fc723d54c0a17cea712cf035;hp=dcfb7d46aff3177d95fba2c1cfdc7e13f6ea922e;hpb=a2e924039bb96c0b923512dbb6903de9bb6bbd21;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index dcfb7d46..2fdd2840 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -681,7 +681,7 @@ namespace { ValueType vt; Value bestValue, value, oldAlpha; Value refinedValue, nullValue, futilityBase, futilityValueScaled; // Non-PV specific - bool isPvMove, inCheck, singularExtensionNode, givesCheck, captureOrPromotion, dangerous, isBadCap; + bool isPvMove, inCheck, singularExtensionNode, givesCheck, captureOrPromotion, dangerous; int moveCount = 0, playedMoveCount = 0; int threadID = pos.thread(); SplitPoint* sp = NULL; @@ -1023,16 +1023,6 @@ split_point_start: // At split points actual search starts from here } } - // Bad capture detection. Will be used by prob-cut search - isBadCap = depth >= 3 * ONE_PLY - && depth < 8 * ONE_PLY - && captureOrPromotion - && move != ttMove - && !dangerous - && !move_is_promotion(move) - && abs(alpha) < VALUE_MATE_IN_PLY_MAX - && pos.see_sign(move) < 0; - // Step 13. Make the move pos.do_move(move, st, ci, givesCheck); @@ -1076,7 +1066,13 @@ split_point_start: // At split points actual search starts from here // Probcut search for bad captures. If a reduced search returns a value // very below beta then we can (almost) safely prune the bad capture. - if (isBadCap) + if ( depth >= 3 * ONE_PLY + && depth < 8 * ONE_PLY + && mp.isBadCapture() + && move != ttMove + && !dangerous + && !move_is_promotion(move) + && abs(alpha) < VALUE_MATE_IN_PLY_MAX) { ss->reduction = 3 * ONE_PLY; Value rAlpha = alpha - 300;