X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=0ee25bca1b421a159e60071e2d0d482fb3903b91;hb=77341f67f30456dc456177062309ad5e73e2e1a4;hp=d59fc521eedcba2815ae3cdeaf92f4bdb6e80730;hpb=53ab32ef0b6e47d8d962f8c1fccd32d3c22f138c;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index d59fc521..0ee25bca 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -628,12 +628,12 @@ namespace { { ss->currentMove = MOVE_NULL; - // Null move dynamic reduction based on depth - Depth R = 3 * ONE_PLY + depth / 4; + assert(eval - beta >= 0); - // Null move dynamic reduction based on value - if (eval - PawnValueMg > beta) - R += ONE_PLY; + // Null move dynamic reduction based on depth and value + Depth R = 3 * ONE_PLY + + depth / 4 + + int(eval - beta) / PawnValueMg * ONE_PLY; pos.do_null_move(st); (ss+1)->skipNullMove = true; @@ -653,7 +653,8 @@ namespace { // Do verification search at high depths ss->skipNullMove = true; - Value v = search(pos, ss, alpha, beta, depth-R, false); + Value v = depth-R < ONE_PLY ? qsearch(pos, ss, alpha, beta, DEPTH_ZERO) + : search(pos, ss, alpha, beta, depth-R, false); ss->skipNullMove = false; if (v >= beta)