X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=ca5a107ea2853df9b3648eeb3f4e56bb23c039b6;hp=23608f7a379570ff72d27a42816ead695e82e7f5;hb=71cc01c2ef45bab91bdcd72c699f66e19dd518b3;hpb=5d57bb467a4d703f480c87f58687705e2f56e338 diff --git a/src/search.cpp b/src/search.cpp index 23608f7a..ca5a107e 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -742,7 +742,18 @@ namespace { assert(depth >= 5 * ONE_PLY); pos.do_move(move, st); - value = -search(pos, ss+1, -rbeta, -rbeta+1, depth - 4 * ONE_PLY, !cutNode, false); + + // Perform a preliminary search at depth 1 to verify that the move holds. + // We will only do this search if the depth is not 5, thus avoiding two + // searches at depth 1 in a row. + if (depth != 5 * ONE_PLY) + value = -search(pos, ss+1, -rbeta, -rbeta+1, ONE_PLY, !cutNode, true); + + // If the first search was skipped or was performed and held, perform + // the regular search. + if (depth == 5 * ONE_PLY || value >= rbeta) + value = -search(pos, ss+1, -rbeta, -rbeta+1, depth - 4 * ONE_PLY, !cutNode, false); + pos.undo_move(move); if (value >= rbeta) return value; @@ -758,6 +769,7 @@ namespace { search(pos, ss, alpha, beta, d, cutNode, true); tte = TT.probe(posKey, ttHit); + ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE; ttMove = ttHit ? tte->move() : MOVE_NONE; } @@ -1164,8 +1176,8 @@ moves_loop: // When in check, search starts from here // Transposition table lookup posKey = pos.key(); tte = TT.probe(posKey, ttHit); - ttMove = ttHit ? tte->move() : MOVE_NONE; ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE; + ttMove = ttHit ? tte->move() : MOVE_NONE; if ( !PvNode && ttHit