X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=93867f0f0b20859f97598d094a54dedbb0d5f171;hp=d59fc521eedcba2815ae3cdeaf92f4bdb6e80730;hb=074c7a3c30dce46b65bc7deb15619a6a33ecf4a8;hpb=cf95a55d763b0746b455b6ba659720aa1dd64028 diff --git a/src/search.cpp b/src/search.cpp index d59fc521..93867f0f 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 / (2 * ONE_PLY) + + 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)