X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=017f65be3984d30c312679164d47431d4fc441a1;hp=cbb6ea0980a6f6c005c31ee62d45ef862dcb271f;hb=ecc19381b4af1938d6e07ef44462110e02c02953;hpb=dae2f600d69bd957e3626eb86109f46a88b0c9aa diff --git a/src/search.cpp b/src/search.cpp index cbb6ea09..017f65be 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1195,6 +1195,7 @@ namespace { if ( UseNullDrivenIID && nullValue < beta && depth > 6 * OnePly + &&!value_is_mate(nullValue) && ttMove == MOVE_NONE && ss[ply + 1].currentMove != MOVE_NONE && pos.move_is_capture(ss[ply + 1].currentMove) @@ -1236,8 +1237,10 @@ namespace { } } // Null move search not allowed, try razoring - else if ( (approximateEval < beta - RazorMargin && depth < RazorDepth) - ||(approximateEval < beta - PawnValueMidgame && depth <= OnePly)) + else if ( !isCheck + && !value_is_mate(beta) + && ( (approximateEval < beta - RazorMargin && depth < RazorDepth) + ||(approximateEval < beta - PawnValueMidgame && depth <= OnePly))) { Value v = qsearch(pos, ss, beta-1, beta, Depth(0), ply, threadID); if (v < beta) @@ -1454,12 +1457,12 @@ namespace { // Initialize a MovePicker object for the current position, and prepare // to search the moves. Because the depth is <= 0 here, only captures, // queen promotions and checks (only if depth == 0) will be generated. - MovePicker mp = MovePicker(pos, false, MOVE_NONE, EmptySearchStack, depth, &ei); + bool pvNode = (beta - alpha != 1); + MovePicker mp = MovePicker(pos, pvNode, MOVE_NONE, EmptySearchStack, depth, &ei); Move move; int moveCount = 0; Bitboard dcCandidates = mp.discovered_check_candidates(); bool isCheck = pos.is_check(); - bool pvNode = (beta - alpha != 1); bool enoughMaterial = pos.non_pawn_material(pos.side_to_move()) > RookValueMidgame; // Loop through the moves until no moves remain or a beta cutoff